Maven遠程倉庫的各種配置

1.遠程倉庫的配置

在平時的開發(fā)中,我們往往不會使用默認的中央倉庫,默認的中央倉庫訪問的速度比較慢,訪問的人或許很多,有時候也無法滿足我們項目的需求,可能項目需要的某些構(gòu)件中央倉庫中是沒有的,而在其他遠程倉庫中有,如JBoss Maven倉庫。這時,可以在pom.xml中配置該倉庫,代碼如下:

 <!-- 配置遠程倉庫 -->
<repositories>
        <repository>
             <id>jboss</id>
             <name>JBoss Repository</name>
            <url>http://repository.jboss.com/maven2/</url>
            <releases>
                <enabled>true</enabled>
               <updatePolicy>daily</updatePolicy>
            </releases>
            <snapshots>
                 <enabled>false</enabled>
                 <checksumPolicy>warn</checksumPolicy>
           </snapshots>
             <layout>default</layout>
      </repository>
</repositories>

說明:

  • repository:
    在repositories元素下,可以使用repository子元素聲明一個或者多個遠程倉庫。

  • id:
    倉庫聲明的唯一id,尤其需要注意的是,Maven自帶的中央倉庫使用的id為central,如果其他倉庫聲明也使用該id,就會覆蓋中央倉庫的配置。

  • name:
    倉庫的名稱,讓我們直觀方便的知道倉庫是哪個,暫時沒發(fā)現(xiàn)其他太大的含義。

  • url:
    指向了倉庫的地址,一般來說,該地址都基于http協(xié)議,Maven用戶都可以在瀏覽器中打開倉庫地址瀏覽構(gòu)件。

  • releases和snapshots:
    用來控制Maven對于發(fā)布版構(gòu)件和快照版構(gòu)件的下載權(quán)限。需要注意的是enabled子元素,該例中releases的enabled值為true,表示開啟JBoss倉庫的發(fā)布版本下載支持,而snapshots的enabled值為false,表示關(guān)閉JBoss倉庫的快照版本的下載支持。根據(jù)該配置,Maven只會從JBoss倉庫下載發(fā)布版的構(gòu)件,而不會下載快照版的構(gòu)件。

  • layout:
    元素值default表示倉庫的布局是Maven2及Maven3的默認布局,而不是Maven1的布局?;静粫玫組aven1的布局。

  • 其他:
    對于releases和snapshots來說,除了enabled,它們還包含另外兩個子元素updatePolicy和checksumPolicy。

元素updatePolicy用來配置Maven從遠處倉庫檢查更新的頻率,默認值是daily,表示Maven每天檢查一次。其他可用的值包括:never-從不檢查更新; always-每次構(gòu)建都檢查更新;interval:X-每隔X分鐘檢查一次更新(X為任意整數(shù))。

元素checksumPolicy用來配置Maven檢查校驗和文件的策略。當構(gòu)建被部署到Maven倉庫中時,會同時部署對應(yīng)的檢驗和文件。在下載構(gòu)件的時候,Maven會驗證校驗和文件,如果校驗和驗證失敗,當checksumPolicy的值為默認的warn時,Maven會在執(zhí)行構(gòu)建時輸出警告信息,其他可用的值包括:fail-Maven: 遇到校驗和錯誤就讓構(gòu)建失??;ignore:使Maven完全忽略校驗和錯誤。

2.遠程倉庫的認證

大部分公共的遠程倉庫無須認證就可以直接訪問,但我們在平時的開發(fā)中往往會架設(shè)自己的Maven遠程倉庫,出于安全方面的考慮,我們需要提供認證信息才能訪問這樣的遠程倉庫。配置認證信息和配置遠程倉庫不同,遠程倉庫可以直接在pom.xml中配置,但是認證信息必須配置在settings.xml文件中。這是因為pom往往是被提交到代碼倉庫中供所有成員訪問的,而settings.xml一般只存在于本機。因此,在settings.xml中配置認證信息更為安全。

 <settings>
     <!--配置遠程倉庫認證信息-->
     <servers>
          <server>
             <id>releases</id>
             <username>admin</username>
             <password>admin123</password>
         </server>
    </servers>
</settings>

上面代碼我們配置了一個id為releases的遠程倉庫認證信息。Maven使用settings.xml文件中的servers元素及其子元素server配置倉庫認證信息。認證用戶名為admin,認證密碼為admin123。這里的關(guān)鍵是id元素,settings.xml中server元素的id必須與pom.xml中需要認證的repository元素的id完全一致。正是這個id將認證信息與倉庫配置聯(lián)系在了一起。

3.部署構(gòu)件至遠程倉庫

我們使用自己的遠程倉庫的目的就是在遠程倉庫中部署我們自己項目的構(gòu)件以及一些無法從外部倉庫直接獲取的構(gòu)件。這樣才能在開發(fā)時,供其他對團隊成員使用。

Maven除了能對項目進行編譯、測試、打包之外,還能將項目生成的構(gòu)件部署到遠程倉庫中。首先,需要編輯項目的pom.xml文件。配置distributionManagement元素,代碼如下:

  <distributionManagement>
         <repository>
            <id>releases</id>
            <name>public</name>
        <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url>
         </repository>
        <snapshotRepository>
           <id>snapshots</id>
           <name>Snapshots</name>
            <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url>
      </snapshotRepository>
</distributionManagement>

distributionManagement包含repository和snapshotRepository子元素,前者表示發(fā)布版本(穩(wěn)定版本)構(gòu)件的倉庫,后者表示快照版本(開發(fā)測試版本)的倉庫。這兩個元素都需要配置id、name和url,id為遠程倉庫的唯一標識,name是為了方便人閱讀,關(guān)鍵的url表示該倉庫的地址。

