为什么Sonatype文档建议在使用mirrorOf时在settings.xml中使用伪造的URL重新定义中央存储库?

时间:2011-08-31 22:09:20

标签: maven nexus

根据Maven documentation

  

您可以通过让Maven镜像所有存储库请求来强制Maven使用单个存储库。存储库必须包含所有所需的工件,或者能够将请求代理到其他存储库。当使用内部公司存储库和Maven Repository Manager代理外部请求时,此设置最有用。

     

要实现此目的,请将mirrorOf设置为*。

This StackOverflow question还建议设置mirrorOf足以阻止外部存储库,那么为什么Sonatype documentation建议使用无法访问的网址重载central

3 个答案:

答案 0 :(得分:4)

虚假URL真的无关紧要 - 您可以根据需要将其设置为原始URL,或者您的存储库管理器的URL - 只要mirrorOf适用,就不会使用它。

这些示例重新定义central的原因是将工件请求的策略设置为默认存储库。默认情况下,Maven不会将快照请求启用到中央,并使用默认的更新和校验和策略。重新声明central允许覆盖这些 - 在这种情况下,启用快照工件和插件,然后镜像将所有这些重定向到存储库管理器。这样就无需在POM中声明存储库(只要所有用户的设置都正确)。

答案 1 :(得分:2)

我写了这个,所以我可以告诉你我在想什么; - )

需要更新中央存储库定义以便为至少一个存储库启用快照检索,否则Maven甚至不会向存储库管理器(由mirrorOf指向)请求任何快照。

虽然不是必需的,但我喜欢将url的定义更改为无效的,所以如果系统中的其他位置存在配置错误,则会立即显示正在发生的事情。否则,Maven仍然可以联系中心并掩盖问题。它本质上是一种快速失败的设置。

There's more information on this topic in an old blog I wrote

答案 2 :(得分:0)

maven需要项目dependencies 本地才能运行。它不关心它是如何可用的 - 无论是手动安装(使用mvn install:install-file),通过mirror还是来自central存储库。如果无法找到依赖项,失败将会运行。

您所指的sonatype文档正在使用nexusmirror/proxy repositories url 指定 应该是有效的nexus网址,并且无法无法访问。

在SO问题中也提出了同样的建议。