490 Stimmen

Wie unterscheiden sich "mvn clean package" und "mvn clean install"?

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.

580voto

Daniel Kaplan Punkte 57851

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.

Dokumentation

394voto

Ketan R Punkte 3219

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

30voto

Abdul Gafoor Punkte 865

Paket wird Jar/War gemäß der POM-Datei generieren. installieren wird die generierte Jar-Datei im lokalen Repository installieren, falls weitere Abhängigkeiten vorhanden sind.

Installieren Phase kommt nach der Paket Phase

20voto

Nisarg Patil Punkte 1191

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.

11voto

Aarish Ramesh Punkte 6125

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X