Apache Maven --- [Repositories]

構件倉庫html

Maven中的倉庫用來保存構件和不一樣類型的依賴.java

嚴格來說,這裏只有兩種倉庫類型:本地和遠程.本地倉庫引用了你安裝的一份緩存遠程下載的拷貝,也包含了你尚未正式發佈的臨時構件.apache

遠程倉庫引用了任何其餘類型的倉庫,經過不一樣的通信協議(如:http://和file://)來訪問.這些倉庫也許是一個被第三方創建起來用來提供它們構件的下載的真實存在的遠程倉庫(如:repo.maven.apache.org和uk.maven.org存儲Maven的中央倉庫).緩存

其餘"遠程"倉庫也許是公司內部基於文件或者HTTP服務創建起來的內部倉庫,用來在不一樣的研發團隊之間共享私人構件.安全

本地倉庫和遠程倉庫的結構是同樣的,以便於腳本能夠輕易的在兩邊運行,它們也能夠被同步離線使用.在平常使用中,倉庫的佈局對用戶來講是徹底透明的.bash

爲何不把JAR包存放在CVS網絡

咱們不建議你把JAR包存放在CVS中.Maven試圖促進用戶本地倉庫的概念:它能夠存聽任何項目構件,也能夠被任何數量的構建所使用.在典型的構建中,許多項目都在重複使用一些依賴(如:XML解析,標準工具).經過Maven,這些標準工具能夠存儲在你的本地倉庫中並分享給其餘任意數量的構建項目.併發

它有如下優勢:maven

使用存儲空間減小--雖然一個倉庫一般都很龐大,由於每一個JAR都被放在一個地方,但實際上這節約了空間(由於不須要重複),儘管它看上去不是這樣.ide

檢出項目更加快捷--若是沒有大量的二進制文件存儲在CVS上,那麼項目在初始化檢出和小規模更新的時候將會更加的快速.雖然它們可能在以後的任何地方仍是須要被下載,可是這隻會發生一次而且對於一些通用JAR來講可能都沒這個必要.

不須要版本控制--CVS和其餘的源碼控制系統都基於版本控制文件設計,可是外部依賴一般都不會改變,或者即使它們修改了文件名來代表一個新的版本,相比於把它們存放在本地構件緩存,存放在CVS中都沒有體現任何額外的好處.

使用倉庫

通常狀況下,使用本地倉庫不須要你作任何操做,除非由於磁盤空間不足須要清理它(或者若是你想徹底清空它並從新下載)

對於遠程倉庫,它們被用來下載和上傳(若是你容許這麼作的話)

從遠程倉庫下載

當一個項目聲明的依賴在本地倉庫不存在時會觸發Maven的下載行爲(或者對於一個快照,遠程倉庫有更新的版本).默認狀況下,Maven會從中央倉庫下載.

想要覆蓋這一行爲,你須要指定一個鏡像,請查閱:http://maven.apache.org/guides/mini/guide-mirror-settings.html

你能夠在你的settings.xml文件中設置它來全局的使用一個特定的鏡像倉庫,可是請注意,一般狀況下一個項目都在它的POM中自定義倉庫位置並且它比你的settings.xml配置有更高的優先級.若是你發現有依賴找不到,請檢查你是否覆蓋了遠程倉庫的默認地址.

更多關於依賴的信息,請查閱:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

使用中央倉庫的鏡像

這裏有一些官方倉庫的地理分佈.你能夠修改你的settings.xml文件來使用其中的一個或多個鏡像位置.更多介紹請查閱: http://maven.apache.org/guides/mini/guide-mirror-settings.html

離線構建

若是你須要臨時斷網並要離線構建你的項目,使用以下命令:

mvn -o package

注意,許多插件遵循離線設置並且它們不會執行任何須要聯網的操做.如解決java文檔連接和站點連接檢查.

上傳到遠程倉庫

雖然這對於任何遠程倉庫來講,可能都須要你容許這麼作.如上傳到Maven中央倉庫,請查閱:http://maven.apache.org/repository/index.html

內部倉庫

當使用Maven的時候,特別是在企業環境中,鏈接到網絡下載依賴在安全性,速率或者帶寬方面是不可接受的.基於這個緣由,創建一個內部倉庫來保存工件的拷貝,併發布私人構件是頗有必要的.

這樣的一個內部倉庫能夠基於HTTP或者文件系統(file://)下載,並使用SCP,FTP或者文件拷貝來上傳.

注意,就Maven而言,這個庫沒什麼特殊的:它是另外一個遠程倉庫,包含能夠被下載到你本地緩存的構件,併發布構件.

另外,你可能想要分享倉庫服務給你生成的項目站點.請查閱:http://maven.apache.org/guides/mini/guide-site.html

創建內部倉庫

創建一個內部倉庫只須要你有空間來存放它,而後根據中央倉庫 (http://repo.maven.apache.org/maven2/) 的佈局來拷貝構件到裏面.

不建議同步一個完整中央庫拷貝由於數據量是龐大的,並且若是你這麼作將會被驅逐.你可使用一個如在倉庫管理頁面(http://maven.apache.org/repository-management.html)描述的程序來運行你的內部倉庫服務,快速下載構件的最新版本並保存到你的內部倉庫中.

其餘可用選項能夠手動檢查並下載,而後拷貝到內部倉庫,或者讓用戶經過Maven下載,而後手動上傳審覈過的構件到內部倉庫.這個步驟是惟一可用的方式對於那些許可禁止自動擴散的構件來講,例如Sun提供的J2EE的一些JAR包.參考更多信息訪問:http://maven.apache.org/guides/mini/guide-coping-with-sun-jars.html

應該注意的是Maven打算在未來包含這些特性的增強版,包括點擊下載許可,校驗簽名.

使用內部倉庫

使用內部倉庫是很是簡單的,僅僅須要改變或者添加一個repositories元素:

<project>
  ...
  <repositories>
    <repository>
      <id>my-internal-site</id>
      <url>http://myserver/repo</url>
    </repository>
  </repositories>
  ...
</project>

若是你的內部倉庫須要鑑定,id元素能夠在你的settings.xml文件中被用來指定登陸信息.

部署到內部倉庫

擁有一個或多個內部倉庫的重要緣由之一是可讓你發佈你本身的私有項目來共享給其餘項目.

要發佈項目到倉庫,你須要如SCP,SFTP,FTP,WebDAV,文件系統中的一種訪問方式.鏈接不一樣的馬車來完成,一些馬車可能須要做爲擴展被添加到你的構建中.

相關文章
相關標籤/搜索