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

Die Konfigurationsdatei pom.xml

Die Konfigurationsdatei pom.xml umfasst neben allen relevanten Projekt-Eigenschaften auch sämtliche Abhängigkeiten sowie Plugins, die dadurch automatisch von Maven verwaltet 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>demo</artifactId>
<version>1.0.0-SNAPSHOT</version>

<!-- Eigenschaften -->
<properties>
<!-- Java-Version -->
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<!-- Encoding -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<!-- Build Prozess -->
<build>
<!-- Plugins -->
<plugins>
<!-- Prettier -->
<plugin>
<groupId>com.hubspot.maven.plugins</groupId>
<artifactId>prettier-maven-plugin</artifactId>
<version>0.16</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>write</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<!-- Abhängigkeiten -->
<dependencies>
<!-- JUnit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.3</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>

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

Hilfreiche Plugins und Bibliotheken

Prettier ist ein weit verbreiterter Quellcode-Formatierer, der eine einheitliche Quellcode-Formatierung fördert. Durch die Einbindung des Goals write in die Lebenszyklus-Phase compile wird sichergestellt, dass der Quellcode bei jedem Kompiliervorgang automatisch formattiert wird.

pom.xml (Auszug)
...
<!-- Prettier -->
<plugin>
<groupId>com.hubspot.maven.plugins</groupId>
<artifactId>prettier-maven-plugin</artifactId>
<version>0.16</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>write</goal>
</goals>
</execution>
</executions>
</plugin>
...
Hinweis

Die angegebenen Versionen sind die jeweils aktuellsten Versionen zum Stand Dezember 2024.