使用nexus搭建maven私服、手動更新索引
網路上關於搭建maven私服的文章很多,但對於maven倉庫索引的配置這方面還是較少,本文主要講述如果快速搭建一個nexus私服,以及如何手動更新索引檔案。
本文所用的環境:作業系統CentOS 6.5 64bit,nexus版本nexus-2.8.0-05-bundle
從sonatype官網下載nexus的安裝包,這裡我下載的版本為nexus-2.8.0-05-bundle,檔名帶有bundle表示該檔案集成了web伺服器,也就不需要再部署到其他中介軟體上面了。
- tar –zxvf nexus-2.8.0-05-bundle.tar.gz
通過上面的命令將其解壓到指定的資料夾下,會發現有如下兩個資料夾
nexus-2.8.0-05 sonatype-work
在nexus-2.8.0-05/bin目錄下有一個名為nexus的shell指令碼檔案
- ./nexus console
上面的命令就啟動了nexus以控制檯的方式,這會將啟動的相關資訊全部打印出來
注意,這裡不建議使用root使用者來執行nexus,使用其他使用者我們需要考慮一下檔案系統的許可權問題,不然程式可能無法啟動,報出Permission denied錯誤
使用root使用者執行如下命令
- chmod -R o+w {nexus-home}/
{nexus-home}表示nexus的根目錄
上面的命令將nexus整個資料夾(包括其子檔案和子資料夾)向普通使用者開放了write許可權
修訂:
上面的做法完全使用了root使用者來執行操作,這是不推薦並且是不安全的。在此推薦另外一種做法:
首先建立一個專屬使用者nexus來做所有與nexus伺服器相關的操作,這樣對系統帶來的影響也是區域性的
下面是建立名稱為nexus的使用者的命令,將其家目錄設定為/usr/nexus,-m引數在所設定的家目錄不存在的情況下自動建立
- useradd nexus -d /usr/nexus -m
如此一來就可以切換到nexus使用者來執行操作了,將nexus私服的目錄放置在nexus使用者的家目錄下,這樣一來就省去了很多麻煩,好處多多,大家以後會有所體會的。
完成上面的操作,於是我們就可以使用普通使用者執行nexus指令碼了,執行命令./nexus start
StartingNexus OSS...
StartedNexus OSS.
若出現如上結果,則說明nexus OSS已經成功啟動了,下面通過瀏覽器訪問{hostname|ipAddr}:8081/nexus即可出現如下畫面
Congratulations!到這裡我們已經搭好了nexus私服。下面就是配置maven中心倉庫的索引了。如果有耐心的話,完全可以通過線上更新索引的方式來做,但所消耗的時間較長,下面介紹一種簡單、可行的方式來手動更新索引檔案。
nexus-maven-repository-index.gz
nexus-maven-repository-index.properties
下載完成之後最好是通過md5或者sha1校驗一下檔案是否一致,因為伺服器並不在國內,網路傳輸可能會造成檔案損壞。
下面就是解壓這個索引檔案,雖然後綴名為gz,但解壓方式卻比較特別,我們需要下載一個jar包indexer-cli-5.1.1.jar,我們需要通過這個特殊的jar來解壓這個索引檔案
注:indexer-cli-5.1.1.jar是專門用來解析和釋出索引的工具,關於它的詳細資訊請見這裡。前往maven中央倉庫下載indexer-cli-5.1.1.jar
將上面三個檔案(.gz & .properties & .jar)放置到同一目錄下,執行如下命令
- java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer
- ./nexus restart
我們可以看到Central倉庫下面就可以出現大量的索引檔案了
使用管理員賬戶登入(預設為賬戶admin,密碼admin123)nexus,PublicRepository倉庫的地址預設為
該地址就可以作為maven的setting檔案的repository-path了,對於設定setting檔案在此就不細說了。
下面列出關於nexus的一些常見問題
nexus預設監聽埠為8081,如何修改這個埠號呢?
在{nexus-home}/nexus-2.8.0-05/conf目錄下有一個nexus.properties的配置檔案,通過修改application-port屬性為自己想要設定的埠號即可
異常處理:
UnsupportedClassVersionError: org/sonatype/nexus/bootstrap/jsw/JswLauncher :Unsupported major.minor version 51.0
這種問題還是比較常見的,原因是JDK版本不支援而造成的,更換為JDK1.7或者以上版本即可。除此之外還有一種比較特別的情況,當最初連線linux使用root賬號連線,使用命令su nexus切換至nexus賬戶時,其實引用的環境變數資訊還是root賬號的環境資訊,如果root賬號下的環境資訊正好是JDK1.6或者以下版本,此時還會出現上面的錯誤資訊,解決這種辦法很簡單,只需要改用nexus賬戶連線linux或者切換使用者的命令改為su - nexus即可,具體su的使用方法請見對應的manual使用者手冊
附加資訊:
- nexus官方網址http://www.sonatype.org/nexus/