maven:是否可以通过使用命令行选项或env变量来覆盖本地存储库的位置?


76

当前,我们在settings.xml中指定本地存储库的位置。是否可以通过命令行或env变量覆盖此设置,以便有时可以使用其他位置?



直到现在我还没有想到为什么这会有用-如果您正在使用多个分支(发行分支,主干分支)并且源代码树很复杂,那么尝试使编译工作可能是一场噩梦。您只是使用1.0-SNAPSHOT您的版本。使用单独的.m2仓库可以避免很多此类情况。
Sridhar Sarnobat,

Answers:


134

您需要指定 maven.repo.local参数才能执行此操作。

mvn package -Dmaven.repo.local=/alternate/repo/location

是一个相关的SO问题。


4
本地存储库必须是绝对路径,maven.apache.org/guides/mini/guide-configuring-maven.html
luka5z

@ luka5z:感谢您提供重要的文档参考资料,但是我可以凭经验说该路径可以是相对的--define maven.repo.local=local/repo/here。也许只需要绝对路径settings.xml
kevinarpe

@Raghuram:完美的答案
Gaurav

17

在settings.xml文件中使用localRepository设置。例:

<settings>
  <localRepository>/repo</localRepository>
  ...
</settings>

有关更多信息,请参见此处

您也可以使用“ -Dmaven.repo.local =”通过命令行设置存储库,例如:

mvn -U clean install -Dmaven.repo.local=C:\tmp

1
我们已经在settings.xml中完成了它。当我在外壳中调用Maven时,我想覆盖它
Anthony Kong

1
如果maven正在使用该settings.xml,即使从shell调用它,它也应该选择该设置。Windows用户由于其主目录“ c:\ documents and settings \ blah”中的空格而需要对其进行设置,这很常见
Michael

1
只需在settings.xml文件中使用“ <localRepository> / Users / michael / Desktop / repository </ localRepository>”进行测试。现在,当我从命令行(或ide)构建任何东西时,都会把工件放在那里。
迈克尔

1
不好意思,看错了你的问题。上面的答案是正确的。您可以在命令上使用“ -Dmaven.repo.local = / alternate / repo / location”选项。
Michael
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.