16 Maven Packaging Types

Maven bietet verschiedene Packaging Types an, die bestimmen, wie ein Projekt archiviert und bereitgestellt wird. Jeder Packaging Type ist für bestimmte Szenarien ausgelegt.

16.1 JAR (Java Archive)

Dateiendung: .jar
Verwendung: Zur Bereitstellung von Java-Klassenbibliotheken oder eigenständigen Java-Anwendungen. Enthält kompilierte Klassen, Ressourcen und optional ein Manifest.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-library</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
</project>

16.2 WAR (Web Application Archive)

Dateiendung: .war
Verwendung: Für Webanwendungen, die in einem Servlet Container (z.B. Tomcat) bereitgestellt werden. Enthält Klassen, JSPs, HTML, CSS, JavaScript und Konfigurationsdateien.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-webapp</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>
</project>

16.3 EAR (Enterprise Archive)

Dateiendung: .ear
Verwendung: Für Enterprise Java Anwendungen in Java EE Application Servern (z.B. WildFly). Kann JARs und WARs bündeln, um eine vollständige Unternehmensanwendung bereitzustellen.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-enterprise-app</artifactId>
    <version>1.0.0</version>
    <packaging>ear</packaging>
</project>

16.4 POM (Project Object Model)

Dateiendung: .pom
Verwendung: Wenn das Projekt selbst keine Artefakte erzeugt, sondern als Container für Module dient (z.B. Multi-Modul-Projekte).

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-parent-project</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>
</project>

16.5 Maven Plugin

Dateiendung: Keine spezifische Endung
Verwendung: Für Projekte, die ein Maven-Plugin bereitstellen. Ermöglicht die Erweiterung von Maven um zusätzliche Goals und Funktionen.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-maven-plugin</artifactId>
    <version>1.0.0</version>
    <packaging>maven-plugin</packaging>
</project>

16.6 EJB (Enterprise JavaBean)

Dateiendung: .jar
Verwendung: Für Projekte mit Enterprise JavaBeans, die in Java EE Application Servern laufen.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-ejb-module</artifactId>
    <version>1.0.0</version>
    <packaging>ejb</packaging>
</project>

16.7 RAR (Resource Adapter Archive)

Dateiendung: .rar
Verwendung: Für Resource Adapter in der Java EE Connector Architecture (JCA), um Enterprise Information Systems anzubinden.

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-resource-adapter</artifactId>
    <version>1.0.0</version>
    <packaging>rar</packaging>
</project>

16.8 Benutzerdefinierte Packaging Types

Neben den Standardtypen können auch eigene Packaging Types definiert werden, etwa für spezielle Archive. Hierfür sind zusätzliche Plugins nötig, um den Build-Prozess anzupassen.