天天看點

maven學習筆記(四)倉庫、nexus私服

構件:在maven中,任何一個依賴(jar包)、插件(maven-compiler-plugin-2.5.1.jar)或者項目輸出(前面例子中運作mvn clean install部署到本地倉庫的jar包)都稱為構件。

倉庫:maven在某一位置存儲所有共享的構件,這個統一的位置就是倉庫。

倉庫分類:maven倉庫分為本地倉庫和遠端倉庫

本地倉庫:在本地機器上緩存構件的檔案目錄(如前面例子中的D:\dev_env\maven)

                 安裝好maven後,本地倉庫目錄是不存在的。當使用者輸入第一條maven指令,maven才會建立本地倉庫

                  maven本地倉庫布局:(也可以說是jar包在本地倉庫中的路徑,此處隻是說明正常的布局)

                                  maven是根據構件(jar包)的GAV屬性來定義構件存在的路徑的,例如某個構件的GAV屬性是

                                              <groupId>com.sun.xml.bind</groupId>

                                             <artifactId>jaxb-xjc</artifactId>

                                              <version>2.2.6</version>

                                   maven首先将groupid屬性值中的點号替換成檔案路徑分隔符  /  ,根據上面的例子即為   com/sun/xml/bind ,然後加上artifactId,再加上version,最終路徑就是  com/sun/xml/bind/jaxb-xjc/2.2.6 ,是以構件存放的目錄就應該是本地倉庫目錄下的   com/sun/xml/bind/jaxb-xjc/2.2.6  目錄下。

遠端倉庫:包括中央倉庫、私服和其他公共庫

私服:是一種特殊的遠端倉庫,代理緩存遠端倉庫(可以是預設的中央倉庫、可以是第三方的公用倉庫)的構件。本地maven使用者需要下載下傳構件時,從私服請求。若私服中找不到構件,就從遠端倉庫(中央倉庫或其他公共庫)下載下傳,緩存在私服上,供使用者下次請求。 若一些無法從外部遠端倉庫下載下傳的構件,可以從本地上傳到私服上供maven使用者請求。

nexus私服的搭建和應用

nexus搭建:

1、下載下傳位址:http://www.sonatype.org/nexus/archived(win:zip包   linux :tar.gz)

2、将下載下傳後的zip包解壓縮,然後配置環境變量,在path變量後添加nexus的bin路徑(本地環境路徑為:D:\nexus-2.7.0-bundle\nexus-2.7.0-04\bin)

3、在控制台(cmd)下運作nexus install指令将nexus安裝到windows的服務中(可到系統的服務中檢視)

4、在控制台(cmd)下運作nexus start指令

5、在浏覽器中輸入http://ip:8081/nexus即可通路搭建的nexus私服(URL中的ip為本機ip)

      nexus的預設端口是可以手動更改的(修改D:\nexus-2.7.0-bundle\nexus-2.7.0-04\conf\nexus.properties檔案中的application-port屬性值,重新開機nexus)

6、點選頁面右上角的log in,輸入使用者名(預設admin)和密碼(預設admin123)

nexus倉庫:

點選頁面左邊的Repositories可以在界面上顯示nexus下所有的倉庫

如下圖,根據type字段可以将倉庫分為:hosted、proxy、group、virtual

1、hosted的倉庫:内部項目的釋出倉庫(如前面例子中執行mvn clean install指令釋出項目,最終釋出的jar包回放入hosted倉庫)

      3rd party倉庫存儲使用者手動上傳的構件,這些構件不能從中央倉庫下載下傳,在倉庫的Artifact Upload頁簽中可以執行

maven學習筆記(四)倉庫、nexus私服

2、proxy的倉庫:從遠端中央倉庫中尋找資料的倉庫(可以點選對應的倉庫的Configuration頁簽下Remote Storage Location屬性的值即被代理的遠端倉庫的路徑)

3、group倉庫:組倉庫用來友善開發人員進行設定的倉庫

      group倉庫可以自由組合其他的倉庫為一個組,然後在項目的pom檔案的repository可以配置這個倉庫