往遠程倉庫部署構(gòu)件的時候,往往需要認證,配置認證的方式同上。

配置正確后,運行命令mvn clean deploy,Maven就會將項目構(gòu)建輸出的構(gòu)件部署到配置對應(yīng)的遠程倉庫,如果項目當前的版本是快照版本,則部署到快照版本的倉庫地址,否則就部署到發(fā)布版本的倉庫地址。

快照版本和發(fā)布版本的區(qū)別請自行上百度查閱資料。

4.配置遠程倉庫的鏡像

如果倉庫X可以提供倉庫Y存儲的所有內(nèi)容,那么就可以認為X是Y的一個鏡像。換句話說,任何一個可以從倉庫Y獲得的構(gòu)件,都能夠從它的鏡像中獲取。舉個例子,http://maven.oschina.net/content/groups/public/是中央倉庫http://repo1.maven.org/maven2/ 在中國的鏡像,由于地理位置的因素,該鏡像往往能夠提供比中央倉庫更快的服務(wù)。因此,可以配置Maven使用該鏡像來替代中央倉庫。編輯settings.xml,代碼如下:

<mirrors>
     <mirror>
       <id>maven.oschina.net</id>
       <name>maven mirror in China</name>
      <url>http://maven.oschina.net/content/groups/public/</url>
       <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

該例中,mirrorOf的值為central,表示該配置為中央倉庫的鏡像,任何對于中央倉庫的請求都會轉(zhuǎn)至該鏡像,用戶也可以使用同樣的方法配置其他倉庫的鏡像。id表示鏡像的唯一標識符,name表示鏡像的名稱,url表示鏡像的地址。

關(guān)于鏡像的一個更為常見的用法是結(jié)合私服。由于私服可以代理任何外部的公共倉庫(包括中央倉庫),因此,對于組織內(nèi)部的Maven用戶來說,使用一個私服地址就等于使用了所有需要的外部倉庫,這可以將配置集中到私服,從而簡化Maven本身的配置。在這種情況下,任何需要的構(gòu)件都可以從私服獲得,私服就是所有倉庫的鏡像。這時,可以配置這樣的一個鏡像:

<!--配置私服鏡像-->
 <mirrors> 
     <mirror>  
         <id>nexus</id>  
         <name>internal nexus repository</name>  
         <url>http://183.238.2.182:8081/nexus/content/groups/public/</url>  
        <mirrorOf>*</mirrorOf>  
   </mirror>  
</mirrors>

該例中<mirrorOf>的值為星號,表示該配置是所有Maven倉庫的鏡像,任何對于遠程倉庫的請求都會被轉(zhuǎn)至http://183.238.2.182:8081/nexus/content/groups/public/。如果該鏡像倉庫需要認證,則配置一個id為nexus的認證信息即可。

需要注意的是,由于鏡像倉庫完全屏蔽了被鏡像倉庫,當鏡像倉庫不穩(wěn)定或者停止服務(wù)的時候,Maven仍將無法訪問被鏡像倉庫,因而將無法下載構(gòu)件。

5.可用的Maven鏡像倉庫

      <mirror>    
        <id>repo2</id>    
        <mirrorOf>central</mirrorOf>    
        <name>Human Readable Name for this Mirror.</name>    
        <url>http://repo2.maven.org/maven2/</url>    
      </mirror>
  
     <mirror>    
        <id>ui</id>    
        <mirrorOf>central</mirrorOf>    
        <name>Human Readable Name for this Mirror.</name>    
        <url>http://uk.maven.org/maven2/</url>    
    </mirror>

  
    <mirror>    
       <id>ibiblio</id>    
       <mirrorOf>central</mirrorOf>    
       <name>Human Readable Name for this Mirror.</name>    
       <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>    
   </mirror>
 
   <mirror>    
       <id>jboss-public-repository-group</id>    
       <mirrorOf>central</mirrorOf>    
       <name>JBoss Public Repository Group</name>    
      <url>http://repository.jboss.org/nexus/content/groups/public</url>    
   </mirror>
 
   <mirror>    
       <id>JBossJBPM</id>   
    <mirrorOf>central</mirrorOf>   
      <name>JBossJBPM Repository</name>        <url>https://repository.jboss.org/nexus/content/repositories/releases/</url>  
   </mirror>

上面的倉庫經(jīng)過測試是可以訪問的。

6.倉庫搜索服務(wù)地址

關(guān)于依賴的搜索,個人覺得這兩個是最好用的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內(nèi)容

  • |-1-更新內(nèi)容[6.從倉庫解析依賴的機制(重要)] 1Maven倉庫作用 倉庫用來存儲所有項目使用到構(gòu)件,在ma...
    zlcook閱讀 6,093評論 0 25
  • 目前在看nexus私服章節(jié)的知識時需要用到倉庫與鏡像的知識,正好通過簡書把倉庫和鏡像章節(jié)的筆記整理一下 倉庫 ma...
    小煉君閱讀 1,300評論 0 48
  • 首先私服是一種衍生出來的特殊的Maven遠程倉庫,構(gòu)建私服的好處請看3.5私服 可以幫助大家建立私服的倉庫管理軟件...
    zlcook閱讀 10,576評論 0 32
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,775評論 18 139
  • maven坐標 maven的構(gòu)件(jar包)是根據(jù)坐標來確定其在倉庫的保存位置的。maven的坐標是通過以下元素來...
    Joepis閱讀 560評論 0 4