maven: Чи можна замінити розташування локального сховища за допомогою опції командного рядка або змінної env?


76

В даний час ми вказуємо розташування локального сховища в settings.xml. Чи можна замінити це налаштування за допомогою командного рядка або змінної env, так що я іноді можу використовувати альтернативне розташування?



Мені не спало на думку, чому це було б корисно до цих пір - якщо ви працюєте над декількома гілками (гілка випуску, гілка магістралі), а дерево джерела є складним, спроба змусити компіляцію працювати може бути кошмаром, якщо ви просто використовуєте 1.0-SNAPSHOTяк свою версію. Маючи окремі репозиторії .m2 багато цього обходить.
Шрідхар Сарнобат

Відповіді:


135

Для цього вам потрібно буде вказати maven.repo.localпараметр.

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

Ось відповідне запитання SO.


4
Локальне сховище має бути абсолютним шляхом, maven.apache.org/guides/mini/guide-configuring-maven.html .
luka5z

@ luka5z: Дякую за важливий документ ref, але я можу сказати з досвідом, що шлях може бути відносним --define maven.repo.local=local/repo/here. Можливо, абсолютні шляхи потрібні лише для settings.xml?
kevinarpe

@Raghuram: бездоганна відповідь
Гаурав,

17

Використовуйте параметр localRepository у файлі settings.xml. Приклад:

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

Дивіться тут для отримання додаткової інформації.

Ви також можете встановити сховище через командний рядок, використовуючи "-Dmaven.repo.local =", наприклад:

mvn -U clean install -Dmaven.repo.local=C:\tmp

1
Ми це вже зробили в наших налаштуваннях.xml. Я хочу замінити це, коли я викликаю maven у оболонці
Ентоні Конг

1
Якщо maven використовує цей параметр.xml, навіть коли ви викликаєте його з оболонки, він повинен вибрати це налаштування. Для користувачів Windows дуже часто потрібно встановлювати це через пробіли в домашньому каталозі "c: \ documents and settings \ blah"
Майкл

1
Щойно провів тест за допомогою "<localRepository> / Users / michael / Desktop / repository </localRepository>" у моєму файлі settings.xml. І зараз, коли я будую щось із командного рядка (або ide), він поміщає туди артефакти.
Майкл

1
Вибачте, неправильно прочитав ваше запитання. Відповідь вище є правильною. Ви можете використовувати параметр "-Dmaven.repo.local = / alternate / repo / location" в командах.
Майкл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.