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仍將無法訪問被映象倉庫,因而將無法下載構件。