Apache Maven ist ein deklaratives Build- und Projektmanagement-Werkzeug für Java, das Jason van Zyl 2002 als Unterprojekt von Apache Turbine entwickelte. Seit 2003 ist Maven ein Top-Level-Projekt der Apache Software Foundation. Statt Build-Logik zu programmieren, beschreibt das Projekt sich selbst in der Datei pom.xml — Maven leitet daraus den kompletten Build ab.

pom.xml und der Standard-Lebenszyklus

Die pom.xml (Project Object Model) definiert Gruppen-ID, Artefakt-ID, Version, Verpackungsart, Abhängigkeiten und Plugins. Maven führt dann den fest vorgegebenen Default-Lebenszyklus aus, dessen Phasen in dieser Reihenfolge laufen: validate, compile, test, package, verify, install, deploy. Der Aufruf einer späteren Phase führt automatisch alle vorherigen mit aus — mvn package kompiliert also auch, testet und erzeugt die JAR/WAR-Datei.

Die wichtigsten mvn-Aufrufe

mvn clean        # build/-Verzeichnis löschen
mvn compile      # Quellcode übersetzen
mvn test         # Tests ausführen
mvn package      # JAR/WAR erzeugen
mvn install      # Artefakt ins lokale Repository kopieren
mvn deploy       # Artefakt auf einen entfernten Server veröffentlichen

Mit mvn clean install startet man den klassischen Komplett-Build, mit mvn -DskipTests=true install lassen sich Tests überspringen. Abhängigkeiten lädt Maven automatisch aus zentralen Repositories, standardmäßig aus Maven Central.

Maven etablierte das Konvention-über-Konfiguration-Prinzip, das jüngere Werkzeuge übernommen haben: Gradle-Befehle setzen denselben Lebenszyklus-Gedanken mit programmierbaren Skripten um, während Make-Befehle den klassischen, regelbasierten Ansatz aus der Unix-Welt zeigen.