Ich bin neu in Maven. Ich habe ein Java-basiertes Webprojekt mit Maven in MyEclipse konfiguriert.
Wenn ich nun Java-Dateien geändert habe, muss ich das tun Run as -> Mvn install
oder Mvn package
?
Ich bin neu in Maven. Ich habe ein Java-basiertes Webprojekt mit Maven in MyEclipse konfiguriert.
Wenn ich nun Java-Dateien geändert habe, muss ich das tun Run as -> Mvn install
oder Mvn package
?
Antworten:
von http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
package
: Nehmen Sie den kompilierten Code und verpacken Sie ihn in seinem verteilbaren Format, z. B. einer JAR.
install
: Installieren Sie das Paket im lokalen Repository, um es als Abhängigkeit in anderen Projekten lokal zu verwenden
Die Antwort auf Ihre Frage lautet also, es hängt davon ab, ob Sie es in Ihrem lokalen Repo installieren möchten. Bei der Installation wird auch das Paket ausgeführt, da es sich im Zielphasenstapel weiter oben befindet.
deploy
tut. Wenn Sie es durch ersetzen package
, wird es nicht für Nexus bereitgestellt.
mvn install
ist die am häufigsten verwendete Option.
mvn package
wird nur selten verwendet, nur wenn Sie ein Problem mit dem Maven-Erstellungsprozess beheben.
Siehe: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Beachten Sie, dass mvn package
nur eine JAR-Datei erstellt wird.
mvn install
wird das tun und die JAR- (und Klassen- usw.) Dateien an den richtigen Stellen installieren, wenn anderer Code von diesen JARs abhängt.
Normalerweise mache ich a mvn clean install
; Dadurch wird das target
Verzeichnis gelöscht und alle Gläser an diesem Speicherort werden neu erstellt.
Die Reinigung hilft bei nicht benötigten oder entfernten Dingen, die manchmal im Weg stehen können.
Anstatt zu debuggen (manchmal), fangen Sie einfach die ganze Zeit neu an.
In der Lifecycle-Referenz werden bei der Installation die Integrationstests des Projekts ausgeführt, beim Paket nicht.
Wenn Sie die generierten Artefakte wirklich nicht installieren müssen, verwenden Sie mindestens Verify .
Beachten Sie außerdem, dass Sie, wenn Ihr Projekt aus mehreren voneinander abhängigen Modulen besteht, "install" anstelle von "package" verwenden sollten. Andernfalls schlägt Ihr Build fehl. Wenn Sie den Befehl install verwenden, wird Modul A gepackt und im lokalen Repository bereitgestellt. Wenn Modul B dann Modul A als Abhängigkeit benötigt, kann es vom lokalen Repository darauf zugreifen.
Wenn Sie sich nicht unter Verwendung eines Remote - Repository (wie artifactory), verwenden plain old:
mvn clean install
Ziemlich altes Thema, aber AFAIK, wenn Sie ein eigenes Repository (z. B. mit Artifactory) betreiben, um das Glas unter Ihren Teams zu teilen, möchten Sie es möglicherweise verwenden
mvn clean deploy
stattdessen.
Auf diese Weise kann Ihr Continuous Integration Server sicherstellen, dass alle Abhängigkeiten korrekt in Ihr Remote-Repository übertragen werden. Wenn Sie eines verpasst haben, kann mvn es nicht in Ihrem lokalen m2-CI-Repository finden.
package - Nimmt den kompilierten Code und verpackt ihn in seinem verteilbaren Format, z. B. einer JAR- oder WAR-Datei. install - Installiert das Paket im lokalen Repository, um es als Abhängigkeit in anderen Projekten lokal zu verwenden
Der richtige Weg ist, mvn package
wenn Sie die Dinge für den Kern Ihres Builds richtig gemacht haben, sollte es nicht notwendig sein, Ihre Pakete im lokalen Repository zu installieren.
Wenn Sie Travis verwenden, können Sie außerdem Ihre Abhängigkeiten "zwischenspeichern", da dies Ihre nicht berührt, $HOME.m2/repository
wenn Sie das Paket für Ihr eigenes Projekt verwenden.
In der Praxis müssen mvn site
Sie normalerweise mvn install
vorher eine machen, wenn Sie überhaupt versuchen, eine zu machen . Es gibt einfach zu viele Fehler mit site
oder es gibt zahlreiche schlecht gewartete Plugins.
Dies hängt davon ab, was Sie nach dem Ändern der Java-Datei erreichen möchten. Bis Sie den Maven-Prozess testen möchten, müssen Sie nie etwas tun. Eclipse / MyEclipse erstellt das Notwendige und platziert die Ausgabe an der entsprechenden Stelle in Ihrem Projekt. Sie können es auch ausführen oder bereitstellen (wenn es sich beispielsweise um ein Webprojekt handelt), ohne dass Sie explizit etwas mit maven tun müssen. Um Ihr Projekt im Maven-Repository zu installieren, müssen Sie am Ende eine Maven-Installation durchführen. Möglicherweise haben Sie auch andere Maven-Ziele, die Sie ausführen möchten, was MyEclipse nicht automatisch tut.
Wie gesagt, es kommt darauf an, was Sie tun wollen.