1. 程式人生 > >Maven學習筆記(五)-使用Nexus搭建Maven私服

Maven學習筆記(五)-使用Nexus搭建Maven私服

一、下載Nexus

Nexus 專業版是需要付費的,這裡我們下載開源版 Nexus OSS。Nexus 提供兩種安裝包,一種是包含 Jetty 容器的 bundle 包,另一種是不包含容器的 war 包。

二、安裝Nexus

使用bundle安裝包安裝Nexus 

解壓安裝包nexus-2.8.1-bundle.zip,開啟命令提示符,進入/nexus-2.8.1-01目錄,鍵入nexus命令:


執行 nexus install 將Nexus安裝為Windows服務。可將服務啟動方式設為手動,以後通過 nexus start 即可啟動Nexus ,通過 nexus stop 退出Nexus:

或者這樣:

%nexus_home%\bin\nexus.bat install (安裝成windows服務)

%nexus_home%\bin\nexus.bat start (啟動)



為方便啟動和退出Nexus,可將bin目錄新增到環境變數:

新建環境變數 Nexus_HOME


把Nexus_HOME新增到Path中去


開啟瀏覽器,訪問:http://localhost:8081/nexus/


點選右上角 Log In,使用使用者名稱:admin ,密碼:admin123 登入,可使用更多功能:

三、配置Nexus

點選左側 Repositories 連結,檢視 Nexus 內建的倉庫:



nexus的倉庫型別分為以下四種:

    group: 倉庫組   

用來發布一些第三方不允許的元件,比如Oracle驅動、比如商業軟體jar包。

    hosted:宿主  

內部專案的釋出倉庫

    proxy:代理

最典型的就是Maven官方中央倉庫、JBoss倉庫等等。如果構建的Maven專案本地倉庫沒有依賴包,那麼就會去這個代理站點去下載,那麼如果代理站點也沒有此依賴包,就回去遠端中央倉庫下載依賴,這些中央倉庫就是proxy。代理站點下載成功後再下載至本機。

virtual:虛擬

publicRepositories:  倉庫組


                  3rd party: 無法從公共倉庫獲得的第三方釋出版本的構件倉庫


                  Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫


                  Central: 用來代理maven中央倉庫中釋出版本構件的倉庫


                  Central M1 shadow: 用於提供中央倉庫中M1格式的釋出版本的構件映象倉庫


                  Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫


                  Releases: 用來部署管理內部的釋出版本構件的宿主型別倉庫


                 Snapshots: 用來部署管理內部的快照版本構件的宿主型別倉庫

1.新增代理倉庫

以 Sonatype 為例,新增一個代理倉庫,用於代理 Sonatype 的公共遠端倉庫。點選選單 Add - Proxy Repository





填寫

Repository ID - fendo

Repository Name - fendo Repository;


Remote Storage Location - http://repository.sonatype.org/content/groups/public/   save 儲存: 




將新增的 fendo 代理倉庫加入 Public Repositories 倉庫組。選中 Public Repositories,在 Configuration 選項卡中,將 fendo Repository 從右側 Available Repositories 移到左側 Ordered Group Repositories,save 儲存:


2.開啟遠端索引

下載Maven倉庫索引有兩種方式:

一、手動下載


首先將索引下載到本地,下載地址:nexus-maven-repository-index.zip
解壓索引壓縮包,將裡面內容全部拷貝


關閉當前Nexus私服,開啟Nexus目錄%Nexus_Home%\sonatype-work\nexus\indexer\central-ctx,首先刪除當前目錄裡所有內容,然後貼上所下載的索引


最後啟動Nexus私服,索引生效。


二、自動下載
 

下載索引的步驟:

找到右邊倉庫列表中的三個倉庫Apache Snapshots,Codehaus Snapshots和Maven Central,然後在倉庫的configuration下把Download Remote Indexes修改為true。


然後在Apache Snapshots,Codehaus Snapshots和Maven Central這三個倉庫上分別右鍵,選擇Repari Index,這樣Nexus就會去下載遠端的索引檔案。


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


這樣設定以後, Nexus會自動從遠端中央倉庫下載索引檔案, 為了檢驗索引檔案自動下載是否生效,可以卻換到Browse Index


索引下載成功之後,在 Browse Index 選項卡下,可以瀏覽到所有已被索引的構件資訊,包括座標、格式、Maven 依賴的 xml 程式碼:


有了索引,我們就可以搜尋了:


3.配置Maven使用私服

私服搭建成功,我們就可以配置 Maven 使用私服,以後下載構件、部署構件,都通過私服來管理。


在 C:\Users\%HOME%\.m2\settings.xml 檔案中,為所有倉庫配置一個映象倉庫,映象倉庫的地址即私服的地址(這兒我們使用私服公共倉庫組 Public Repositories 的地址):


settings.xml中加入:


說明:

1.<mirrorOf>*</mirrorOf>
匹配所有遠端倉庫。


2.<mirrorOf>external:*</mirrorOf>
匹配所有遠端倉庫,使用localhost的除外,使用file://協議的除外。也就是說,匹配所有不在本機上的遠端倉庫。


3.<mirrorOf>repo1,repo2</mirrorOf>
匹配倉庫repo1和repo2,使用逗號分隔多個遠端倉庫。


4.<mirrorOf>*,!repo1</miiroOf>
匹配所有遠端倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。
需要注意的是,由於映象倉庫完全遮蔽了被映象倉庫,當映象倉庫不穩定或者停止服務的時候,Maven仍將無法訪問被映象倉庫,因而將無法下載構件。