Maven regelt den gesamten Build-Prozess über verschiedene
Lifecycles, Phasen und
Goals. Ein Lifecycle (z.B. default,
clean oder site) besteht aus einer definierten
Abfolge von Phasen, und jeder Phase können
Goals aus verschiedenen Plugins zugeordnet sein. Das
Verständnis dieser Konzepte ist zentral, um den Build-Prozess effektiv
anpassen und erweitern zu können.
Der default Lifecycle besitzt insgesamt 23 Phasen.
Einige der wichtigsten sind:
Wird eine bestimmte Phase aufgerufen, führt Maven automatisch auch alle vorhergehenden Phasen des Lifecycles aus. Beispiel:
mvn deploy
Dieser Aufruf umfasst unter anderem die Phasen validate,
compile, test, package,
install und schließlich deploy.
Ein Goal ist eine spezifische Aufgabe, die in einer Phase ausgeführt wird und einem Plugin zugeordnet ist. In der Praxis lösen Phasen alle Goals aus, die ihnen zugeordnet sind.
compile Goal des maven-compiler-plugin
aus.testCompile Goal des maven-compiler-plugin
aus.test Goal des maven-surefire-plugin aus.jar Goal des maven-jar-plugin (oder ggf.
war beim maven-war-plugin) aus.install Goal des maven-install-plugin
aus.deploy Goal des maven-deploy-plugin aus.Zusätzlich zur Ausführung über Phasen können Goals auch direkt aufgerufen werden, beispielsweise:
mvn compiler:compile
In diesem Fall wird ausschließlich das compile Goal des
compiler-Plugins ausgeführt, ohne den vollständigen Build-Lifecycle
durchzulaufen.
Um alle Goals einer bestimmten Phase anzuzeigen:
mvn help:describe -Dcmd=<PHASE>
Beispiel:
mvn help:describe -Dcmd=compile
compile (Phase:
compile)<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>test (Phase:
test)<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>jar (Phase:
package)<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
</plugin>install (Phase:
install)<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>deploy (Phase:
deploy)<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>Maven teilt den Build-Prozess in Lifecycles, Phasen und Goals auf.
default, clean, site).compile, test, package), in dem
bestimmte Aufgaben ausgeführt werden.Durch dieses System lassen sich Builds klar strukturieren, reproduzierbar halten und flexibel erweitern. Ob man einzelne Goals direkt aufruft oder ganze Phasen im Lifecycle durchläuft — Maven bietet ein konsistentes, wiederholbares und leicht erweiterbares Vorgehen für eine Vielzahl von Projektanforderungen.