是否可以在Maven命令行上将本地Maven存储库的位置设置为参数?
问题是我没有使用~/.m2/repository
中的默认值。但是我检查了一些使用-s settings.xml
自己的设置构建的项目。那个settings.xml没有指定我的本地存储库,所以Maven再次使用~/.m2/repository
...我想使用非默认的本地存储库位置而不必在其中添加<localRepository>
元素project的settings.xml
我试过
-DlocalRepository="..."
$mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
-Dsettings.localRepository
但这些选项都不起作用。
所以我想我必须决定是否要修改第三方settings.xml或将我的本地仓库移到~
答案 0 :(得分:209)
使用maven属性maven.repo.local
:
mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
不需要修改settings.xml。
答案 1 :(得分:5)
对于git:
alias mvn='mvn -Dmaven.repo.local=`git rev-parse --show-toplevel`/.m2/repository'
这在每个git存储库中使用单独的maven存储库
答案 2 :(得分:2)
一种可行的hacky方式是:
<localRepository>${m2.localRepository}</localRepository>
添加到您的settings.xml -Dm2.localRepository=<full path to home dir>/.m2/repository
“$ @”。这将使您的默认本地仓库停留在应有的位置。mvn -Dm2.localRepository=... <phases/goals>
。因为命令行系统属性被添加到mvn脚本中的命令行之后,所以它将优先。 (至少我很确定它在Windows和Linux上都能正常工作,但测试会证明。)