Maven从公司回购而不是公开回购

时间:2014-03-28 07:59:30

标签: java maven

我在我的工作机器上,我们的团队从公司存储库中提取工件。我想拉

<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}}

然而,我仍在阅读并试图了解该怎么做。下面提供的解决方案表明如何首先搜索企业仓库,然后是下一个公众,将获得奖励!

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中配置现有的公共存储库组:

enter image description here

在类型组存储库的配置中,您可以根据需要添加和删除存储库:

enter image description here

显示的存储库是您之前必须添加到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存储库包含在您的神器的代理存储库中。