Was ist der Unterschied zwischen „mvn bereitstellen“ zu einem lokalen Repo und „mvn install“?

StackOverflow https://stackoverflow.com/questions/207281

  •  03-07-2019
  •  | 
  •  

Frage

Mein Team verwendet ein internes Team Maven Repo, die von einem Entwicklungs-Server mit Apache gemeinsam genutzt wird. Wir führen auch die Continuum CI-Server auf der gleichen Maschine. Maven-Builds in Continuum mit dem „install“ Ziel laufen, die kopiert das letzte Artefakt direkt in das freigegebene Verzeichnis.

Die Frage ist, was ist der Unterschied zwischen den Dateien auf das freigegebene Repo Hinzufügen mit mvn installieren und mit dem deploy Ziel (MVN-deploy Plugin)?

Es scheint mir, dass die Verwendung von mvn deploy Ärger zusätzliche Konfiguration schafft, aber ich habe irgendwo gelesen, dass Dateien in einem gemeinsamen Repo-Installation eine schlechte Idee, aus irgendeinem Grund die interne Funktionsweise von Maven in Zusammenhang steht.

Update: Ich erhalte die funktionalen Unterschiede zwischen deploy und installieren; Ich bin eigentlich mehr daran interessiert, in den niedrigen Niveau Einzelheiten in Bezug auf welche Dateien in der Maven-Repo erstellt.

War es hilfreich?

Lösung

Ken, gute Frage. Ich sollte deutlicher in der The Definitive Guide über der Unterschied. „Install“ und „Bereitstellung“ dienen zwei unterschiedlichen Zwecken in einem Build. „Install“ bezieht sich auf den Prozess der ein Artefakt in Ihrem lokalen Repository installieren. „Bereitstellen“ bezieht sich auf den Prozess des einen Artefakt zu einer Remote-Repository bereitstellen.

Beispiel:

  1. Wenn ich ein großes Multi-Modul-Projekt auf meinem Rechner laufen, werde ich „mvn install“ in der Regel laufen. Das wird alle erzeugten binären Softwareartefakte (in der Regel JAR-Dateien) in meinem lokalen Repository installieren. Dann, wenn ich einzelne Module in der Build bauen, Maven werden die Abhängigkeiten vom lokalen Repository abgerufen werden.

  2. Wenn es Zeit wird, Schnappschüssen oder Releases bereitstellen, ich werde „mvn bereitstellen“ laufen. Das Ausführen dieses die Dateien auf einem Remote-Repository oder Server versuchen, wird zu implementieren. Normalerweise werde ich ein Repository-Manager werden die Bereitstellung wie Nexus

Es ist wahr, dass die Ausführung „bereitstellen“ einige zusätzliche Konfiguration erfordern wird, werden Sie haben eine distribution Abschnitt in Ihrem POM zu liefern.

Andere Tipps

Vom Maven docs , klingt wie es ist nur ein Unterschied in die Repository Sie das Paket in installieren:

  • installieren - das Paket in das lokale Repository installieren, für die Verwendung als eine Abhängigkeit in anderen Projekten vor Ort
  • einsetzen -. Getan in einer Integration oder Umwelt freisetzen, kopiert das endgültige Paket an die Remote-Repository für mit anderen Entwicklern und Projekten teilen

Vielleicht gibt es einige Verwirrung, dass „zu installieren“, um die CI-Server installiert es es sich um lokale Repository ist, die dann Sie als Benutzer teilen?

„matt b“ hat es richtig, aber das „install“ Ziel kopiert sie gebaut Ziel an dem lokale Repository auf Ihrem Dateisystem um genau zu sein,; nützlich für kleine Veränderungen in Projekten derzeit nicht für die volle Gruppe gemeint.

Das „Bereitstellung“ Ziel Uploads es zu einem gemeinsamen Repository für, wenn Sie Ihre Arbeit beendet ist, und dann kann von anderen Menschen geteilt werden, die sie für ihr Projekt benötigen.

In Ihrem Fall scheint es, dass „Install“ verwendet wird, die Verwaltung des Einsatzes zu erleichtern, da lokale Repo-CI ist das gemeinsame Repo. Wenn CI auf einem anderen Feld war, hätte es die „deploy“ Ziel verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top