WAR Maven Plugin
This is version . It is not the current version, and thus it cannot be edited.
Back to current version   Restore this version

Das WAR Maven Plugin ist ein Maven Plugin, das mehr Freiheiten beim Erstellen von WAR-Files erlaubt. Hauptzweck ist das Verwenden von Embedded Tomcat beim Entwickeln von Projekten. Darüber hinaus ist das Plugin schneller, da es die abhängigen Artifacts nicht in ein temporäres WEB-INF/lib kopiert.

Konfiguration#

Das Einbinden erfolgt durch die pom.xml als Build-Extension:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<packaging>war<packaging>
        ...
	<build>
		<extensions>
			<extension>
				<groupId>com.intersult</groupId>
				<artifactId>war-maven-plugin</artifactId>
				<version>1.0-SNAPSHOT</version>
			</extension>
        	</extensions>
            ...
        </build>
	<pluginRepositories>
		<pluginRepository>
			<id>intersult-repo</id>
			<name>Intersult Repository</name>
			<url>http://repository.intersult.com/repository</url>
		</pluginRepository>
	</pluginRepositories>
</project>

Das Erzeugen des WAR-Verzeichnis kann man nun selbst gestalten. Anbei eine Standard-Konfiguration zum Compilieren der Java-Dateien und um die Web-Dateien in das WAR-Directory zu kopieren:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>2.5.1</version>
	<executions>
		<execution>
			<id>compile</id>
			<goals>
				<goal>compile</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<source>1.7</source>
		<target>1.7</target>
	</configuration>
</plugin>
<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>
						<filtering>true</filtering>
						<includes>
							<include>**/*.xml</include>
						</includes>
					</resource>
					<resource>
						<directory>src/main/webapp</directory>
						<excludes>
							<exclude>**/*.xml</exclude>
						</excludes>
					</resource>
				</resources>
				<outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
			</configuration>
		</execution>
	</executions>
</plugin>

Das Projekt kann dann mit "mvn compile" gebaut werden und mit "mvn package" bzw. "mvn install" wird das WAR-Archiv direkt im target gebaut.

Hinweis: Das Resource-Plugin ist so konfiguriert, dass es beim Einbinden in Eclipse über das Maven-Eclipse-Plugin (M2E) die Web-Resources einzeln ersetzt. Damit ist ein Hot-Deploy von XHTML-Dateien möglich.

Tomcat-Konfiguration#

Der Tomcat kann dann direkt darin gestartet werden, ohne dass die Dateien in WEB-INF/lib stören würden:
<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.0</version>
	<configuration>
		<warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory>
	</configuration>
</plugin>

Tomcat kann mit "mvn tomcat7:run" bzw. "mvnDebug tomcat7:run" direkt gestartet werden und mit dem Debugger verbunden. Das Ganze geht auch mit älteren Tomcat-Versionen, entsprechend ist dann tomcat6-maven-plugin zu verwenden.