Thin WAR

Bei Thin WARs handelt es sich um Web Archive Files (WAR-Files), die keine Dependencies enthalten. Statt dessen ist eine von Maven bekannte pom.xml enthalten, welche die Abhängigkeiten spezifiziert. Diese können zum Beispiel auf Tomcat deployed werden, wenn die Erweiterung Maven Loader installiert ist.

Maven Plugin#

Ein Thin WAR kann entweder mit der Hand oder mit einem Maven Plugin erzeugt werden. Thin WARs werden von unterschiedlichen Tomcat Versionen unterstützt:

Tomcat VersionThin WAR Plugin VersionMaven Loader
Tomcat 6Thin WAR Plugin 1.2Maven Loader 1.1
Tomcat 7Thin WAR Plugin 1.2Maven Loader 1.1
Tomcat 8Thin WAR Plugin 1.4Maven Loader 1.2

Thin WAR Goal#

Für ein WAR-Projekt kann ein Thin WAR erzeugt werden, indem folgendes Maven Command ausgeführt wird:
mvn com.intersult:thin-war-maven-plugin:war

Hinweis: Durch das Goal kann das Thin WAR für den Einzelfall schnell im target erstellt werden. Für Install und Deploy ist die Integration in den Lifecycle erforderlich.

Thin WAR Lifecycle#

Bequemer geht es durch Integration in den Lifecycle von dem Maven Project. Dazu wird eine Build Extension in die pom.xml eingetragen:
<project>
	<build>
                ...
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>com.intersult</groupId>
					<artifactId>thin-war-maven-plugin</artifactId>
					<version>1.2</version>
				</plugin>
			</plugins>
		</pluginManagement>
		<extensions>
			<extension>
				<groupId>com.intersult</groupId>
				<artifactId>thin-war-maven-plugin</artifactId>
			</extension>
		</extensions>
	</build>
	...
</project>

Erklärung: Für das Erstellen des WAR-Files wird das thin-war-maven-plugin verwendet. Es wird also automatisch ein Thin WAR erzeugt.

Hinweis: Mit Maven Profiles kann man unterschiedliche Build-Lifecycles durchlaufen lassen. Lesen Sie dafür bitte die Anleitung über Maven Profiles.

Achtung: Aufgrund eines "Features" in Maven, kann die Version des Plugins nur über das Plugin-Management angegeben werden, wie im obigen Beispiel zu sehen ist. Eine direkte Angabe der Version in der Extension wird von Maven ignoriert.