接上回繼續,相信大家對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來生成各種不同環境的部署包