指定Maven的本地存储库位置作为CLI参数
是否有可能在Maven命令行上将本地Maven存储库的位置设置为参数?
问题是我不使用~/.m2/repository
的缺省值。 不过,我用-s settings.xml
检出了一些正在使用自己的设置构build的项目。 这个settings.xml没有指定我的本地仓库,所以Maven再次使用~/.m2/repository
…我想使用一个非默认的本地仓库位置而不必在项目中添加一个<localRepository>
元素的settings.xml
我试过了
-
-DlocalRepository="..."
-
$mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
-
-Dsettings.localRepository
但这些选项都不起作用。
所以我想我必须决定是否要修改第三方settings.xml或将我的本地回购到~
使用maven属性maven.repo.local
:
mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
不需要修改settings.xml。
一种可行的方法是:
- 将
<localRepository>${m2.localRepository}</localRepository>
到您的settings.xml中 - 在您的mvn.sh或mvn.bat中,在执行命令中的“$ @” 之前 ,添加
-Dm2.localRepository=<full path to home dir>/.m2/repository
。 这将使您的默认本地回购留在应该的地方。 - 现在你可以使用
mvn -Dm2.localRepository=... <phases/goals>
。 因为你的命令行系统属性被添加到mvn脚本之后的命令行中,所以它将优先。 (至less我很确定它在Windows和Linux上都能这样工作,但是testing会告诉你。
对于git:
alias mvn='mvn -Dmaven.repo.local=`git rev-parse --show-toplevel`/.m2/repository'
这在每个git仓库中使用一个单独的maven仓库