Wie Sie vielleicht wissen, ist Maven ein von Apache bereitgestelltes Build-Automatisierungstool, das mehr als nur Abhängigkeitsverwaltung leistet. Wir können es als Peer von Ant und Makefile erstellen, das alle erforderlichen Abhängigkeiten herunterlädt.
Auf einen mvn installumrahmt es einen Abhängigkeitsbaum basierend auf der Projektkonfiguration pom.xml auf allen Unterprojekten unter dem super pom.xml (das Root-POM) und lädt/kompiliert alle benötigten Komponenten in ein Verzeichnis namens .m2 unter dem Ordner des Benutzers. Diese Abhängigkeiten müssen aufgelöst werden, damit das Projekt fehlerfrei erstellt werden kann, und mvn install ist ein Dienstprogramm, das die meisten Abhängigkeiten herunterladen kann.
Darüber hinaus gibt es in Maven andere Dienstprogramme wie z dependency:resolve die in bestimmten Fällen separat verwendet werden können. Der Build-Lebenszyklus der mvn ist wie folgt: LifeCycle-Bindungen
process-resources
compile
process-test-resources
test-compile
test
package
install
deploy
Die Testphase dieser mvn kann mit einem Flag ignoriert werden -DskipTests=true.
Nur eine Randnotiz, wenn Sie alle testbezogenen Ziele überspringen möchten, verwenden Sie: -Dmaven.test.skip=true (anstelle von -DskipTests=true)
– Manoj Shrestha
31. Mai 2016 um 18:58 Uhr
Diese Antwort verdeutlicht nicht, dass der Installationsbefehl letztendlich installiert das Artefakt lokal, d. h. im lokalen Repository.
Kurzfassung: Es erstellt das Projekt und installiert es in Ihrem lokalen Repository.
Angenommen, Sie führen „mvn install“ in einer Open-Source-Bibliothek aus. Dann führen Sie „mvn install“ in einem 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
19. Juni 2013 um 19:48 Uhr
@Kevin Es sollte zuerst lokal gehen, da das der Punkt ist. Wenn es sich nicht im lokalen Repository befindet, sucht es in allen von Ihnen konfigurierten Repositorys (oder den Standardeinstellungen) und installiert es in Ihrem lokalen Repository, wenn es gefunden wird. Ich vermute, Sie könnten es so konfigurieren, dass es das lokale Repo immer überspringt, obwohl ich nicht weiß, wie, ohne es nachzuschlagen.
– David Newton
19. Juni 2013 um 19:53 Uhr
Haben Sie die kanonischen Dokumente für Maven angeschaut? Die Apache-Site erklärt den Zweck von mvn install folgendermaßen: „In den meisten Fällen benötigt install:install Goal keine Konfiguration, es benötigt das POM des Projekts und die Artifact-Datei, die während der Installationsphase des Standard-Build-Lebenszyklus installiert werden.“ Weil das Apache-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
11. Juli 2013 um 11:15 Uhr
Das install:install Ziel wird von «Apache Maven Install Plugin» bereitgestellt:
Apache Maven-Installations-Plugin
Das Installations-Plugin wird während der Installationsphase verwendet, um Artefakte zum lokalen Repository hinzuzufügen. Das Installations-Plugin verwendet die Informationen im POM (groupId, artifactId, version), um den richtigen Speicherort für das Artefakt im lokalen Repository zu bestimmen.
Das lokale Repository ist der lokale Cache, in dem alle für den Build benötigten Artefakte gespeichert werden. Standardmäßig befindet es sich im Home-Verzeichnis des Benutzers (~/.m2/repository), aber der Speicherort kann in konfiguriert werden ~/.m2/settings.xml Verwendung der <localRepository> Element.
install:install wird verwendet, um das Hauptartefakt des Projekts (das JAR, WAR oder EAR), sein POM und alle angehängten Artefakte (Quellen, Javadoc usw.), die von einem bestimmten Projekt erzeugt werden, automatisch zu installieren.
Weitere Details zum Build-Lebenszyklus im Allgemeinen und dazu, welchen Platz das Ziel im Build-Lebenszyklus einnimmt, finden Sie in der Maven – Einführung in den Build-Lebenszyklus Seite.
Es führt alle Ziele aller konfigurierten Plugins aus, die mit einer beliebigen Phase des Standardlebenszyklus bis zur “Installationsphase” verbunden sind:
fügt alle Artefakte (Abhängigkeiten) hinzu, die in angegeben sind pomzum lokalRepository (aus entfernten Quellen).
Sie haben vergessen zu erwähnen, dass es auch das Projekt erstellt.
– jurez
1. Oktober 2020 um 5:11 Uhr
Jyoti Prakash
-DskipTests=true ist Kurzform von -Dmaven.test.skip=true
Nehmen Sie Änderungen vor Einstellung.xml in deiner .m2 Mappe. Sie können einen Link zum lokalen Repo verwenden, damit die einmal heruntergeladenen JAR-Dateien nicht immer wieder heruntergeladen werden.
maven.apache.org/guides/getting-started/…
– Michał Kalinowski
10. Mai 2012 um 12:22 Uhr