Ist es möglich, den Speicherort des lokalen Maven-Repositorys als Argument in der Maven-Befehlszeile festzulegen?
Die Sache ist, dass ich nicht die Standardeinstellung in verwende ~/.m2/repository
. Allerdings habe ich mir ein Projekt angesehen, das mit eigenen Einstellungen erstellt wird -s settings.xml
. Diese settings.xml gibt mein lokales Repository nicht an, daher verwendet Maven ~/.m2/repository
erneut verwendet ... Ich möchte einen nicht standardmäßigen lokalen Repository-Speicherort verwenden, ohne ein <localRepository>
Element in die settings.xml des Projekts einfügen zu müssen
ich habe es versucht
-DlocalRepository="..."
$mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
-Dsettings.localRepository
Aber keine dieser Optionen funktioniert.
Ich denke, ich muss mich entscheiden, ob ich die settings.xml eines Drittanbieters ändern oder mein lokales Repo nach verschieben möchte ~
settings.xml
. Siehe maven.apache.org/guides/mini/guide-configuring-maven.htmlAntworten:
Verwenden Sie die Maven-Eigenschaft
maven.repo.local
:mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
Es
settings.xml
sind keine Änderungen erforderlich.quelle
Für Git:
Dies verwendet ein separates Maven-Repository in jedem Git-Repository
quelle
Eine Art von Hacky-Methode, die funktionieren würde, ist:
<localRepository>${m2.localRepository}</localRepository>
Ihrer settings.xml hinzu-Dm2.localRepository=<full path to home dir>/.m2/repository
vor dem "$ @" den Befehl ein, der ausgeführt wird. Dadurch bleibt Ihr lokales Standard-Repo dort, wo es sein sollte.mvn -Dm2.localRepository=... <phases/goals>
. Da Ihre Befehlszeilensystemeigenschaft nach der im mvn-Skript zur Befehlszeile hinzugefügt wird, hat sie Vorrang. (Zumindest bin ich mir ziemlich sicher, dass es sowohl unter Windows als auch unter Linux so funktioniert, aber das Testen wird es zeigen.)quelle