1. 程式人生 > 實用技巧 >關於maven配置私服地址無效問題

關於maven配置私服地址無效問題

入職新公司,公司內網有內部搭建的maven私服,但是在本地maven的setting檔案中配置上私服地址後,一直無法拉取私服的一些jar包。經過仔細的排查,發現問題出在之前配置的遠端阿里雲maven映象上。

在maven的setting.xml檔案中,mirror標籤內配置映象後,會攔截連線遠端倉庫的請求,從mirror配置的url地址中獲取依賴。常見阿里雲maven,如下圖:在這裡插入圖片描述
私服地址一般配置在setting檔案中的 repository標籤下,如下圖:
在這裡插入圖片描述

問題主要出在mirror標籤下的mirrorOf屬性上,該屬性的配置存在以下四種情況

  1. <mirrorOf>*</mirrorOf>

    匹配所有遠端倉庫。
    此種情況下,repository中配置的私服失效。
  2. <mirrorOf>external:* </mirrorOf>
    匹配所有遠端倉庫,除了本地倉庫和基於檔案協議的倉庫。
    此種情況下,repository中配置的私服失效。
  3. <mirrorOf>repo1,repo2 </mirrorOf>
    匹配用逗號分隔的多個倉庫(基於ID)
    此種情況下,沒有匹配私服倉庫時,私服倉庫有效。
  4. <mirrorOf>*,!repo1 </mirrorOf>
    匹配除了repo1以外的所有倉庫(感嘆號排除)
    此種情況下,排除私服倉庫ID,私服有效。

我開始mirrorOf標籤配置的值是*,會攔截所有連線遠端倉庫的請求,直接導致配置的私服地址失效,無法拉取私服上的jar包與相關資源。後修改mirrorOf的值為central,表示會覆蓋掉maven預設的中央倉庫,但不會攔截所有連線遠端倉庫的請求,私服地址有效,實測問題解決。

參考地址:maven官網映象設定指南