Ответ 1
Использовать свойство maven maven.repo.local
:
mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
Никаких изменений в settings.xml не требуется.
Можно ли установить расположение локального репозитория Maven в качестве аргумента в командной строке Maven?
Дело в том, что я не использую значение по умолчанию в ~/.m2/repository
. Однако я проверил некоторый проект, который строится со своими настройками с помощью -s settings.xml
. Этот параметр settings.xml не указывает мой локальный репозиторий, поэтому Maven использует снова использование ~/.m2/repository
... Я хотел бы использовать локальное местоположение репозитория не по умолчанию, не добавляя элемент <localRepository>
в settings.xml проекта.
Я пробовал
-DlocalRepository="..."
$mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
-Dsettings.localRepository
но ни один из этих параметров не работает.
Итак, я думаю, что я должен решить, буду ли я модифицировать сторонний параметр .xml или переместить свое местное репо на ~
Использовать свойство maven maven.repo.local
:
mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
Никаких изменений в settings.xml не требуется.
Для мерзавца:
alias mvn='mvn "-Dmaven.repo.local=$(git rev-parse --show-toplevel)/.m2/repository"'
Это использует отдельный репозиторий maven в каждом репозитории git
Один из хакеров, который будет работать:
<localRepository>${m2.localRepository}</localRepository>
в ваши settings.xml-Dm2.localRepository=<full path to home dir>/.m2/repository
перед "$ @" в команде, которая будет выполнена. Это сделает ваше местное репо по умолчанию, где оно должно быть.mvn -Dm2.localRepository=... <phases/goals>
. Поскольку ваше системное свойство командной строки добавляется в командную строку после той, что находится в mvn script, это будет иметь приоритет. (По крайней мере, я уверен, что он работает именно так на обоих окнах и в Linux, но тестирование покажет.)