2011-08-31 35 views
3

按照Maven documentation爲什麼Sonatype文檔建議在使用mirrorOf時在settings.xml中使用僞造的URL重新定義中央存儲庫?

您可以強制Maven的有它鏡像所有庫請求使用一個單一的存儲庫。存儲庫必須包含所有需要的工件,或能夠將請求代理到其他存儲庫。將內部公司存儲庫與Maven資源庫管理器一起使用來代理外部請求時,此設置非常有用。

要實現此目的,請將mirrorOf設置爲*。

This StackOverflow question也表明,設置mirrorOf足以阻擋外部庫,因此爲何Sonatype documentation建議不可達的URL超載central

回答

3

虛假網址實際上並不相關 - 只要需要,您可以將其設置爲原始網址或存儲庫管理器的網址,只要mirrorOf適用,它將不會被使用。

這些示例重新定義central的原因是將工件請求上的策略設置爲默認存儲庫。默認情況下,Maven不會將快照請求啓用到中央,並使用默認更新和校驗和策略。重新聲明central允許重寫這些 - 在這種情況下,可以啓用快照構件和插件,然後鏡像將所有這些重定向到存儲庫管理器。這樣可以避免需要在POM中聲明存儲庫(只要所有用戶的設置都正確)。

+0

好的。現在對我來說很有意義。所以,如果我只在我的設置中包含'mirrorOf'。xml'並且不重新定義'central',那麼我將最終使用不允許快照的默認策略,我甚至無法下載任何自己的快照構件,對吧?謝謝。 –

0

maven需要項目dependencies可用本地爲它運行。它不關心它是如何提供的 - 無論是手動安裝(使用mvn install:install-file),通過mirror或從central存儲庫。如果它無法找到依賴項,將會運行失敗

您參考的sonatype文檔是使用nexusmirror/proxyrepositoriesurl指定應該是一個有效的nexus網址,不能無法訪問。

在SO問題中也提出了相同的建議。

1

我寫的,所以我可以告訴你,我在想什麼;-)

中心倉庫定義需要進行更新,以使快照檢索至少一個回購協議,否則Maven會甚至不問庫經理(由鏡像指向)任何快照。

雖然不是必需的,但我喜歡將url的定義更改爲無效,因此如果系統中某處存在錯誤配置,則會立即發生明顯的變化。否則,Maven可能仍然會向中央伸出援手並掩蓋問題。這本質上是一個快速失敗的設置。

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

相關問題