8 Maven Lifecycle, Phasen und Goals

8.1 Übersicht

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.

8.2 Lifecycles

8.2.1 Eingebaute Maven Lifecycles

  1. default
  2. clean
  3. site

8.3 Phasen des default Lifecycles

Der default Lifecycle besitzt insgesamt 23 Phasen. Einige der wichtigsten sind:

  1. validate
    Überprüft, ob alle nötigen Projektinformationen vorhanden sind.
  2. compile
    Kompiliert den Quellcode des Projekts.
  3. test-compile
    Kompiliert den Test-Quellcode.
  4. test
    Führt die Unit-Tests aus.
  5. package
    Verpackt den kompilierten Code in ein Distributionsformat (z.B. JAR oder WAR).
  6. integration-test
    Führt (nach Bedarf) Integrationstests durch.
  7. install
    Installiert das resultierende Paket im lokalen Maven-Repository.
  8. deploy
    Kopiert das Paket in ein Remote-Repository, um es für andere verfügbar zu machen.

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.

8.4 Goals (Ziele)

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.

8.4.1 Beispiel: Zuordnung von Goals zu Phasen

8.4.2 Goals direkt ausführen

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.

8.4.3 Auflistung aller Goals einer Phase

Um alle Goals einer bestimmten Phase anzuzeigen:

mvn help:describe -Dcmd=<PHASE>

Beispiel:

mvn help:describe -Dcmd=compile

8.5 Wichtige Maven Plugins und ihre typischen Goals

8.5.1 Maven Compiler Plugin

<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>

8.5.2 Maven Surefire Plugin

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.22.2</version>
</plugin>

8.5.3 Maven Jar Plugin

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.2.0</version>
</plugin>

8.5.4 Maven Install Plugin

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-install-plugin</artifactId>
  <version>2.5.2</version>
</plugin>

8.5.5 Maven Deploy Plugin

<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.

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.