Zum Hauptinhalt springen

Maven

Apache Maven (kurz Maven) ist ein sogenanntes Build-Automatisierungstool, welches hauptsächlich für Java-Projekte verwendet wird. Es hilft Entwicklern, den Build-Prozess eines Programmes zu vereinfachen und zu standardisieren. Maven verwendet hierzu eine Konfigurationsdatei namens pom.xml (Project Object Model).

Merkmale

  • Automatisierung des Build-Prozesses: Maven automatisiert den Build-Prozess (Kompilieren, Testen, Verpacken und Bereitstellen)
  • Abhängigkeitsmanagement: Maven verwaltet Projekt-Abhängigkeiten wie externe Bibliotheken und Frameworks automatisch
  • Standardisierte Projektstruktur: Maven fördert eine standardisierte Projektstruktur, die es einfacher macht, Projekte zu verstehen und zu navigieren
  • Plugins: Maven unterstützt eine Vielzahl von Plugins, die zusätzliche Funktionalitäten bieten (z.B. Code-Analyse, Berichterstellung und Dokumentation)
  • Lebenszyklus-Management: Maven definiert einen standardisierten Lebenszyklus für den Build-Prozess

Lebenszyklus-Phasen

Maven kennt die drei Lebenszyklen clean zum Löschen aller Artefakte vergangener Builds, default zum Erstellen des Projekts sowie site zum Erstellen einer Dokumentationsseite. Jeder Lebenszyklus durchläuft hierbei verschiedene Phasen. Durch Plugins können diese um zusätzliche Verarbeitungsschritte erweitert werden. Nachfolgend dargestellt sind 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 Projektmodel umfasst neben allgemeinen Projekt-Angaben wie der groupId, der artifactId sowie der version auch sämtliche Abhängigkeiten zu externen Bibliotheken, die dadurch automatisch von Maven verwaltet werden. Zudem kann hier unter anderem der Build-Prozess konfiguriert und durch Plugins erweitert werden.

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

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

Lombok ist eine beliebte Bibliothek zur Generierung von repetitiven Methoden (siehe auch Lombok).

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

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