maven3實戰之倉庫

maven3實戰之倉庫(maven倉庫分類)html

maven3實戰之倉庫(maven倉庫分類) ---------- 對於maven來講,倉庫只分爲兩類:本地倉庫和遠程倉庫。當maven根據座標尋找構件的時候,它首先會查看本地倉庫,若是本地倉庫存在此構件,則直接使用;若是本地倉庫不存在此構件,或者須要查看是否有更新的構件版本,maven就會去遠程倉庫查找,發現須要的構件以後,下載到本地倉庫再使用。若是本地倉庫和遠程倉庫都沒有須要的構件,maven就會報錯。 在這個最基本分類的基礎上,還有必要介紹一些特殊的遠程倉庫。中央倉庫是maven核心自帶的遠程倉庫,它包含了絕大部分開源的構件。在默認配置下,當本地倉庫沒有maven須要的構件的時候,它就會嘗試從中央倉庫下載。私服是另外一種特殊的遠程倉庫,爲了節省帶寬和時間,應該在局域網內架設一個私有的倉庫服務器,用其代理全部外部的遠程倉庫。內部的項目還能部署到私服上供其餘項目使用。除了中央倉庫和私服,還有不少其餘公開的遠程倉庫,常見的有java.net Maven庫(http://download.java.net/maven/2/)和jboss Maven庫(http://repository.jboss.com/maven2/)等。
1.本地倉庫 默認狀況下,無論是在windows仍是linux上,每一個用戶在本身的用戶目錄下都有一個路徑名爲.m2/repository/的倉庫目錄。有時候,由於某些緣由(例如C盤空間不夠),用戶會想要自定義本地倉庫目錄地址。這時,能夠編輯文件~/.m2/settings.xml,設置localRepository元素的值爲想要的倉庫地址。例如:java

Xml代碼
  1. <settings> 
  2.     <localRepository>D:\java\repository\</localRepository> 
  3. </settings> 

這樣,該用戶的本地倉庫地址就被設置成了 D:\java\repository\。須要注意的是,默認狀況下,~/.m2/settings.xml文件是不存在的,用戶須要從Maven安裝目錄複製$M2_HOME/conf/settings.xml文件再進行編輯。 一個構件只有在本地倉庫中以後,才能由其餘Maven項目使用,那麼構件如何進入到本地倉庫中呢?最多見的是依賴Maven從遠程倉庫下載到本地倉庫中。還有一種常見的狀況是,將本地項目的構件安裝到Maven倉庫中。例如本地有兩個項目A和B,二者都沒法從遠程倉庫得到,而同時A又依賴於B,爲了能構建A,B就必須首先得以構建並安裝到本地倉庫中。爲了安裝項目,咱們能夠在項目中執行: mvn clean install命令。Install插件的install目標將項目的構建輸出文件安裝到本地倉庫。
2.遠程倉庫 安裝好Maven後,若是不執行任何Maven命令,本地倉庫目錄是不存在的。當用戶輸入第一條Maven命令以後,Maven纔會建立本地倉庫,而後根據配置和須要,從遠程倉庫下載構件至本地倉庫。
3.中央倉庫 因爲最原始的本地倉庫是空的,Maven必須知道至少一個可用的遠程倉庫,才能在執行Maven命令的時候下載到須要的構件。中央倉庫就是這樣一個默認的遠程倉庫,Maven的安裝文件自帶了中央倉庫的配置。讀者可使用解壓工具打開jar文件$M2_HOME/lib/maven-model-builder-3.0.jar(在Maven2中,jar文件路徑相似於$M2_HOME/lib/maven-2.2.1-uber.jar),而後訪問路徑:org/apache/maven/model/pom-4.0.0.xml,能夠看到以下的配置:linux

 

Xml代碼
  1. <repositories> 
  2.     <repository> 
  3.         <id>central</id> 
  4.         <name>Maven Repository Switchboard</name> 
  5.         <url>http://repo1.maven.org/maven2</url> 
  6.         <layout>default</layout> 
  7.         <snapshots> 
  8.             <enabled>false</enabled> 
  9.         </snapshots> 
  10.     </repository> 
  11. </repositories> 

包含這段配置的文件是全部Maven項目都會繼承的超級POM。這段配置使用id central對中央倉庫進行惟一標識,其名稱爲Maven Repository Switchboard,它使用default倉庫佈局。最後須要注意的是snapshots元素,其子元素enabled的值爲false,表示不從該中央倉庫下載快照版本的構件【快照版本的項目是版本不穩定的項目,因此中央倉庫默認是關閉的】。
4.私服 私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。當Maven須要下載構件的時候,它從私服請求,若是私服上不存在該構件,則從外部的遠程倉庫下載,緩存在私服上以後,再爲Maven的下載請求提供服務。此外,一些沒法從外部倉庫下載到的構件也能從本地上傳到私服上供你們使用。apache

相關文章
相關標籤/搜索