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?



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.


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

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