Nexus/Artifactory可以存储互联网Maven工件的副本吗?

Bun*_*num 4 maven-2 netbeans repository nexus artifactory

我想让Nexus(或Artifactory,我们尚未决定)在从互联网上的公共存储库(如Maven Central)下载工件时存储工件的副本.

基本上,如果你的本地仓库中没有jar并且repo管理器也没有它,我想向repo manager询问jar,让它发送给我,并将它们存储在repo中经理和我当地的回购.然后,当另一个人要求回购经理提供同一个罐子时,它会从回购经理发送给他们并将它们保存在他们的本地仓库中,而不需要点击Maven central.

这听起来像应该如何开箱即用,但我没有看到它.我可以通过repo管理器在Maven中心看到工件,但是当我使用Netbeans为我的项目添加依赖项时,它会直接从Maven中心下载(显然).在repo管理器中没有任何东西被缓存(据我所知).

Ric*_*ler 5

Nexus具有代理存储库的概念,几乎完全符合您的描述.有关详细信息,请参阅本书的" 代理公共存储库"部分.

Artifactory具有类似的功能,称为虚拟存储库.

代理和缓存远程公共存储库可以通过减少公共Internet上的冗余下载来加速构建.如果组织中的开发人员需要下载Spring Framework 2.5版并且您正在使用Nexus,则只需要从远程存储库下载一次依赖项(以及依赖项的依赖项).通过高速连接到Internet,这似乎是一个小问题,但如果您不断要求开发人员下载数百兆的第三方依赖项,那么实际节省的成本将是Maven需要的时间.检查新版本的依赖项并通过公共Internet下载依赖项.

您可以通过将存储库管理器设置为中央镜像来阻止Maven安装尝试连接到Central,然后将对Central的请求定向到您的存储库管理器.例如,将以下内容添加到<mirrors>Maven的settings.xml部分,以将请求重定向到您的存储库管理器的中央:

<mirror>
  <id>central-proxy</id>
  <mirrorOf>central</mirrorOf>
  <url>http://myrepo/nexus/content/groups/public</url>
</mirror>
Run Code Online (Sandbox Code Playgroud)

我倾向于设置一个包含多个远程存储库的存储库组.就我的Maven安装而言,该组充当单个存储库,但整理来自多个远程存储库的工件.