Was genau macht mvn install in maven?


Antworten:


124

Wie Sie vielleicht wissen, ist Maven ein von Apache bereitgestelltes Tool zur Build-Automatisierung, das mehr als nur das Abhängigkeitsmanagement bietet. Wir können es als Peer von Ant und Makefile schaffen, das alle erforderlichen Abhängigkeiten herunterlädt.

Auf a mvn installwird ein Abhängigkeitsbaum basierend auf der Projektkonfiguration pom.xmlfür alle Unterprojekte unter dem Super pom.xml(dem Root-POM) gerahmt und alle erforderlichen Komponenten in einem Verzeichnis heruntergeladen / kompiliert, das .m2unter dem Ordner des Benutzers aufgerufen wird . Diese Abhängigkeiten müssen aufgelöst werden, damit das Projekt fehlerfrei erstellt werden kann. Dies mvn installist ein Dienstprogramm, mit dem die meisten Abhängigkeiten heruntergeladen werden können.

Darüber hinaus gibt es in Maven andere Utils dependency:resolve, die in bestimmten Fällen separat verwendet werden können. Der Build-Lebenszyklus des MVN ist wie folgt : LifeCycle-Bindungen

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

Die Testphase dieses MVN kann mithilfe eines Flags ignoriert werden -DskipTests=true.


9
Nur eine Randnotiz, wenn Sie alle testbezogenen Ziele überspringen möchten, verwenden Sie: -Dmaven.test.skip = true (anstelle von -DskipTests = true)
Manoj Shrestha

Diese Antwort verdeutlicht nicht, dass der Installationsbefehl das Artefakt letztendlich lokal installiert, dh im lokalen Repository.
PeriChandra

34

Haben Sie sich eines der Maven-Dokumente angesehen, zum Beispiel die Maven-Installations-Plugin-Dokumente? ?

Kurzfassung: Das Projekt wird erstellt und in Ihrem lokalen Repository installiert.


Angenommen, Sie führen "mvn install" in einer Open-Source-Bibliothek aus. Anschließend führen Sie "mvn install" für ein Projekt aus, das die Open-Source-Bibliothek verwendet, die wir zuerst kompiliert haben. Werden JARs beim Ausführen von "mvn install" zuerst im lokalen Repo nachgeschlagen? Oder ist es abhängig von der POM-Datei?
Kevin Meredith

1
@ Kevin Es sollte zuerst lokal gehen, da das der Punkt ist. Wenn es sich nicht im lokalen Repository befindet, sucht es in den von Ihnen konfigurierten Repositorys (oder den Standardeinstellungen) und installiert es in Ihrem lokalen Repo, wenn es gefunden wird. Ich vermute, Sie könnten es so konfigurieren, dass das lokale Repo immer übersprungen wird, obwohl ich nicht weiß, wie, ohne es nachzuschlagen.
Dave Newton

17
Haben Sie sich die kanonischen Dokumente für Maven angesehen? Die Website von Apache erklärt den Zweck der mvn-Installation folgendermaßen: "In den meisten Fällen benötigt install: install target keine Konfiguration. Der POM des Projekts und die Artefaktdatei müssen während der Installationsphase des Standard-Build-Lebenszyklus installiert werden." Weil Apaches Dokument nicht erklärt, was 'mvn install' tatsächlich tut, suchen Leute wie das Poster und ich nach der Antwort. Vollkommen vernünftige Frage.
Bethesdaboys


6

Das install:installZiel liefert «Apache Maven Install Plugin»:

Apache Maven Install Plugin

Das Installations-Plugin wird während der Installationsphase verwendet, um dem lokalen Repository Artefakte hinzuzufügen. Das Plugin installieren Sie die Informationen im POM verwendet ( groupId, artifactId,version ) , um die richtige Stelle für das Artefakt in dem lokalen Endlager zu bestimmen.

Das lokale Repository ist der lokale Cache, in dem alle für den Build erforderlichen Artefakte gespeichert werden. Standardmäßig befindet es sich im Home-Verzeichnis des Benutzers ( ~/.m2/repository), der Speicherort kann jedoch ~/.m2/settings.xmlmithilfe von konfiguriert werden<localRepository> Elements .

- Apache Maven Install Plugin - Einführung .

Das genaue Ziel ist jedoch:

install:install wird verwendet, um das Hauptartefakt des Projekts (JAR, WAR oder EAR), seinen POM und alle angehängten Artefakte (Quellen, Javadoc usw.), die von einem bestimmten Projekt erzeugt wurden, automatisch zu installieren.

- Apache Maven Install Plugin - Einführung .

Weitere Informationen zum Ziel finden Sie auf der Seite Apache Maven Install Plugin - install: install .

Weitere Informationen zum Build-Lebenszyklus im Allgemeinen und zu der Position, die das Ziel im Build-Lebenszyklus hat, finden Sie auf der Seite Maven - Einführung in den Build-Lebenszyklus .


3

Kurze Antwort

mvn installieren

  • Fügt alle in pom angegebenen Artefakte (Abhängigkeiten) zum lokalen Repository (von Remote-Quellen) hinzu.

2

-DskipTests=true ist eine Kurzform von -Dmaven.test.skip=true

Nehmen Sie Änderungen in Setting.xml in Ihrem .m2- Ordner vor. Sie können den Link zum lokalen Repo verwenden, damit die einmal heruntergeladenen Gläser nicht immer wieder heruntergeladen werden.

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>

0

Die primären Jobs für die mvn-Installation sind: 1) Laden Sie die Abhängigkeiten herunter und 2) Erstellen Sie das Projekt

während Job 1 heutzutage von IDs wie Intellij erledigt wird (sie werden für jede Abhängigkeit bei POM heruntergeladen).

Die mvn-Installation wird jetzt hauptsächlich für Job 2 verwendet .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.