我在我的工作机器上,我们的团队从公司存储库中提取工件。我想拉
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.1</version>
</dependency>
无论出于何种原因,maven都没有搜索任何公共存储库。对于我的POM,我添加了:
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
正如hellboy所建议的,在settings.xml文件中提到了我的公司存储库:
<mirror>
<id>artifactory</id>
<mirrorOf>*</mirrorOf>
<url>http://corporate-network-domain/nexus/content/groups/public</url>
<name>Artifactory</name>
</mirror>
我的理解是,此配置意味着当Maven尝试检索工件时,它将搜索settings.xml文件中指定的存储库,然后搜索POM文件中指定的存储库。有什么我错的吗?
标签&lt; suggestion似乎是http://maven.apache.org/guides/mini/guide-mirror-settings.html mirrorOf&GT;将所有流量引导至企业网络,解决方案如下: {{3}}
然而,我仍在阅读并试图了解该怎么做。下面提供的解决方案表明如何首先搜索企业仓库,然后是下一个公众,将获得奖励!
答案 0 :(得分:1)
检查您的settings.xml中是否有以下行 -
<mirrors>
<mirror>
<id>someid</id>
<name>corporate</name>
<url>corporate repo url</url>
<mirrorOf>external:*,!someid,!someid2</mirrorOf>
</mirror>
</mirrors>
<mirrors>
<mirror>
<id>someid</id>
<name>corporate</name>
<url>corporate repo url</url>
<mirrorOf>external:*,!someid,!someid2</mirrorOf>
</mirror>
</mirrors>
该区块将强制所有搜索到公司回购网站&#34;当它没有找到资源网址中的工件时,如在配置文件someid和someid2
答案 1 :(得分:0)
在我们公司,我们在settings.xml中拥有与您相同的镜像条目。此外,您应该按照Sonatype Nexus Book中的说明添加存储库配置文件。使用该设置,您无需在设置和任何POM中指定任何存储库。
您接下来要做的是在Nexus中配置现有的公共存储库组:
在类型组存储库的配置中,您可以根据需要添加和删除存储库:
显示的存储库是您之前必须添加到Nexus的代理存储库。例如,中央仓库在Nexus安装中作为默认添加。
答案 2 :(得分:0)
settings.xml中的镜像设置说:
获取每个存储库的每个URL并将其替换为镜像,因此没有请求离开您的公司。这通常是应该的。如果您真的想绕过工件存储库,则可以排除某些存储库:
<mirror>
<id>artifactory</id>
<mirrorOf>external:*,!java.net</mirrorOf>
<url>http://corporate-network-domain/nexus/content/groups/public</url>
<name>Artifactory</name>
</mirror>
(顺便说一句,你应该使用external:*
而不是*
,因为后者可能会在集成测试中引入一些难以追踪的效果)
请注意,这可能违反公司惯例。通常有一个原因是不允许“在野外”直接访问存储库。
正如Seelenvirtuose建议的那样,更好的方法是请求您的神器管理员将java.net存储库包含在您的神器的代理存储库中。