繁体   English   中英

在 pom.xml 文件中设置 Maven 本地存储库位置?

[英]Set the maven local repository location in a pom.xml file?

可以在 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 )。

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

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

根据Introduction to repositories ,您可以在<url>使用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 主目录。

我找到了一个关于禁用中央存储库主题,并尝试了答案,但 Maven 仍然使用settings.xml的值。 另一个线程中的这个答案解释了原因:

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

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

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

因此,考虑到此功能,您可以通过设置一个新的settings.xml来实现类似的结果,其中<localRepository>指向您想要的位置,并在您的项目中使用maven.config使 maven 使用新的settings.xml ,顺便说一下,它可以在你想要的任何地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM