qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          maven3實戰之倉庫(遠程倉庫的配置)

          maven3實戰之倉庫(遠程倉庫的配置)

          ----------

          在很多情況下,默認的中央倉庫無法滿足項目的需求,可能項目需要的構件存在于另外一個遠程倉庫中,如:JBoss,Maven倉庫。這時,可以在POM中配置該倉庫,見代碼請單:

           

          Xml代碼  收藏代碼
          1. <project>  
          2.   ...  
          3.   <repositories>  
          4.     <repository>  
          5.       <id>jboss</id>  
          6.       <name>JBoss Repository</name>  
          7.       <url>http://repository.jboss.com/maven2/</url>  
          8.       <releases>  
          9.         <enabled>true</enabled>  
          10.       </releases>  
          11.     </repository>  
          12.     <snapshots>  
          13.       <enabled>false</enabled>  
          14.     </snapshots>  
          15.     <layout>default</layout>  
          16.   </repositories>  
          17.   ...  
          18. </project>  

          在repositories元素下,可以使用repository子元素聲明一個或者多個遠程倉庫。該例中聲明了一個id為jboss,名稱為JBoss Repository的倉庫。任何一個倉庫聲明的id必須是唯一的,尤其需要注意的是,maven自帶的中央倉庫使用的id為central,如果其他的倉庫聲明也使用該id,就會覆蓋中央倉庫的配置。該配置中的url值指向了倉庫的地址,一般來說,該地址都基于http協議,maven用戶都可以在瀏覽器中打開倉庫地址瀏覽構件。

          該例配置中的releases和snapshots元素比較重要,它們用來控制Maven對于發布版構件和快照版構件的下載。該例中releases的enabled值為true,表示開啟JBoss倉庫的發布版本下載支持,而snapshots的enabled值為false,表示關閉JBoss倉庫的快照版本的下載支持該例中的layout元素值default表示倉庫的布局是Maven2及Maven3的默認布局,而不是Maven1的布局

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

           

          Xml代碼  收藏代碼
          1. <snapshots>  
          2.   <enabled>true</enabled>  
          3.   <updatePolicy>daily</updatePolicy>  
          4.   <checksumPolicy>ignore</checksumPolicy>  
          5. </snapshots>  

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

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

           

          1.遠程倉庫的認證

          大部分遠程倉庫無須認證就可以訪問,但有時候出于安全方面的考慮,我們需要提認證信息才能訪問一些遠程倉庫。例如,組織內部有一個Maven倉庫服務器,該服務器為每個項目都提供獨立的Maven倉庫,為了防止非法的倉庫訪問,管理員為每個倉庫提供了一組用戶名級密碼。這時,為了能讓Maven訪問倉庫內容,就需要配置認證信息。

          配置認證信息和配置倉庫信息不同,倉庫信息可以直接配置在POM文件中,但是認證信息必須配置在settings.xml文件中。這是因為POM往往是被提交到代碼倉庫中供所有成員訪問的,而settings.xml一般只放在本機。因此,settings.xml中配置認證信息更為安全。假設需要為一個id為my-proj的倉庫配置認證信息,編輯settings.xml文件見代碼清單: 

           

          Xml代碼  收藏代碼
          1. <settings>  
          2.   ...  
          3.   <servers>  
          4.     <server>  
          5.       <id>my-proj</id>  
          6.       <username>repo-user</username>  
          7.       <password>repo-pwd</password>  
          8.     </server>  
          9.   </servers>  
          10.   ...  
          11. </settings>  

          Maven使用settings.xml文件中并不顯而易見的servers元素及其server子元素配置倉庫認證信息。上例中,倉庫的認證用戶名為repo-user,認證密碼為repo-pwd。這里的關鍵是id元素,settings.xml中server元素的id必須與POM中需要認證的repository元素的id完全一致。換句話說,正是這個Id將認證信息與倉庫配置聯系在了一起。

           

          2.部署至遠程倉庫

          私服的一大作用是部署第三方構件,包括組織內部生成的構件以及一些無法從外部倉庫直接獲取的構件。無論是日常開發中生成的構件,還是正式版本發布的構件,都需要部署到倉庫中,供其他團隊成員使用。

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

          Xml代碼  收藏代碼
          1. <project>  
          2.   ...  
          3.   <destributionManagement>  
          4.     <repository>  
          5.       <id>proj-releases</id>  
          6.       <name>Proj Release Repository</name>  
          7.       <url>http://192.168.1.100/content/repositories/proj-releases</url>  
          8.     </repository>  
          9.     <snapshotRepository>  
          10.       <id>proj-snapshots</id>  
          11.       <name>Proj Snapshot Repository</name>  
          12.       <url>http://192.168.1.100/content/repositories/proj-snapshots</url>  
          13.     </snapshotRepository>  
          14.   </destributionManagement>  
          15.   ...  
          16. </project>  

          distributionManagement包含repository和snapshotRepository子元素,前者表示發布版本構件的倉庫,后者表示快照版本的倉庫。這兩個元素下都需要配置id、name和url,id為該遠程倉庫的唯一標識,name是為了方便人閱讀,關鍵的url表示該倉庫的地址。

          往遠程倉庫部署構件的時候,往往需要認證。就是需要在settings.xml中創建一個server元素,其id與倉庫的id匹配,并配置正確的認證信息。不論遠程倉庫下載構件,還是部署構件至遠程倉庫,當需要認證的時候,配置的方式是一樣的。配置正確后,在命令行運行mvn clean deploy,Maven就會將項目構建輸出的構件部署到配置對應的遠程倉庫,如果項目當前的版本是快照版本,則部署到快照版本倉庫地址,否則就部署到發布版本倉庫地址。

          posted on 2014-03-25 17:00 順其自然EVO 閱讀(652) 評論(0)  編輯  收藏 所屬分類: maven

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 会东县| 丽江市| 乌审旗| 灵山县| 陆河县| 疏附县| 长葛市| 丁青县| 乐山市| 乌拉特后旗| 邢台县| 镇江市| 罗山县| 马关县| 河津市| 巴林左旗| 武平县| 宁化县| 宣城市| 鲜城| 平安县| 美姑县| 宝丰县| 永吉县| 康乐县| 沈丘县| 望江县| 广灵县| 福贡县| 上高县| 观塘区| 宜黄县| 荣昌县| 石楼县| 濮阳县| 敦煌市| 磴口县| 赤峰市| 海林市| 通江县| 彝良县|