【问题标题】:Set the maven local repository location in a pom.xml file?在 pom.xml 文件中设置 Maven 本地存储库位置?
【发布时间】:2018-08-04 14:37:48
【问题描述】:

可以在settings.xml中设置maven本地仓库:

<localRepository>${user.home}/.m2/repository</localRepository>

并且可以在命令行设置maven本地仓库:

mvn clean install -Dmaven.repo.local=repository

是否可以在 pom.xml 本身中指定?

注意:我想在 pom.xml 中指定 maven 最初搜索工件的位置(默认情况下,~/.m2/repository)以及 maven 通过 mvn install 安装工件的位置(默认情况下,~/.m2/repository )。

【问题讨论】:

  • 第一个例子正是默认使用的。如果你喜欢你也可以使用第二个给位置的参数......并回答你的问题:不,不可能在 pom 文件中定义本地缓存的位置..问题是你为什么要想换吗?
  • 不,问题是如何改变它 - 为什么不相关:)
  • 了解你的动机很重要,当然也可以了解你想要做什么或想要解决什么样的问题。这会有所帮助,如果我知道原因,也许我可以为您的问题提出更好的解决方案。但是如果你不喜欢被帮助好吧..这取决于你....

标签: java maven


【解决方案1】:

根据Maven POM ReferenceGuide to using multiple repositories,你也可以在pom.xml指定仓库。

您可以通过两种不同的方式指定使用多个存储库。第一种方法是在 POM 中指定要使用的存储库

并且根据Introduction to repositories,可以在&lt;url&gt;中使用file://协议。

远程存储库是指任何其他类型的存储库,可通过各种协议访问,例如 file:// 和 http://。

所以下面的工作:

<project>
  ...
  <repositories>
    <repository>
      <id>example-repo</id>
      <name>Example Repository</name>
      <url>file://path/to/your/local/repository</url>
    </repository>
  </repositories>
</project>

编辑:

根据您的评论和编辑,您需要覆盖pom.xml 中的默认存储库和 Maven 主目录。

我找到了topic about disabling central repository,并尝试了答案,但 Maven 仍然使用来自settings.xml 的值。 This answer 在另一个线程中解释了原因:

settings.xml 允许您覆盖pom.xml 中的定义,而不是相反。

因此,似乎无法覆盖 pom.xml 的默认机制,Maven 将在 settings.xml 中配置的存储库中搜索依赖项,并将安装到该文件中指定的 Maven 主页。

【讨论】:

  • 即使设置了如上的存储库,默认情况下,maven 仍然会从~/.m2/repository 下载工件并将工件安装到 - IIRC,上面只是指定了要下载的备份和要部署的目标到。我希望更改 - 在 pom.xml 中 - 系统最初搜索工件并用作 mvn install 命令的目的地。
  • @juzraai 存储库的定义与本地缓存的定义无关,除了在文件基础上定义存储库没有意义......
【解决方案2】:

如果问题是每次运行 maven 时都必须编写选项,您可以使用自 3.3.1 版开始提供的功能,该功能允许您在项目(或模块的父项目)中设置命令行选项。阅读@Brice 的回答:https://stackoverflow.com/a/48583079

因此,考虑到此功能,您可以通过设置一个新的settings.xml 来获得类似的结果,其中&lt;localRepository&gt; 指向您想要的位置并在您的项目中使用maven.config 以使maven 使用新的@ 987654325@,顺便说一句,您可以在任何地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 2012-11-09
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多