【问题标题】:maven: Is it possible to override location of local repository via the use of command line option or env variable?maven:是否可以通过使用命令行选项或环境变量来覆盖本地存储库的位置?
【发布时间】:2012-02-25 17:42:08
【问题描述】:

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

【问题讨论】:

  • 直到现在我才想到为什么这会有用 - 如果您正在处理多个分支(一个发布分支,一个主干分支)并且源代码树很复杂,试图获得如果您只是使用1.0-SNAPSHOT 作为您的版本,那么编译工作可能是一场噩梦。拥有单独的 .m2 存储库可以避免很多这种情况。

标签: maven maven-2


【解决方案1】:

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

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

请参阅here 了解更多信息。

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

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

【讨论】:

  • 我们已经在 settings.xml 中完成了。我想在 shell 中调用 maven 时覆盖它
  • 如果 maven 正在使用该 settings.xml,即使您从 shell 调用它,它也应该获取该设置。由于主目录“c:\documents and settings\blah”中的空格,Windows 用户需要进行设置是很常见的
  • 刚刚在我的 settings.xml 文件中使用“/Users/michael/Desktop/repository”进行了测试。现在,当我从命令行(或 ide)构建任何东西时,它会将工件放在那里。
  • 抱歉,误读了您的问题。上面的答案是正确的。您可以在命令中使用“-Dmaven.repo.local=/alternate/repo/location”选项。
【解决方案2】:

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

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

Here 是一个相关的 SO 问题。

【讨论】:

  • 本地仓库必须是绝对路径,maven.apache.org/guides/mini/guide-configuring-maven.html
  • @luka5z:感谢重要的文档参考,但我可以根据经验说路径可以是相对于--define maven.repo.local=local/repo/here。也许只有settings.xml 需要绝对路径?
  • @Raghuram:完美答案
猜你喜欢
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 2011-12-05
  • 2011-04-02
相关资源
最近更新 更多