maven存储库镜像

Dón*_*nal 15 maven-2

通常,我在Maven中配置了以下镜像 settings.xml

<mirror>
  <id>internal-repository</id>
  <url>http://build.idaho.local/wtp_repository</url>
  <mirrorOf>*</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)

我的理解是这个镜像阻止了Maven从互联网上下载依赖关系,即它只会在这个内部存储库中查找它们.

但是,每当我想要添加不在此内部存储库中的依赖项时,我必须注释掉上面的文本并将以下内容添加到项目中 pom.xml

<repository>
  <id>internal-repository</id>
  <url>http://build.idaho.local/wtp_repository</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

当我进行这些更改时,Maven将检查本地仓库中的依赖项,如果没有找到,则将它们从Internet下载到本地仓库.一旦我拥有了我需要的依赖项,我就会改回配置.

有没有办法获得我想要的行为 - 总是检查内部仓库,然后检查公共(互联网)回购 - 而不必添加<repository>到每个项目的pom.xml

理想情况下,我想在settings.xml此处指定此存储库,但似乎您只能在那里配置镜像.

Jör*_*ann 14

您可以尝试将maven配置为仅将镜像用于中央存储库,或者排除由某个ID标识的存储库.

<mirror>
    <id>internal-mirror</id>
    <url>http://build.idaho.local/wtp_repository</url>
   <mirrorOf>central</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)

要么

<mirror>
    <id>internal-mirror</id>
    <url>http://build.idaho.local/wtp_repository</url>
   <mirrorOf>*,!internal-repository</mirrorOf>
</mirror>
Run Code Online (Sandbox Code Playgroud)

这些示例是根据maven设置镜像设置指南进行调整的.


Van*_*ran 0

将存储库部分添加到 super pom.xml 中。并让所有的项目都从super pom延伸出来。

因此,每个其他项目 pom 都会有一个父部分从超级 pom 扩展,如下所示。

<parent>
    <groupId>com.ddd.ddd.ddd</groupId>
    <artifactId>ddd-ddd-parent</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <relativePath>./config/superpom/pom.xml</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)

这样你就可以只在一个 pom 文件中包含存储库部分,这就是你的超级 pom。您还可以在此处添加所有项目共有的任何依赖项,例如 junit、log4j 等。

在您的 settings.xml 文件中。您可以添加它来配置您的本地存储库。

<localRepository>C:/myBox/maven.repo</localRepository>
Run Code Online (Sandbox Code Playgroud)