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:
<?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>custom-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>

Embedded Tomcat#

Anbei dei Konfiguration, welche die benötigten Web-Root-Dateien in das WAR-Directory kopiert:
<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.