昨天我问过使用一个exlusive maven存储库,现在我需要使用2,它们都是私有的..所以关于强制maven使用一个存储库的this link解释,我该如何指定第二个存储库让我们看看,我现在在我的pom.xml中有两个这样的存储库,如果两个存储库中缺少某些存储库,它将搜索公共存储库的依赖关系,如何防止这种情况?
<repositories>
<repository>
<id>my-internal-site</id>
<name>our maven repository</name>
<url>http://myserver/repo</url>
</repository>
<repository>
<id>my-other-internal-site</id>
<name>our 2nd maven repository</name>
<url>http://myserver/repo2</url>
</repository>
</repositories>
我需要更改设置xml吗?
<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>our maven repository</name>
<url>http://myserver/repo</url>
<mirrorOf>my-internal-site,my-other-internal-site</mirrorOf>
</mirror>
<mirror>
<id>my-other-internal-site</id>
<name>our 2nd maven repository</name>
<url>http://myserver/repo2</url>
<mirrorOf>my-internal-site,my-other-internal-site</mirrorOf>
</mirror>
</mirrors>
...
</settings>
或以其他方式?
修改
我知道如果我在settings.xml中指定独占的,我不需要在我的pom.xml中设置存储库。我只是说明一点,所以有人可以更好地回答我的问题..谢谢
答案 0 :(得分:4)
您不需要在镜像中复制存储库 - 您所说明的配置只会为给定的mirrorOf
选择一个镜像而无效。
镜像替换已定义的存储库,用于给定ID或ID集合(external:*
等)。如果需要添加存储库,则必须在POM或设置中添加存储库元素。
你可能想要这样的东西:
<settings>
...
<profiles>
<profile>
<id>second-repo</id>
<repositories>
<repository>
<id>second-repo</id>
<url>http://myrepo/second-repo</url>
<!-- add releases / snapshots config as appropriate here -->
</repository>
</repositories>
<!-- duplicate for pluginRepositories here if needed -->
</profile>
</profiles>
<activeProfiles>
<activeProfile>second-repo</activeProfile>
</activeProfiles>
...
<mirrors>
<mirror>
<id>corporate-repo</id>
<url>http://myrepo/my-group</url>
<mirrorOf>external:*,!second-repo</mirrorOf>
</mirror>
</mirrors>
...
</settings>
答案 1 :(得分:2)
我仍然使用:
<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
...
</settings>
将第一个内部存储库添加为“代理存储库”(大多数存储库管理器可以代理存储库)。
但我想知道你为什么要这样做。不能所有项目都使用相同的内部存储库吗?