maven學習(中)- 私服nexus搭建

菩提樹下的楊過發表於2014-02-23

上回繼續,相信大家對maven每次都聯網從國外站點下載依賴項的龜速網路已經不坎忍受了,今天先來看看如何搭建"倉庫私服",目前nexus是使用比較廣泛的私服軟體之一,下面將介紹基本用法:

 

一、到nexus官網下載最新版

1.1 下載地址:http://www.sonatype.org/downloads/nexus-latest-bundle.zip (目前最新版本是2.7.2-03)

(2015-07-02注: 上面的下載地址好象已經失效了,新的地址為 http://www.sonatype.org/nexus/archived/ )

1.2 下載完後,解壓到指定目錄,比如:c:\java\nexus\

1.3 啟動nexus

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

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

tips : 直接nexus.bat不帶引數,會顯示完整的引數列表

參考下圖,如果啟用不起來,檢查jdk版本,nexus要求1.7版本(如果版本不對,請調整環境變數JAVA_HOME指向jdk1.7的目錄)

如果換成1.7還是啟用不了,建議用nexus.bat console 控制檯方式啟用,這樣可以看到詳細啟動過程

啟動成功後,可以用http://localhost:8081/nexus 進入控制介面

點選右上角的Log In,預設使用者名稱/密碼是admin/admin123

 

二、新增jboss資源庫地址

2.1 先了解下nexus的資源庫型別:

Hosted Repository - nexus本機的資源庫(相當於nexus所在伺服器硬碟上已經存在的jar、pom檔案庫)

Proxy Repository - 代理庫,很多開源官方組織都在網際網路上公佈了Repository,供全世界的開發者使用,nexus中設定該型別的資源庫後,其它使用nexus的開發者,表面上是在請求nexus伺服器上的jar包,但nexus實質是背後是在請求這些網際網路資源,首次會把伺服器上沒有的資源,從網上download到nexus伺服器(以檔案形式儲存到硬碟上),然後再返回給開發者,下次再有同樣的pom/jar請求時,直接從伺服器硬碟上返回,不再請求網際網路

Repository Group - 資源組,比如我們有很多資源庫:資源庫A、資源庫B...,可以把它們再成組合一個特殊的資源C,然後其它開發人員,在maven裡配置資源C地址,這樣maven在向資源C請求jar包裡,實質會搜尋資源A、資源B

 

2.2 新增jboss 代理資源庫

maven預設的官方資源庫http://repo1.maven.org/maven2/,很多第三方的jar包沒有,所以我再新增一個jboss的資源庫

點選左側的Repositories,然後再點選右側的Add,會彈出下拉選單,選擇Proxy Repository

接下來,參考下圖填寫:

Respository ID這裡填寫:jboss-public-repository-group (可以自已改名字)

Respository Name這裡填寫:JBoss Public Maven Repository Group (可以自已改名字)

其它項保持預設

Remote Storage Location這裡填寫:https://repository.jboss.org/nexus/content/groups/public-jboss/ (這是jboss公佈的公開資源庫)

 

2.3 下載jboss eap 6.x的離線資源包

首次使用nexus時,私服伺服器上實質上沒有任何jar包的快取,所以第一次使用時,其實跟直接到網際網路上下載沒啥區別,只有後面再請求相同的jar包,伺服器上才會有jar檔案快取,為了加快速度,我們可以直接上jboss官網下載離線資源包

下載地址: htp://www.jboss.org/jbossas/downloads

然後解壓到指定目錄,建議放在 %nexus_home%\sonatype-work\nexus\storage\ 下

然後add一個hosted repository,參考下圖:

 

2.4 把剛才新增的二個respoitory新增到Public Repositories組

剛才我們新增了二個新的資源庫,檢查一下是否包括在預設的Public Repositories組裡

如果沒包括在組裡,參考上圖處理一下,然後儲存。最後建議更新一下索引,參考下圖:

 

三、修改本機當前使用者下.m2目錄下的settings.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
 4           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 6 
 7   <mirrors>
 8     <mirror>
 9       <id>nexus</id>
10       <mirrorOf>*</mirrorOf>     
11       <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
12     </mirror>     
13   </mirrors>  
14   
15   <profiles>
16     <profile>
17       <id>nexus</id>
18       <repositories>
19         <repository>
20           <id>nexus</id>
21           <name>Nexus</name>
22           <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
23           <releases><enabled>true</enabled></releases>
24           <snapshots><enabled>true</enabled></snapshots>
25         </repository>
26       </repositories>
27       <pluginRepositories>
28         <pluginRepository>
29           <id>nexus</id>
30             <name>Nexus</name>
31             <url>http://192.168.0.110:8081/nexus/content/groups/public/</url>
32             <releases><enabled>true</enabled></releases>
33             <snapshots><enabled>true</enabled></snapshots>
34         </pluginRepository>
35       </pluginRepositories>
36     </profile>
37   </profiles>
38   <activeProfiles>
39     <activeProfile>nexus</activeProfile>
40   </activeProfiles>
41 
42  </settings>

注:大家自行把這段xml中的地址換成nexus伺服器的ip。

然後隨便建立一個maven專案,執行mvn clean package 之類,觀察下輸出:

從上圖可以看出,現在依賴項都是從nexus伺服器下載的

 

四、eclipse中新增資源xml

最後再補充一個小技巧,這跟私服其實關係不大。每次我們在eclipse裡建立maven project時,都會彈出一個介面,讓我們選擇“專案模板“,這個過程需要聯網獲取模板列表,而且每次都次重複獲取,很不合理,如下圖:

可以點選Confiure,會彈出以下介面,點選”Add Local Catalog“

先在瀏覽裡訪問 https://repository.jboss.org/nexus/content/groups/public-jboss/archetype-catalog.xml 這個地址,然後儲存為xml檔案,接下面的介面裡 Catalog File裡,選擇這個xml檔案,然後Description填寫一個名字

然後在建立Maven專案時,就可以直接選擇這個了,選擇後,將直接讀取本機xml的內容,比聯網獲取要快得多

 

最後給一個小技巧:

有時候,在單位的區域網裡架構nexus伺服器,伺服器並不能訪問外網,這樣就無法通過代理庫從網際網路下載jar包,可以這樣做:

開發人員的機器通常是能上網的,先在本機修改settings.xml,不走nexus私服,直接從網際網路中央倉庫下載一次,把所有東西編譯好以後,將本機 "當前使用者\.m2\repository"複製到nexus私服伺服器的相應儲存目錄,一般則nexus同級目錄下的sonatype-work\nexus\storage\central 目錄,然後再登入nexus管理介面手動更新索引,以後其它人就能正常使用nexus私服了。

 

下一節將學習如何利用profile來生成各種不同環境的部署包

相關文章