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>