it-swarm.com.de

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

Was genau sind die Unterschiede zwischen mvn clean package und mvn clean install? Wenn ich beide Befehle ausführe, scheinen sie beide dasselbe zu tun. 

170
Ben

Nun, beide werden sauber. Das bedeutet, dass sie den Zielordner entfernen. Die eigentliche Frage ist, was ist der Unterschied zwischen Paket und Installation? 

package wird Ihren Code kompilieren und auch packen. Wenn Ihr Pom beispielsweise angibt, dass das Projekt ein Jar ist, erstellt es ein Jar für Sie, wenn Sie es packen, und legt es (irgendwo im Zielverzeichnis) (standardmäßig).

install wird kompiliert und gepackt, das Paket wird jedoch auch in Ihrem lokalen Repository abgelegt. Dadurch können andere Projekte darauf verweisen und es aus Ihrem lokalen Repository beziehen.

Dokumentation

245
Daniel Kaplan

package erzeugt Jar/War gemäß der POM-Datei . install installiert die generierte JAR-Datei im lokalen Repository für andere Abhängigkeiten, falls vorhanden.

install phase kommt nach package phase

14
Abdul Gafoor

Was Clean bewirkt (in beiden Befehlen gemeinsam) - Entfernt alle Dateien, die vom vorherigen Build generiert wurden


Um den Unterschied zwischen den Befehlen package und install zu erkennen, müssen Sie zunächst denLebenszyklus eines Maven-Projektsverstehen.


Dies sind die Standard-Lebenszyklusphasen in Maven

  • validieren - validieren das Projekt ist korrekt und alle notwendigen Informationen sind verfügbar
  • compile - kompiliert den Quellcode des Projekts
  • test - teste den kompilierten Quellcode mit einem geeigneten Unit-Test-Framework. Diese Tests sollten nicht erfordern, dass der Code gepackt oder bereitgestellt wird
  • package - Nimm den kompilierten Code und packe ihn in sein verteilbares Format, wie eine JAR.
  • verify - Überprüft die Ergebnisse der Integrationstests, um sicherzustellen, dass die Qualitätskriterien erfüllt werden
  • install - Installiert das Paket im lokalen Repository, um es als Abhängigkeit in anderen Projekten lokal zu verwenden
  • deploy - Kopiert das endgültige Paket in das Remote-Repository, um es mit anderen Entwicklern und Projekten zu teilen.

Wenn Sie einen Befehl für eine der Lebenszyklusphasen ausführen, führt Maven die einzelnen Standardlebenszyklusphasen der Reihe nach aus, bevor der Befehl selbst ausgeführt wird.

reihenfolge der Ausführung

validieren >> kompilieren >> testen (optional) >> Paket >> überprüfen >> installieren >> bereitstellen

wenn Sie also den Befehlmvn packageausführen, werden die Befehle für alle Lebenszyklusphasen bis package ausgeführt

validiere >> kompiliere >> test (optional) >> package

und wasmvn installbetrifft, werden die Befehle für alle Lebenszyklusphasen bis zur Installation ausgeführt, einschließlich des Pakets

validieren >> kompilieren >> testen (optional) >> Paket >> überprüfen >> installieren


Im Grunde bedeutet dies, dass install command alles macht, was package command macht, und noch einiges mehr (installiere das Paket in das lokale Repository, um es als Abhängigkeit in anderen Projekten lokal zu verwenden).

Quelle: Maven-Lebenszyklusreferenz

11
Ketan R

Paket & Installation sind verschiedene Phasen im Lebenszyklus von Maven Build. Die Paketphase führt alle vorherigen Phasen aus und beendet das Packen des Projekts als Glas. Auf ähnliche Weise werden in der Installationsphase alle vorherigen Phasen ausgeführt und schließlich das Projekt lokal für andere abhängige Projekte installiert. 

Um den Lebenszyklus von Maven Build zu verstehen, gehen Sie bitte auf den folgenden Link https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html

9
Aarish Ramesh

package fügt dem jar-Ordner paketierte war oder target hinzu. Wir können dies überprüfen, wenn der Zielordner (mit mvn clean) geleert und dann mvn package..__ ausgeführt wird.
install wird all die Dinge erledigen, die package tut, zusätzlich wird auch das Paket jar oder war im lokalen Repository hinzugefügt. Wir können es durch einen Check in Ihrem .m2-Ordner bestätigen.

0
Nisarg Patil