nexus倉庫設定:

1、更新私有倉庫索引

點選Repository名稱為Central,type為proxy的倉庫,在頁面下方的Configuration頁,把 Download Remote Indexes的值改為True,然後點選最下面的save按鈕。(更新索引的時間有點長,請耐心等待。更新完索引後可在Browse Index頁簽點選重新整理按鈕就可顯示所有更新後的索引,展開索引樹,點選到葉子節點--依賴jar包,可檢視其依賴配置坐标。)

可以在頁面左上角的Artifact Search搜尋框中輸入要搜尋的依賴(如:spring),就會顯示搜尋到的依賴配置坐标。

由于自動更新索引時間較長,也可以手動下載下傳包含索引檔案的壓縮包nexus-maven-repository-index.zip,然後放入Central倉庫索引存儲的目錄(本地路徑為D:\nexus-2.7.0-bundle\sonatype-work\nexus\indexer\central-ctx  ,這種方式未經驗證,壓縮包下載下傳失敗,第一種自動更新可以成功)。

2、配置鏡像

修改本地倉庫的配置檔案D:\dev_env\maven\settings.xml,在mirrors節點下添加如下配置

<mirror>
      <id>central</id>
      <mirrorOf>*</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://192.168.19.38:8081/nexus/content/groups/public/</url>
    </mirror>
           

mirrorOf配置為*,表示這個鏡像配置适用于所有的倉庫,是所有倉庫的一個鏡像,maven無論要去那個倉庫下載下傳建構都會跳轉到鏡像URL(此時配置的是nexus的group類型的倉庫位址,該組倉庫包含了其他幾個類型的倉庫,可以點選這個倉庫,檢視其Configuration頁簽)去下載下傳。

mirrorOf也可以配置一個或多個倉庫,多個倉庫配置值要與對應的倉庫id一緻,以逗号分隔。

項目的釋出:

1、配置釋出倉庫路徑

在user-parent的pom檔案的project節點下添加項目釋出倉庫資訊。snapshotRepository配置快照版本釋出倉庫路徑(由于使用的例子定義的都是快照版本,是以項目都會釋出到user-snapshots這個倉庫中,對應的是nexus上與配置URL比對的倉庫);repository配置release版本釋出倉庫路徑。url屬性定義最終釋出到的nexus倉庫路徑。

<distributionManagement>
  
  	<snapshotRepository>
  		<id>user-snapshots</id>
  		<name>User Project SNAPSHOTS</name>
  		<url>http://192.168.19.38:8081/nexus/content/repositories/snapshots/</url>
  	</snapshotRepository>
  	
  	<repository>
  		<id>user-releases</id>
  		<name>User Project Release</name>
  		<url>http://192.168.19.38:8081/nexus/content/repositories/releases/</url>
  	</repository>
  	
  </distributionManagement>
           

2、授權

項目釋出的時候需要配置一個有釋出權限的使用者(nexus有個預設的使用者deployment,預設密碼deployment123),nexus倉庫會鑒權,修改本地倉庫的配置檔案D:\dev_env\maven\settings.xml,在servers節點下添加如下配置

<server>
      <id>user-snapshots</id>
      <username>deployment</username>
      <password>deployment123</password>
    </server>

	<server>
      <id>user-releases</id>
      <username>deployment</username>
      <password>deployment123</password>
    </server>
           

3、釋出

在springsource中導入user-parent及其子項目,運作user-parent下的pom檔案 clean deploy 

釋出成功後可以到<url>http://192.168.19.38:8081/nexus/content/repositories/snapshots/</url>對應的nexus倉庫的Browse Storage頁簽下檢視,會顯示所有項目的jar包

maven學習筆記(四)倉庫、nexus私服

可下載下傳項目示例:http://download.csdn.net/detail/liuxigiant/6691645

示例出自視訊教程的maven第二部分,視訊下載下傳路徑http://www.verycd.com/topics/2917293/