maven: Ist es möglich, den Speicherort des lokalen Repositorys mithilfe der Befehlszeilenoption oder der env-Variablen zu überschreiben?

76

Derzeit geben wir den Speicherort des lokalen Repositorys in der Datei settings.xml an. Ist es möglich, diese Einstellung über die Befehlszeile oder die env-Variable zu überschreiben, sodass ich manchmal einen alternativen Speicherort verwenden kann?

Anthony Kong
quelle
2
Mögliches Duplikat der Angabe des lokalen Repository-Speicherorts
Ingo Karkat
Mir ist bisher nicht in den Sinn gekommen, warum dies nützlich sein sollte. Wenn Sie an mehreren Zweigen (einem Release-Zweig, einem Trunk-Zweig) arbeiten und der Quellbaum komplex ist, kann der Versuch, die Kompilierung zum Laufen zu bringen, ein Albtraum sein, wenn Sie verwenden nur 1.0-SNAPSHOTals Ihre Version. Separate .m2-Repos umgehen viel davon.
Sridhar Sarnobat

Antworten:

134

maven.repo.localDazu müssten Sie den Parameter angeben .

mvn package -Dmaven.repo.local=/alternate/repo/location

Hier ist eine verwandte SO-Frage.

Raghuram
quelle
4
Das lokale Repository muss ein absoluter Pfad sein, maven.apache.org/guides/mini/guide-configuring-maven.html .
luka5z
@ luka5z: Danke für den wichtigen Dokumentverweis, aber ich kann mit Erfahrung sagen, dass der Pfad relativ sein kann --define maven.repo.local=local/repo/here. Vielleicht sind absolute Pfade nur für erforderlich settings.xml?
Kevinarpe
@ Raghuram: makellose Antwort
Gaurav
17

Verwenden Sie die Einstellung localRepository in Ihrer Datei settings.xml. Beispiel:

<settings>
  <localRepository>/repo</localRepository>
  ...
</settings>

Sehen Sie hier für weitere Informationen.

Sie können das Repository auch über die Befehlszeile mit "-Dmaven.repo.local =" festlegen, z.

mvn -U clean install -Dmaven.repo.local=C:\tmp
Michael
quelle
1
Wir haben es bereits in unserer settings.xml gemacht. Ich möchte es überschreiben, wenn ich Maven in einer Shell aufrufe
Anthony Kong
1
Wenn maven diese settings.xml verwendet, sollte diese Einstellung auch dann übernommen werden, wenn Sie sie von einer Shell aus aufrufen. Es ist sehr üblich, dass Windows-Benutzer dies aufgrund von Leerzeichen in ihrem Ausgangsverzeichnis "c: \ Dokumente und Einstellungen \ blah" festlegen müssen
Michael
1
Ich habe gerade einen Test mit "<localRepository> / Users / michael / Desktop / repository </ localRepository>" in meiner Datei settings.xml ausgeführt. Und jetzt, wenn ich irgendetwas über die Kommandozeile (oder die Idee) baue, werden die Artefakte dort abgelegt.
Michael
1
Entschuldigung, habe deine Frage falsch verstanden. Die obige Antwort ist richtig. Sie können die Option "-Dmaven.repo.local = / alternative / repo / location" für die Befehle verwenden.
Michael