Apache Maven ist ein leistungsfähiges Build-Management-Tool für Java-Projekte. Es automatisiert den gesamten Build-Prozess – von der Kompilierung, über das Testing, bis hin zur Bereitstellung von Artefakten.
Traditionelle Build-Tools wie make oder Ant
erfordern oft manuelle Konfigurationsschritte und individuelle Skripte
für jede Umgebung. Maven verfolgt einen deklarativen
Ansatz:
pom.xml.Ein großer Vorteil: Wiederholbare Builds, unabhängig vom Entwicklerrechner. Wenn das Projekt bei einem Teammitglied funktioniert, läuft es mit hoher Wahrscheinlichkeit überall identisch.
Um Maven direkt auszuprobieren, kann folgender Befehl verwendet werden, um ein einfaches Java-Projekt mit der Standardstruktur zu erstellen:
mvn archetype:generate -DgroupId=com.example -DartifactId=mein-projekt -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseDies erzeugt eine Verzeichnisstruktur mit einer pom.xml,
in der bereits alle wichtigen Abhängigkeiten und
Build-Prozesse definiert sind. Der gesamte Build-Prozess kann
dann mit einem einzigen Befehl ausgeführt werden:
mvn packageMaven kompiliert den Code, führt Tests aus und erstellt eine
ausführbare JAR-Datei im target/-Verzeichnis. Hierbei kommt
es zu einem unerwarteten Ergebnis:
...
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Source option 5 is no longer supported. Use 8 or later.
[ERROR] Target option 5 is no longer supported. Use 8 or later.
[INFO] 2 errors
Das passiert in der Regel, weil der schnell erzeugte Projektentwurf („Quickstart Archetype“) noch auf Java 5 voreingestellt ist. Moderne Java-Umgebungen und das aktuelle Maven Compiler Plugin unterstützen standardmäßig jedoch nur Quellversionen ab Java 8. Es gibt zwei gängige Lösungen:
pom.xml anpassen.<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>pom.xml anpassen.<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>Bei der Ausführung per
mvn exec:javakommt es zu eiener weiteren Fehlermeldung:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.5.0:java (default-cli) on project mein-projekt: The parameters 'mainClass' for goal org.codehaus.mojo:exec-maven-plugin:3.5.0:java are missing or invalid -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1]
Auch hier bieten sich zwei gängige Lösungen an:
pom.xml anpassen.<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<mainClass>com.example.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>mvn exec:java -Dexec.mainClass="com.example.App"
Maven ist nicht das einzige Build-Tool für Java. Eine kurze Einordnung:
| Tool | Architektur | Vorteile | Nachteile |
|---|---|---|---|
| Maven | XML-basiert, deklarativ | Standardisierte Strukturen, gute Dependency-Verwaltung | XML kann umständlich sein |
| Gradle | DSL, Groovy/Kotlin, deklarativ | Flexibler, schneller als Maven | Höhere Einstiegshürde |
| Ant | Skriptbasiert, imperativ | Vollständige Kontrolle über den Build | Manuelle Konfiguration nötig |
Maven ist besonders gut geeignet für Standardprojekte mit klaren Abhängigkeiten und bietet eine gute Integration mit Java-Ökosystemen wie Spring Boot oder Jakarta EE.