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

dre*_*rew 9 java maven

可以在 settings.xml 中设置 Maven 本地存储库:

<localRepository>${user.home}/.m2/repository</localRepository>
Run Code Online (Sandbox Code Playgroud)

并且可以在命令行上设置 maven 本地存储库:

mvn clean install -Dmaven.repo.local=repository
Run Code Online (Sandbox Code Playgroud)

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

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

juz*_*aai 9

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

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

根据存储库介绍,您可以file://<url>.

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

所以以下工作:

<project>
  ...
  <repositories>
    <repository>
      <id>example-repo</id>
      <name>Example Repository</name>
      <url>file://path/to/your/local/repository</url>
    </repository>
  </repositories>
</project>
Run Code Online (Sandbox Code Playgroud)

编辑:

根据您的评论和编辑,您需要覆盖pom.xml.

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

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

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

  • 即使设置了上述存储库,默认情况下,maven 仍会从“~/.m2/repository”下载工件并将工件安装到“~/.m2/repository” - IIRC,上面只是指定了要从中下载的备份和要部署到的目标。我希望在 pom.xml 中进行更改,系统最初搜索工件并用作“mvn install”命令的目标。 (3认同)