将Maven的本地存储库位置指定为CLI参数

时间:2011-07-25 23:03:19

标签: maven

是否可以在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或将我的本地仓库移到~

3 个答案:

答案 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方式是:

  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脚本中的命令行之后,所以它将优先。 (至少我很确定它在Windows和Linux上都能正常工作,但测试会证明。)