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