Wenn mit Maven gearbeitet wird, können Web-Apps in der Form eines WAR-Archivs sehr einfach gebaut und getestet werden. Zum Starten der Web-App kann das Tomcat 7 Plugin verwendet werden.

Web-Apps in Embedded Tomcat#

Web-Apps können einfach mit dem Tomcat 7 Plugin getestet werden:
	<plugin>
		<groupId>org.apache.tomcat.maven</groupId>
		<artifactId>tomcat7-maven-plugin</artifactId>
		<version>2.0-beta-1</version>
		<configuration>
			<warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>
		</configuration>
	</plugin>

Dynamisches Deployen der JSPs#

Werden JSPs oder anderne Ressoucen geändert, möchte man diese direkt ändern, ohne den kompletten Build-Zyklus laufen zu lassen. Mit dem M2E-Plugin für Eclipse, der den Build-Cycle direkt mit Maven verbindet, kann dies einfach erreicht werden:
	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-resources-plugin</artifactId>
		<version>2.5</version>
		<executions>
			<execution>
				<id>copy-jsp</id>
				<phase>compile</phase>
				<goals>
					<goal>copy-resources</goal>
				</goals>
				<configuration>
					<resources>
						<resource>
							<directory>src/main/webapp</directory>
							<includes>
								<include>**/*.jsp</include>
							</includes>
						</resource>
					</resources>
					<outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
				</configuration>
			</execution>
		</executions>
	</plugin>

Hot-Deploy von Klassen#

Soweit es die JVM unterstützt können auch Klassen Hot-Deployed werden. Dazu einfach das Ziel für die compilierten Klassen von Eclipse auf die fertige Web-App legen. Am einfachsten indem gleich das Output-Directory von Maven auf den entsprechenden Pfad gesetzt wird, den Eclipse bei der Projekt-Konfiguration dann gleich übernimmt:
	<build>
		<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
		...
	</build>