Maven仓库镜像

18

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

<mirror>
  <id>internal-repository</id>
  <url>http://build.idaho.local/wtp_repository</url>
  <mirrorOf>*</mirrorOf>
</mirror>

我的理解是这个镜像阻止了Maven从互联网下载依赖,即它只会在内部仓库中寻找。

然而,每当我想添加一个不在这个内部仓库中的依赖时,我必须注释掉上面的文本,并将以下内容添加到项目的pom.xml中。

<repository>
  <id>internal-repository</id>
  <url>http://build.idaho.local/wtp_repository</url>
</repository>
当我进行这些更改时,Maven将在本地库中检查依赖项,如果找不到,则从互联网下载它们到本地库。一旦我拥有所需的依赖项,我就将配置改回原样。
是否有一种方法可以实现我的要求 - 始终首先检查内部库,然后是公共(互联网)库 - 而无需在每个项目的pom.xml中添加?
理想情况下,我希望在settings.xml中仅指定一次此存储库,但似乎您只能在那里配置镜像。
5个回答

15

你可以尝试配置Maven,仅将其用于中央仓库,或者排除某个ID标识的仓库。

<mirror>
    <id>internal-mirror</id>
    <url>http://build.idaho.local/wtp_repository</url>
   <mirrorOf>central</mirrorOf>
</mirror>

或者

<mirror>
    <id>internal-mirror</id>
    <url>http://build.idaho.local/wtp_repository</url>
   <mirrorOf>*,!internal-repository</mirrorOf>
</mirror>

这些示例是从Maven设置镜像设置指南中改编而来的。


2
这个问题很老了,但无论如何:
在您的settings.xml中放置一个,使用元素指定您的内部存储库。
...
    <profile>
        <id>devel-repos</id>

        <repositories>
            <repository>
                <id>repo-release</id>
                <url>http://repohost:repoport/path/to/release/repo</url>
            </repository>
            <repository>
                <id>repo-snapshot</id>
                <url>http://repohost:repoport/path/to/snapshot/repo</url>
            </repository>
        </repositories>
    </profile>
...

然后将上述配置设置为 <activeProfile>。这将激活该配置文件的每个Maven调用。

...
<activeProfiles>
    <activeProfile>devel-repos</activeProfile>
</activeProfiles>
...

这并不能避免多个仓库定义,但它给你最重要的东西:一切都集中在 settings.xml 中,而且你的 pom.xml 都是干净的(且可移植的)。


1

看起来您可能没有正确配置或使用镜像。

理想情况下,您指定的镜像应该是一个仓库管理器,它应该透明地从互联网上的各个仓库下载所需的依赖项并缓存它,从而允许后续的下载从镜像进行。


0

在超级POM中添加仓库部分,并让所有项目都从超级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>

这样你就可以在一个pom文件中只有存储库部分,那就是你的超级pom。你还可以在这里添加所有项目都通用的任何依赖项,例如junit、log4j等。

在你的settings.xml文件中,你可以添加这个来配置你的本地存储库。

<localRepository>C:/myBox/maven.repo</localRepository>

0
settings.xml中删除镜像设置并放置以下代码对我有用。
<profiles>
    <profile>
        <id>profile-1</id>
        <repositories>
            <repository>
                <id>internal-repository-1</id>
                <url>http://build.idaho.local/wtp_repository</url>
            </repository>
        </repositories>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>profile-1</activeProfile>
</activeProfiles>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接