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

是否可以在 Maven 命令行上将本地 Maven 存储库的位置设置为参数?

问题是我不使用 ~/.m2/repository中的默认值。然而,我检查了一些项目,正在建立与自己的设置与 -s settings.xml。Xml 没有指定我的本地存储库,所以 Maven 再次使用了 ~/.m2/repository... 我希望使用一个非默认的本地存储库位置,而不必在项目的 setings.xml 中添加 <localRepository>元素

我试过了

  • -DlocalRepository="..."
  • $mvn invoker:run -s settings.xml clean install -DskipTests -DlocalRepositoryPath=
  • -Dsettings.localRepository

但这些方法都不管用。

因此,我认为我必须决定是修改第三方 setings.xml 还是将我的本地回购协议移动到 ~

106380 次浏览

一种可行的方法是:

  1. <localRepository>${m2.localRepository}</localRepository>添加到 setings.xml
  2. 在 mvn.sh 或 mvn.bat 中,在执行的命令中添加 -Dm2.localRepository=<full path to home dir>/.m2/repository 之前中的“ $@”。这将使您的默认本地回购停留在它应该在的地方。
  3. 现在可以使用 mvn -Dm2.localRepository=... <phases/goals>了。因为您的命令行系统属性被添加到命令行中 mvn 脚本中的命令行之后,所以它将具有优先权。(至少我很确定它在 windows 和 linux 上都是这样工作的,但是测试会告诉我们答案。)

使用 maven 属性 maven.repo.local:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

不需要对 settings.xml进行任何修改。

给饭桶的:

alias mvn='mvn "-Dmaven.repo.local=$(git rev-parse --show-toplevel)/.m2/repository"'

这在每个 git 存储库中使用一个单独的 maven 存储库