Установить .m2 для одного задания сборки в другое местоположение

#java #maven

#java #maven

Вопрос:

Для задания на сборку на сервере сборки я хочу установить .m2 местоположение, отличное от user.home/.m2 .

Я думал, что смогу обмануть maven, установив export HOME=$WORKSPACE для сборки, но артефакты продолжали загружаться и развертываться в домашнем каталоге пользователя сборки.

Поэтому я думаю, что maven использует user.home системное свойство, которое, похоже, не принимает $HOME во внимание.

Есть ли решение для этого? У нас есть локальный кэш maven, и я действительно хочу загрузить все артефакты для этого задания сборки и предотвратить любое развертывание в пользовательской сборке $HOME/.m2 , чтобы отделить отдельные задания сборки друг от друга. По крайней мере, я хочу этого для некоторых заданий.

Есть идеи? Заранее спасибо!

Ответ №1:

Вы можете переопределить расположение settings.xml файл из командной строки…

 mvn <target> --settings /path/to/settings.xml
  

Отсюда вы можете настроить все, что вам понадобится.

[обновить] Вы даже можете переопределить «глобальные» настройки, которые обычно объединяются с пользовательскими settings.xml сформируйте их каталог .m2 с помощью --global-settings /path/to/global/settings.xml

Комментарии:

1. Могу ли я как-то установить это через переменную среды? Если возможно, я хотел бы настроить сценарии сборки без фактического изменения файлов сборки. Но это было бы просто приятно иметь. 🙂

2. @Martin C.: Я не знаю, как вы запускаете скрипты сборки, поэтому я не могу сказать.

3. Большая часть этого выполняется с помощью сценариев оболочки на сервере Jenkins, поскольку для тех, где я хотел бы изменить местоположение .m2, необходимы дополнительные этапы предварительной обработки. Некоторые из них являются заданиями buildr, некоторые — заданиями Gradle. Buildr настраивается в этом отношении, но Gradle, как кажется, использует maven по умолчанию.

4. Я не знаю об этом напрямую; возможно, вы могли бы задать новый вопрос относительно Gradle и сослаться на этот вопрос.

Ответ №2:

Если вы просто хотите указать свой собственный локальный репозиторий, вы можете использовать опцию maven.repo.local :

 -Dmaven.repo.local=/path/to/your/repository
  

Ресурсы :

  • maven.apache.org (на веб-сайте maven-1.x, но все еще работает с maven 3.0 — не могу найти надежный источник для этой версии, хотя)