1. 程式人生 > >Maven倉庫管理

Maven倉庫管理

5.1. Maven倉庫概念

Maven倉庫就是用來儲存所有Maven共享構建的地方(所有開源專案jar包的存放地)。

使用者根據GAV座標去倉庫下載對應的構建(jar包):

構建(Jar包)一般存放的路徑規則為: groupId /artifactId /version / artifactId -version.jar

5.2. Maven倉庫的分類

  1. 本地倉庫
    預設是 ${user.home}/.m2/repository
    我們可以通過複製setting.xml檔案,指定我們本地倉庫的地址
    每個使用者只有一個本地倉庫
    這裡寫圖片描述

  2. 遠端倉庫

    • 私服:是一種特殊的遠端倉庫,它是架設在本地區域網內的倉庫

      私服的作用:當團隊成員進行開發時,每個人都要從中央倉庫下載專案構建到本地倉庫,費時費力,這個時候可以在區域網環境搭建一個私人倉庫供團隊使用,這就是MAVEN私服.

5.3. Maven私服Nexus

5.3.1. Nexus安裝

Nexus其實就是一個JAVAWEB專案,安裝nexus其實就是部署一個JAVA專案,它可以將所有下載過的Maven專案構建在區域網內提供一個快取,當其他成員通過nexus下載專案構建時,如果nexus本地快取倉庫存在此構建,則不用到遠端倉庫進行下載。

Nexus私服有兩種部署方式:

  • nexus.zip 裡面包含容器和專案 在dos視窗,執行nexus -install,可以安裝成系統服務的方式,每次開機會啟動

  • nexus.war 這裡面只包含專案程式碼,相當於一個普通的java專案,可以部署到自己的tomcat,需要用到nexus的時候啟動tomcat即可

安裝版本:nexus-2.11.1-01-bundle.zip

注意:在如下圖所示路徑(…\nexus-2.11.1-01\conf\nexus.properties)的配置檔案下代表了我們訪問nexus專案的埠名和工程名,注意在安裝前將埠修改為跟其他專案不衝突的埠。

這裡寫圖片描述

5.3.2. Nexus訪問以及登陸

這裡寫圖片描述

5.3.3. Nexus的倉庫(Resositores)介紹

這裡寫圖片描述

如上圖所示:nexus倉庫型別與分組

倉庫型別:

  • group(倉庫組):一組倉庫的集合
  • hosted(宿主):配置第三方倉庫 (包括公司內部私服 )
  • proxy(代理):私服會對中央倉庫進行代理,使用者連線私服,私服自動去中央倉庫下載jar包或者外掛
  • virtual(虛擬):相容Maven1 版本的jar或者外掛

倉庫名稱:

  • 3rd party:一個策略為Release的宿主型別倉庫,用來部署無法從公共倉庫獲得的第三方釋出版本構建
  • Apache Snapshots:一個策略為Snapshot的代理倉庫,用來代理Apache Maven倉庫的快照版本構建
  • Central:代理Maven中央倉庫
  • Central M1 shadow:代理Maven1 版本 中央倉庫
  • Codehaus Snapshots:一個策略為Snapshot的代理倉庫,用來代理Codehaus Maven倉庫的快照版本構件
  • Releases:一個策略為Release的宿主型別倉庫,用來部署組織內部的釋出版本構件
  • Snapshots:一個策略為Snapshot的宿主型別倉庫,用來部署組織內部的快照版本構件
  • Public Repositories:該倉庫組將上述所有策略為Release的倉庫聚合並通過一致的地址提供服務

5.3.4. 配置所有構建均從私服下載

搭建好私服以後, 開發人員或者使用人員可以從私服下載專案構建,而不用直接從遠端倉庫下載專案構建,,我們需要做如下幾個操作步驟。

更改本地倉庫的setting.xml中配置:

這裡寫圖片描述

這裡寫圖片描述

做完此配置以後,我們在本地構建專案就可以通過私服下載。

那麼私服的專案構建從哪裡來?

5.3.5. Nexus私服索引下載

Nexus安裝好以後我們需要更新遠端倉庫專案構建的索引檔案。

更新索引有兩種方式:

  1. 開啟索引自動下載

    • 開啟Repositories標籤,選中遠端倉庫並開啟Configuration,將Download Romote Indexes設定為true;
      這裡寫圖片描述

    • 在遠端倉庫上右鍵選擇Update Index,Nexus會自動建立一條任務計劃;一般遠端倉庫都比較大,構建會比較多,索引檔案會很大,像http://repo1.maven.org/maven2 就有幾百M,因此需要的時間就比較長。

    • 可以進入Scheduled Tasks檢視任務的執行情況,當執行完成時,遠端倉庫的索引就已經建立完畢了。

通過以上兩種方式,我們可以在Browse_Index看到許多檔案的話就說明更新成功.

這裡寫圖片描述

5.3.6. Nexus的目錄結構

我們回過頭來看一下nexus私服的目錄結構以及主要的兩個目錄 indexer目錄和storage目錄。

  • 整個sonatype-work/nexus目錄結構如下:
    這裡寫圖片描述

  • Indexer 索引目錄結構:
    這裡寫圖片描述

  • Storage儲存目錄結構:
    這裡寫圖片描述

5.3.7. 釋出本地構建到Nexus

  • 首先我們要設定本地專案對Nexus的訪問許可權控制
    如下圖所示: 在本地倉庫的setting.xml中<servers>標籤裡面新增如下配置:
    這裡寫圖片描述

  • 然後在專案的pom.xml新增專案釋出地址的配置:
    這裡寫圖片描述

  • 右鍵專案或者pom.xml檔案執行 maven命令 deploy,此命令會將本地構建打包到本地倉庫,然後釋出到遠端倉庫中(nexus私服)
    這裡寫圖片描述