Zum Hauptinhalt springen

Maven

Apache Maven (kurz Maven) ist ein Build-Automatisierungstool für Java-Projekte. Es vereinfacht und standardisiert den Build-Prozess über eine zentrale Konfigurationsdatei namens pom.xml (Project Object Model).

Merkmale

Maven zeichnet sich durch folgende Eigenschaften aus:

  • Automatisierung des Build-Prozesses: Kompilieren, Testen, Verpacken und Bereitstellen
  • Abhängigkeitsmanagement: externe Bibliotheken und Frameworks werden automatisch verwaltet
  • Standardisierte Projektstruktur: erleichtert das Verstehen und Navigieren in Projekten
  • Plugins: erweitern Maven um zusätzliche Funktionen wie Code-Analyse, Berichterstellung und Dokumentation
  • Lebenszyklus-Management: definierter, standardisierter Ablauf des Build-Prozesses

Lebenszyklus-Phasen

Maven kennt drei Lebenszyklen: clean löscht alle Artefakte vergangener Builds, default erstellt das Projekt, und site generiert eine Dokumentationsseite. Jeder Lebenszyklus durchläuft dabei mehrere Phasen, die sich durch Plugins um zusätzliche Schritte erweitern lassen. Die folgende Tabelle zeigt die wesentlichen Phasen des Default-Lebenszyklus.

PhaseBeschreibung
validatePrüfen, ob die POM sowie die Projektstruktur vollständig, fehlerfrei und gültig sind
compileKompilieren des Quellcodes
testAusführen der Komponententests
packageVerpacken des Projekts in z.B. ein Java Archiv (JAR)
verifyAusführen von bereitgestellten Integrationstests
installKopieren des Archivs ins lokale Maven-Repository
deployKopieren des Archivs in ein remote Maven-Repository

Das Projektmodell

Das Projektmodell enthält neben allgemeinen Projekt-Angaben wie groupId, artifactId und version auch alle Abhängigkeiten zu externen Bibliotheken. Zusätzlich lässt sich hier der Build-Prozess konfigurieren und durch Plugins erweitern.

pom.xml
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>edu.jappuccini</groupId>
<artifactId>demos</artifactId>
<version>1.0.0</version>

<properties>
<!-- Java-Version -->
<maven.compiler.release>[Version]</maven.compiler.release>
<!-- Codierung -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

</project>

Hilfreiche Plugins

Maven-Plugins erweitern den Build-Prozess um zusätzliche Funktionen. Die folgenden Plugins sind für Java-Projekte besonders nützlich.

JavaDoc nutzt das integrierte JavaDoc Tool zur Generierung einer JavaDoc. Durch die Einbindung des Goals javadoc in die Lebenszyklus-Phase package wird sichergestellt, dass die JavaDoc bei jedem Verpacken erstellt wird.

pom.xml (Auszug)
...
<build>
<plugins>
<!-- JavaDoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>[Version]</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>javadoc</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...

Hilfreiche Bibliotheken und Frameworks

Die folgende Auswahl an Bibliotheken und Frameworks wird häufig in Java-Projekten eingesetzt und lässt sich einfach als Maven-Abhängigkeit einbinden.

Lombok ist eine beliebte Bibliothek zur automatischen Generierung von Boilerplate-Code wie Getter, Setter und Konstruktoren (siehe auch Lombok).

pom.xml (Auszug)
...
<dependencies>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>[Version]</version>
</dependency>
</dependencies>
...
info

Verfügbare Versionen können dem Maven Central Repository entnommen werden.