指定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。

一种可行的方法是:

  1. <localRepository>${m2.localRepository}</localRepository>到您的settings.xml中
  2. 在您的mvn.sh或mvn.bat中,在执行命令中的“$ @” 之前 ,添加-Dm2.localRepository=<full path to home dir>/.m2/repository 。 这将使您的默认本地回购留在应该的地方。
  3. 现在你可以使用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仓库