MVN Clean Install vs. Deploy vs. Release

132

Ich lerne gerade Maven, und wir mussten in letzter Zeit immer mehr gehen. Ich würde gerne den Unterschied zwischen kennen

mvn clean install

mvn release

mvn deploy

Bitte seien Sie so beschreibend wie möglich.

myusuf3
quelle

Antworten:

223

Die clean, installund deploy Phasen gelten Phasen des Lebenszyklus und Aufrufe sie werden alle Phasen auslösen vorhergehend sie, und die auf diese Phasen gebunden Ziele.

mvn sauber installieren

Dieser Befehl ruft die cleanPhase und dann die installPhase nacheinander auf:

  • clean: Entfernt Dateien, die beim Erstellen im Projektverzeichnis generiert wurden ( targetstandardmäßig).
  • install: Installiert das Paket im lokalen Repository, um es als Abhängigkeit in anderen Projekten lokal zu verwenden .

mvn bereitstellen

Dieser Befehl ruft die deployPhase auf:

  • deploy: Kopiert das endgültige Paket in das Remote- Repository, um es mit anderen Entwicklern und Projekten zu teilen .

mvn release

Dies ist weder eine gültige Phase noch ein Ziel, daher wird dies nichts bewirken. Bezieht sich jedoch auf das Maven Release Plugin , mit dem das Release Management automatisiert wird. Die Freigabe eines Projekts erfolgt in zwei Schritten: prepareund perform. Wie dokumentiert:

Das Vorbereiten einer Version durchläuft die folgenden Release-Phasen:

  • Stellen Sie sicher, dass die Quellen keine nicht festgeschriebenen Änderungen enthalten
  • Stellen Sie sicher, dass keine SNAPSHOT-Abhängigkeiten vorhanden sind
  • Ändern Sie die Version in den POMs von x-SNAPSHOT in eine neue Version (Sie werden aufgefordert, die zu verwendenden Versionen anzugeben).
  • Transformieren Sie die SCM-Informationen im POM so, dass sie das endgültige Ziel des Tags enthalten
  • Führen Sie die Projekttests für die geänderten POMs aus, um sicherzustellen, dass alles funktioniert
  • Übernehmen Sie die geänderten POMs
  • Kennzeichnen Sie den Code im SCM mit einem Versionsnamen (dies wird angezeigt)
  • Bump die Version in den POMs auf einen neuen Wert y-SNAPSHOT (diese Werte werden auch aufgefordert)
  • Übernehmen Sie die geänderten POMs

Und dann:

Durch Ausführen eines Releases werden die folgenden Release-Phasen ausgeführt:

  • Auschecken von einer SCM-URL mit optionalem Tag
  • Führen Sie die vordefinierten Maven-Ziele aus, um das Projekt freizugeben (standardmäßig Site-Deployment bereitstellen).

Siehe auch

Pascal Thivent
quelle
1
Können Sie dies bitte klarstellen: Dies ist weder eine gültige Phase noch ein Ziel, sodass dies nichts bewirkt. Aber wenn bezieht sich auf das Maven Release Plugin. Wenn es weder eine Phase noch ein Ziel ist, wie nennen wir es dann?
Gvlasov
26
  • mvn installwird Ihr gepacktes Maven-Projekt für die lokale Anwendung in das lokale Repository stellen, wobei Ihr Projekt als Abhängigkeit verwendet wird.
  • mvn release wird im Grunde Ihren aktuellen Code in ein Tag auf Ihrem SCM setzen, ändern Sie Ihre Version in Ihren Projekten.
  • mvn deploywird Ihr gepacktes Maven-Projekt in ein Remote- Repository stellen, um es mit anderen Entwicklern zu teilen.

Ressourcen:

Colin Hebert
quelle