如何使依赖关系不上传到公司的内部存储库?

时间:2011-09-22 02:47:06

标签: java maven-2 maven

我的pom.xml使用以下代码来定义公司的内部Maven存储库,以便在我的本地存储库中找不到依赖项时,将从此存储库中下载这些依赖项。

<repositories>
            <repository>
               <id>XXXXXX</id>
               <name>Internal Repository</name>
               <url>http://private.ip/nexus-webapp/content/groups/public/</url>
            </repository>
</repositories>

当我在pom.xml中添加一些依赖项时,我发现我添加的依赖项也将添加到该内部存储库中。除了删除<repositories>中的pom.xml部分外,我是否可以配置其属性,以便pom.xml中添加的依赖项不会添加到此内部存储库中?

3 个答案:

答案 0 :(得分:1)

听起来你正在谈论的是Nexus的代理机制。您从Nexus请求工件,它查看工件的已配置外部存储库,在本地缓存它们并将它们返回给您。当然,这假设有问题的存储库配置为通过Nexus代理。如果有人以这种方式进行设置,那你为什么要绕开呢?您可以通过这种方式使用Nexus,因此工件更接近您,您的构建工作更快。你没有发生这种情况的唯一方法是更改​​Nexus中的设置,或者停止使用它。您不必完全从pom中删除repo。只需将其他回购放在前面,Maven将首先查看它们。但是,为什么你不想使用Nexus,因为它被设计为工件的近缓存?

答案 1 :(得分:1)

您需要在存储库软件(Artifactory,Nexus,...)中配置它。

我认为您已在此处设置了代理存储库,可下载所请求的所有工件。您可能希望尝试运行“托管存储库”。更多信息here

Artifactory中的等效概念是“本地存储库”(阅读here)。

答案 2 :(得分:0)

使用以下命令手动下载并安装所需的依赖项。它会将包添加到本地存储库,以便您可以使用它。阅读here

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>