指定Maven';s本地存储库位置作为CLI参数
是否可以将本地Maven存储库的位置设置为Maven命令行上的参数 问题是我没有使用指定Maven';s本地存储库位置作为CLI参数,maven,Maven,是否可以将本地Maven存储库的位置设置为Maven命令行上的参数 问题是我没有使用~/.m2/存储库中的默认值。然而,我用-s settings.xml检查了一些正在使用自己的设置构建的项目。settings.xml没有指定我的本地存储库,因此Maven再次使用~/.m2/repository。。。我希望使用非默认的本地存储库位置,而不必在项目的settings.xml中添加元素 我试过了 -DlocalRepository=“…” $mvn调用程序:run-s settings.xml c
~/.m2/存储库
中的默认值。然而,我用-s settings.xml
检查了一些正在使用自己的设置构建的项目。settings.xml没有指定我的本地存储库,因此Maven再次使用~/.m2/repository
。。。我希望使用非默认的本地存储库位置,而不必在项目的settings.xml中添加
元素
我试过了
-DlocalRepository=“…”
$mvn调用程序:run-s settings.xml clean install-DskipTests-DlocalRepositoryPath=
-Dsettings.localRepository
因此,我想我必须决定是修改第三方settings.xml还是将我的本地回购移动到
~
一种可行的黑客方法是:
${m2.localRepository}
添加到settings.xml-Dm2.localRepository=/.m2/repository
。这将使您的默认本地回购协议保持不变mvn-Dm2.localRepository=代码>。由于命令行系统属性在mvn脚本中添加到命令行之后添加到命令行,因此它将优先。(至少我很确定它在windows和linux上都是这样工作的,但测试会告诉我们。)
使用maven属性
maven.repo.local
:
mvn-Dmaven.repo.local=$HOME/.my/other/repository clean install
无需修改设置。xml
。对于git:
alias mvn='mvn "-Dmaven.repo.local=$(git rev-parse --show-toplevel)/.m2/repository"'
这在每个git存储库中使用一个单独的maven存储库,这没有帮助,我在mvn脚本的“$@”之前添加了-Dm2.localRepository=“custom”,仍然使用~/.m2/repository。。。然后我还包括了-Dm2.localRepository=“custom”,在运行$mvn时,仍然使用~/.m2/repository…只是在settings.xml中没有localRepository元素,无法更改it@lisak:是否执行了将localRepository元素添加到settings.xml的步骤1?我对此进行了测试,它可以正常工作,只是您不能在mvn脚本中实际使用“~”别名。你必须输入一个绝对路径,尽管你可能会做一些其他的shell/batch脚本技巧来绕过它。它是有效的,但我真的没有解释。。。如果我在$M2_HOME/conf/settings.xml中声明localRepository而不执行步骤2,它将被-s settings.xml覆盖,并且不起作用,但在步骤2中它可以工作。。。但是只有在$M2_HOME/conf/settings.xml中没有localRepository的步骤2不起作用。。。这两个步骤1,2都必须应用,我甚至可以通过$mvn-Dm2.localRepository=。。很明显这不是你的错,但是Maven项目不应该提供
settings.xml
。请参阅本地存储库必须是绝对路径。在Windows上使用`mvn-D“maven.repo.local”=%USER\u HOME%/.my/other/repository clean install`我可以设置一个环境变量来实现相同的目标吗?@pound366否,AFAIKUsing maven-3.6.3本地存储库目录作为相对路径工作(至少在MacOS上)