1. 程式人生 > >Maven配置setting.xml值Mirror與Repository區別

Maven配置setting.xml值Mirror與Repository區別

.so doc 相關 分享 感嘆號 匹配 osi 本地倉庫 緩存

1 Repository(倉庫)

技術分享圖片

1.1 Maven倉庫主要有2種:

  • remote repository:相當於公共的倉庫,大家都能訪問到,一般可以用URL的形式訪問
  • local repository:存放在本地磁盤的一個文件夾,例如,windows上默認是C:\Users\{用戶名}\.m2\repository目錄

1.2 Remote Repository主要有3種:

  • 中央倉庫:http://repo1.maven.org/maven2/
  • 私服:內網自建的maven repository,其URL是一個內部網址
  • 其他公共倉庫:其他可以互聯網公共訪問maven repository,例如 jboss repository等

repository裏存放的都是各種jar包和maven插件。當向倉庫請求插件或依賴的時候,會先檢查local repository,如果local repository有則直接返回,否則會向remote repository請求,並緩存到local repository。也可以把做的東西放到本地倉庫,僅供本地使用;或上傳到遠程倉庫,供大家使用。

2 Mirror

mirror相當於一個攔截器,它會攔截maven對remote repository的相關請求,把請求裏的remote repository地址,重定向到mirror裏配置的地址。

2.1 沒有配置mirror:

技術分享圖片

2.2 配置mirror:

技術分享圖片

此時,B Repository被稱為A Repository的鏡像。(即A倉庫中的所有構建在B倉庫中都有) ,鏡像的定義如下:

如果倉庫X可以提供倉庫Y存儲的所有內容,那麽就可以認為X是Y的一個鏡像。換句話說,任何一個可以從倉庫Y獲得的構件,都能夠從它的鏡像中獲取。

2.3 <mirrorOf></mirrorOf>

<mirrorOf></mirrorOf>標簽裏面放置的是要被鏡像的Repository ID。為了滿足一些復雜的需求,Maven還支持更高級的鏡像配置:

  • <mirrorOf>*</mirrorOf>

匹配所有倉庫請求,即將所有的倉庫請求都轉到該鏡像上

  • <mirrorOf>repo1,repo2</mirrorOf>

將倉庫repo1和repo2的請求轉到該鏡像上,使用逗號分隔多個遠程倉庫。

  • <mirrorOf>*,!repo1</miiroOf>

匹配所有倉庫請求,repo1除外,使用感嘆號將倉庫從匹配中排除。

Maven配置setting.xml值Mirror與Repository區別