Maven Ziele und Phasen

1. Übersicht

In diesem Tutorial werden wir verschiedene Maven-Build-Lebenszyklen und ihre Phasen untersuchen.

Wir werden auch die Kernbeziehung zwischen Zielen und Phasen diskutieren.

2. Maven Build Lifecycle

Der Maven-Build folgt einem bestimmten Lebenszyklus, um das Zielprojekt bereitzustellen und zu verteilen.

Es gibt drei integrierte Lebenszyklen:

  • Standard: Der Hauptlebenszyklus, der für die Projektbereitstellung verantwortlich ist
  • clean: Zum Bereinigen des Projekts und Entfernen aller vom vorherigen Build generierten Dateien
  • site: Zum Erstellen der Site-Dokumentation des Projekts

Jeder Lebenszyklus besteht aus einer Folge von Phasen. Der Standard- Build-Lebenszyklus besteht aus 23 Phasen, da dies der Haupt-Build-Lebenszyklus ist.

Andererseits besteht der saubere Lebenszyklus aus 3 Phasen, während der Standortlebenszyklus aus 4 Phasen besteht.

3. Maven Phase

Eine Maven-Phase repräsentiert eine Phase im Maven-Build- Lebenszyklus. Jede Phase ist für eine bestimmte Aufgabe verantwortlich.

Hier sind einige der wichtigsten Phasen im Standard- Build-Lebenszyklus:

  • validieren: Überprüfen Sie, ob alle für den Build erforderlichen Informationen verfügbar sind
  • kompilieren: Kompilieren Sie den Quellcode
  • test-compile: Kompiliert den Testquellcode
  • Test: Unit-Tests durchführen
  • package: Paket kompilierter Quellcode in das verteilbare Format (jar, war,…)
  • Integrationstest: Verarbeiten und Bereitstellen des Pakets, falls erforderlich, um Integrationstests auszuführen
  • install: Installieren Sie das Paket in einem lokalen Repository
  • Bereitstellen: Kopieren Sie das Paket in das Remote-Repository

Die vollständige Liste der Phasen jedes Lebenszyklus finden Sie in der Maven-Referenz.

Phasen werden in einer bestimmten Reihenfolge ausgeführt. Dies bedeutet, dass, wenn wir eine bestimmte Phase mit dem Befehl ausführen:

mvn 

Dadurch wird nicht nur die angegebene Phase ausgeführt, sondern auch alle vorhergehenden Phasen.

Wenn wir beispielsweise die Bereitstellungsphase ausführen, die die letzte Phase im Standard- Build-Lebenszyklus ist, werden alle Phasen auch vor der Bereitstellungsphase ausgeführt. Dies ist der gesamte Standard- Lebenszyklus:

mvn deploy

4. Maven Ziel

Jede Phase ist eine Folge von Zielen, und jedes Ziel ist für eine bestimmte Aufgabe verantwortlich.

Wenn wir eine Phase ausführen, werden alle an diese Phase gebundenen Ziele der Reihe nach ausgeführt.

Hier sind einige der Phasen und Standardziele, die an sie gebunden sind:

  • Compiler: Kompilierung - die Kompilierung Ziel aus der Compiler - Plugin an die gebunden Kompilierung Phase
  • Compiler: testCompile ist an die Test-Compile- Phase gebunden
  • todsichere: Test auf gebundene Testphase
  • installieren: Installieren Sie ist verpflichtet , installieren Phase
  • jar: jar und Krieg: Krieg ist gebunden Paket Phase

Mit dem folgenden Befehl können wir alle an eine bestimmte Phase gebundenen Ziele und ihre Plugins auflisten:

mvn help:describe -Dcmd=PHASENAME

Um beispielsweise alle Ziele aufzulisten, die an die Kompilierungsphase gebunden sind , können wir Folgendes ausführen:

mvn help:describe -Dcmd=compile

Und erhalten Sie die Beispielausgabe:

compile' is a phase corresponding to this plugin: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile

Wie oben erwähnt, ist das Kompilierungsziel des Compiler- Plugins an die Kompilierungsphase gebunden .

5. Maven Plugin

Ein Maven-Plugin ist eine Gruppe von Zielen. Diese Ziele sind jedoch nicht unbedingt alle an dieselbe Phase gebunden.

Hier ist zum Beispiel eine einfache Konfiguration des Maven Failsafe-Plugins, das für die Ausführung von Integrationstests verantwortlich ist:

   maven-failsafe-plugin ${maven.failsafe.version}    integration-test verify      

Wie wir sehen können, hat das Failsafe-Plugin zwei Hauptziele, die hier konfiguriert sind:

  • Integrationstest : Führen Sie Integrationstests durch
  • Überprüfen : Überprüfen Sie alle bestandenen Integrationstests

Mit dem folgenden Befehl können wir alle Ziele in einem bestimmten Plugin auflisten :

mvn :help

So listen Sie beispielsweise alle Ziele im Failsafe-Plugin auf:

mvn failsafe:help

Und die Ausgabe davon wird sein:

This plugin has 3 goals: failsafe:help Display help information on maven-failsafe-plugin. Call mvn failsafe:help -Ddetail=true -Dgoal= to display parameter details. failsafe:integration-test Run integration tests using Surefire. failsafe:verify Verify integration tests ran using Surefire.

Um ein bestimmtes Ziel auszuführen, ohne die gesamte Phase (und die vorhergehenden Phasen) auszuführen, können Sie den folgenden Befehl verwenden:

mvn :

Um beispielsweise das Integrationstestziel über das Failsafe-Plugin auszuführen, müssen Sie Folgendes ausführen:

mvn failsafe:integration-test

6. Erstellen eines Maven-Projekts

Um ein Maven-Projekt zu erstellen, müssen wir einen der Lebenszyklen ausführen, indem wir eine ihrer Phasen ausführen:

mvn deploy

Dadurch wird der gesamte Standardlebenszyklus ausgeführt . Alternativ können wir in der Installationsphase anhalten :

mvn install

Aber normalerweise verwenden wir den Befehl:

mvn clean install

So bereinigen Sie das Projekt zuerst - indem Sie den sauberen Lebenszyklus ausführen - vor dem neuen Build.

Wir können auch nur ein bestimmtes Ziel des Plugins ausführen:

mvn compiler:compile

Beachten Sie, dass wenn wir versuchen, ein Maven-Projekt ohne Angabe einer Phase oder eines Ziels zu erstellen, dies den Fehler verursacht:

[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal

7. Fazit

In diesem Artikel haben wir die Lebenszyklen von Maven-Builds sowie die Beziehung zwischen Maven-Phasen und -Zielen erörtert.