關於maven配置私服地址無效問題
阿新 • • 發佈:2020-10-21
入職新公司,公司內網有內部搭建的maven私服,但是在本地maven的setting檔案中配置上私服地址後,一直無法拉取私服的一些jar包。經過仔細的排查,發現問題出在之前配置的遠端阿里雲maven映象上。
在maven的setting.xml檔案中,mirror標籤內配置映象後,會攔截連線遠端倉庫的請求,從mirror配置的url地址中獲取依賴。常見阿里雲maven,如下圖:
私服地址一般配置在setting檔案中的 repository標籤下,如下圖:
問題主要出在mirror標籤下的mirrorOf屬性上,該屬性的配置存在以下四種情況
<mirrorOf>*</mirrorOf>
匹配所有遠端倉庫。
此種情況下,repository中配置的私服失效。<mirrorOf>external:* </mirrorOf>
匹配所有遠端倉庫,除了本地倉庫和基於檔案協議的倉庫。
此種情況下,repository中配置的私服失效。<mirrorOf>repo1,repo2 </mirrorOf>
匹配用逗號分隔的多個倉庫(基於ID)
此種情況下,沒有匹配私服倉庫時,私服倉庫有效。<mirrorOf>*,!repo1 </mirrorOf>
匹配除了repo1以外的所有倉庫(感嘆號排除)
此種情況下,排除私服倉庫ID,私服有效。
我開始mirrorOf標籤配置的值是*,會攔截所有連線遠端倉庫的請求,直接導致配置的私服地址失效,無法拉取私服上的jar包與相關資源。後修改mirrorOf的值為central,表示會覆蓋掉maven預設的中央倉庫,但不會攔截所有連線遠端倉庫的請求,私服地址有效,實測問題解決。
參考地址:maven官網映象設定指南