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.