1. 程式人生 > >使用nexus搭建maven私服、手動更新索引

使用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伺服器,也就不需要再部署到其他中介軟體上面了。

  1. 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指令碼檔案

  1. ./nexus console  

上面的命令就啟動了nexus以控制檯的方式,這會將啟動的相關資訊全部打印出來

注意,這裡不建議使用root使用者來執行nexus,使用其他使用者我們需要考慮一下檔案系統的許可權問題,不然程式可能無法啟動,報出Permission denied錯誤

使用root使用者執行如下命令

  1. chmod -R o+w {nexus-home}/  

{nexus-home}表示nexus的根目錄

上面的命令將nexus整個資料夾(包括其子檔案和子資料夾)向普通使用者開放了write許可權

修訂:

上面的做法完全使用了root使用者來執行操作,這是不推薦並且是不安全的。在此推薦另外一種做法:

首先建立一個專屬使用者nexus來做所有與nexus伺服器相關的操作,這樣對系統帶來的影響也是區域性的

下面是建立名稱為nexus的使用者的命令,將其家目錄設定為/usr/nexus,-m引數在所設定的家目錄不存在的情況下自動建立

  1. 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)放置到同一目錄下,執行如下命令

  1. java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer  
等待程式執行完成之後可以發現indexer資料夾下出現了很多檔案,將這些檔案放置到{nexus-home}/sonatype-work/nexus/indexer/central-ctx目錄下,重新啟動nexus
  1. ./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/