Czy można ustawić lokalizację lokalnego repozytorium Maven jako argument w wierszu poleceń Maven?
Chodzi o to, że nie używam domyślnego w ~/.m2/repository
. Jednak sprawdziłem projekt, który jest budowany z własnymi ustawieniami z -s settings.xml
. To settings.xml nie określa mojego lokalnego repozytorium, więc Maven używa ~/.m2/repository
ponownie ... Chciałbym użyć innej niż domyślna lokalizacji lokalnego repozytorium bez konieczności dodawania <localRepository>
elementu w ustawieniach projektu.xml
próbowałem
-DlocalRepository="..."
$mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
-Dsettings.localRepository
ale żadna z tych opcji nie działa.
Myślę więc, że muszę zdecydować, czy zmodyfikuję plik settings.xml innej firmy, czy przeniosę lokalne repozytorium do ~
settings.xml
. Zobacz maven.apache.org/guides/mini/guide-configuring-maven.htmlOdpowiedzi:
użyj własności maven
maven.repo.local
:mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
Żadne modyfikacje nie
settings.xml
są konieczne.źródło
Dla git:
Używa to osobnego repozytorium maven w każdym repozytorium git
źródło
Jednym ze sposobów, które by zadziałały, jest:
<localRepository>${m2.localRepository}</localRepository>
do pliku settings.xml-Dm2.localRepository=<full path to home dir>/.m2/repository
przed „$ @” w poleceniu, które zostanie wykonane. Spowoduje to, że domyślne repozytorium lokalne pozostanie tam, gdzie powinno.mvn -Dm2.localRepository=... <phases/goals>
. Ponieważ właściwość systemu wiersza poleceń zostanie dodana do wiersza poleceń po tej w skrypcie mvn, będzie miała pierwszeństwo. (Przynajmniej jestem prawie pewien, że działa w ten sposób zarówno w systemie Windows, jak i Linux, ale testy pokażą).źródło