2011-09-22 23 views
0

我的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添加一些依赖,我发现我添加的依赖也将被添加到内部存储库。除了在pom.xml中删除<repositories>部分,我可以配置其属性,以便pom.xml中添加的依赖项不会被添加到此内部存储库中吗?

回答

1

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

+0

因为我想先下载一些jar到我的本地仓库进行测试。一旦我确认在项目中使用它们,我将上传到该内部仓库以防止它有许多未使用的罐子。 –

+0

最初,我认为内部存储库就像共享驱动器一样存储一些jar文件,以加快开发人员更快地下载必要的jar文件。这个内部仓库中的罐子需要由仓库管理员手动上传。但是从你的评论中,内部仓库实际上是一个代理。如果指定了pom.xml中的部分,所有的请求都会被发送出去并返回罐子将通过这些存储库。 –

+0

因此,如果我不想将jar添加到内部存储库中,唯一的方法是不使用代理,方法是删除pom.xml中的<部分或配置内部存储库的服务器端设置, 对? –

0

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

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

您需要在存储库软件(Artifactory,Nexus,...)中对其进行配置。

我想你已经在这里建立了一个代理仓库,下载每一个需要的人工制品。您可能想尝试运行“托管存储库”。更多信息here

Artifactory中的等效概念是'本地资源库'(读取here)。

+0

托管的存储库只是一个“正常”的maven回购。这无助于从第三方回购中获取文物。 –

+0

这正是他们不想发生的事情(正如我从问题中可以理解的那样)。他们不希望将依赖关系下载到其内部存储库中,只能将它用作放置公司内部文物的地方。 – n0rm1e

相关问题