maven倉庫及鏡像

1 Repository(倉庫)windows

1.1 Maven倉庫主要有2種:緩存

remote repository:至關於公共的倉庫,你們都能訪問到,通常能夠用URL的形式訪問網絡

local repository:存放在本地磁盤的一個文件夾,例如,windows上默認是C:\Users\{用戶名}.m2\repository目錄maven

1.2 Remote Repository主要有3種:編碼

中央倉庫:http://repo1.maven.org/maven2/插件

私服:內網自建的maven repository,其URL是一個內部網址code

其餘公共倉庫:其餘能夠互聯網公共訪問maven repository,例如 jboss repository等server

repository裏存放的都是各類jar包和maven插件。當向倉庫請求插件或依賴的時候,會先檢查local repository,若是local repository有則直接返回,不然會向remote repository請求,並緩存到local repository。也能夠把作的東西放到本地倉庫,僅供本地使用;或上傳到遠程倉庫,供你們使用。xml

2 Mirrorrem

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

2.1 沒有配置mirror:

2.2 配置mirror:

此時,B Repository被稱爲A Repository的鏡像。

若是倉庫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除外,使用感嘆號將倉庫從匹配中排除。

3 Repository與Mirror

3.1 定義

其實,mirror表示的是兩個Repository之間的關係,在maven配置文件(setting.xml)裏配置了<mirrors><mirror>..........</mirror></mirrors>,即定義了兩個Repository之間的鏡像關係。

3.2 目的

配置兩個Repository之間的鏡像關係,通常是出於訪問速度和下載速度考慮。

例如, 有一個項目,須要在公司和住所都編碼,並在項目pom.xml配置了A Maven庫。在公司,是電信網絡,訪問A庫很快,因此maven管理依賴和插件都從A庫下載;在住所,是網通網絡,訪問A庫很慢,可是訪問B庫很快。這時,在住所的setting.xml裏,只要配置一下<mirrors><mirror>....</mirror></mirrors>,讓B庫成爲A庫的mirror,便可不用更改項目pom.xml裏對於A庫的相關配置。

若是該鏡像倉庫須要認證,則配置setting.xml中的<server></server>便可。

3.3 注意

須要注意的是,因爲鏡像倉庫徹底屏蔽了被鏡像倉庫,當鏡像倉庫不穩定或者中止服務的時候,Maven仍將沒法訪問被鏡像倉庫,於是將沒法下載構件。

4 私服

私服是一種特殊的遠程Maven倉庫,它是架設在局域網內的倉庫服務,私服通常被配置爲互聯網遠程倉庫的鏡像,供局域網內的Maven用戶使用。

當Maven須要下載構件的時候,先向私服請求,若是私服上不存在該構件,則從外部的遠程倉庫下載,同時緩存在私服之上,而後爲Maven下載請求提供下載服務,另外,對於自定義或第三方的jar能夠從本地上傳到私服,供局域網內其餘maven用戶使用。

優勢主要有:

節省外網寬帶

加速Maven構建

部署第三方構件

提升穩定性、加強控制:緣由是外網不穩定

下降中央倉庫的負荷:緣由是中央倉庫訪問量太大

PS:Maven倉庫示意圖

相關文章
相關標籤/搜索