Was sind genau die Unterschiede zwischen mvn clean package
und mvn clean install
? Wenn ich beide Befehle ausführe, scheinen sie beide das gleiche zu tun.
Antworten
Zu viele Anzeigen?Nun, beide werden sauber machen. Das bedeutet, sie werden den Zielordner entfernen. Die eigentliche Frage ist, was ist der Unterschied zwischen Paket und Installation?
Paket
wird Ihren Code kompilieren und auch verpacken. Wenn Ihr POM zum Beispiel angibt, dass das Projekt ein Jar ist, wird es ein Jar für Sie erstellen, wenn Sie es verpacken, und es irgendwo im Zielverzeichnis (standardmäßig) ablegen.
install
wird kompilieren und verpacken, aber es wird auch das Paket in Ihrem lokalen Repository ablegen. Dadurch können andere Projekte darauf verweisen und es aus Ihrem lokalen Repository abrufen.
Was clean macht (gemeinsam in beiden Befehlen) - entfernt alle Dateien, die vom vorherigen Build generiert wurden
Kommen wir zum Unterschied zwischen den Befehlen package und install, Sie müssen zunächst den Lebenszyklus eines Maven-Projekts verstehen
Dies sind die Standardphasen im Maven-Lebenszyklus
- validate - überprüft, ob das Projekt korrekt ist und alle notwendigen Informationen vorhanden sind
- compile - kompiliert den Quellcode des Projekts
- test - testet den kompilierten Quellcode mit einem geeigneten Unit-Test-Framework. Diese Tests sollten nicht erfordern, dass der Code verpackt oder bereitgestellt wird
- package - nimmt den kompilierten Code und verpackt ihn in seinem verteilbaren Format, z. B. ein JAR.
- verify - führt Überprüfungen der Ergebnisse von Integrationstests durch, um sicherzustellen, dass Qualitätskriterien erfüllt sind
- install - installiert das Paket im lokalen Repository zur Verwendung als Abhängigkeit in anderen Projekten lokal
- deploy - wird in der Build-Umgebung ausgeführt, kopiert das endgültige Paket in das entfernte Repository, um es mit anderen Entwicklern und Projekten zu teilen
Die Funktionsweise von Maven ist, dass wenn Sie einen Befehl für eine der Lebenszyklusphasen ausführen, führt es jede Standard-Lebenszyklusphase in der Reihenfolge aus, bevor es den Befehl selbst ausführt
Ausführungsreihenfolge
validate >> compile >> test (optional) >> package >> verify >> install >> deploy
Wenn Sie also den Befehl mvn package ausführen, führt er die Befehle für alle Lebenszyklusphasen bis einschließlich package aus
validate >> compile >> test (optional) >> package
Und in Bezug auf mvn install, führt er die Befehle für alle Lebenszyklusphasen bis zu install aus, was auch package beinhaltet
validate >> compile >> test (optional) >> package >> verify >> install
Also, effektiv bedeutet dies, dass der Befehl install alles ausführt, was der Befehl package ausführt und noch etwas mehr (das Paket im lokalen Repository installieren, um es als Abhängigkeit in anderen Projekten lokal zu verwenden)
Quelle: Maven Lebenszyklus-Referenz
Paket
fügt das verpackte jar
oder war
in den Ziel
-Ordner hinzu. Das kann überprüft werden, indem der Ziel
-Ordner geleert wird (mit mvn clean
) und dann mvn package
ausgeführt wird.
Installieren
macht alles, was Paket
macht, zusätzlich wird das verpackte jar
oder war
auch im lokalen Repository hinzugefügt. Das kann durch Überprüfung im .m2
-Ordner bestätigt werden.
Paket und Installation sind verschiedene Phasen im Maven-Build-Lebenszyklus. Die Phase "package" führt alle Phasen davor aus und endet mit der Verpackung des Projekts als Jar-Datei. Ebenso führt die Installationsphase alle vorherigen Phasen aus und installiert schließlich das Projekt lokal für andere abhängige Projekte.
Um den Maven-Build-Lebenszyklus zu verstehen, besuchen Sie bitte den folgenden Link https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html
- See previous answers
- Weitere Antworten anzeigen