Was genau macht mvn install in maven?

165

Ich habe gerade angefangen, Maven zu verwenden, und mir wurde gesagt, dass ich es mvn installin einem bestimmten Verzeichnis tun soll .

Was mvn installgenau macht das?

Ich denke, es sucht pom.xmlim aktuellen Ordner und folgt den Anweisungen in dieser Datei. Ist das korrekt?

Rajeshwar
quelle

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.

uniqrish
quelle
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.

Dave Newton
quelle
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 .

Sergey Brunov
quelle
3

Kurze Antwort

mvn installieren

  • Fügt alle in pom angegebenen Artefakte (Abhängigkeiten) zum lokalen Repository (von Remote-Quellen) hinzu.
Daniel Perník
quelle
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>
Jyoti Prakash
quelle
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 .

Aditya Rewari
quelle