1. 程式人生 > >Maven學習筆記二:Nexus私服搭建

Maven學習筆記二:Nexus私服搭建

Nexus是一種流行的Maven遠端倉庫,我們知道Maven一般有兩種倉庫,本地倉庫和遠端倉庫,中央倉庫是Maven自帶的遠端倉庫,除了中央倉庫之外,還存在許多特殊的遠端倉庫,私服便是一種特殊的遠端倉庫,使用私服的好處不言而喻:原本我們直接跟中央倉庫溝通的,現在在中間加入了一個私服,我們下載一個構件的請求將首先到達私服,如果私服上存在,則直接下載,如果不存在,則首先由私服從中央倉庫下載快取,然後再下載到本地。這種工作模式對於一個團隊來說是非常高效的,私服一般工作在公司區域網內,這大大減少了對外網頻寬的佔用。

本例使用nexus-2.11.2-06 OSS + JDK1.7 + Ubuntu Server14.04

需要注意的是,最新版的nexus 2.11.2-06需要java7u2及以上版本。

下載:

Nexus有三種版本:

•Nexus OSS
•Nexus Pro
•Nexus Pro+

我們使用第一種社群版,下載地址:


安裝:

將下載的tar.gz包上傳到Linux伺服器/tmp下,然後解壓到/var/lib 下:

$sudo tar –zxvf /tmp/nexus-latest-bundle.tar.gz -C /var/lib

如果是zip包,則執行:

$sudo unzip /tmp/nexus-latest-bundle.tar.gz -d /var/lib

然後做一個連結,方便日後升級:

$cd /var/lib

$sudo ln -s nexus-2.11.2-06 nexus

目錄結構如下:

/var/lib

    +- nexus ->nexus-2.11.2-06  連結

    +- nexus-2.11.2-06  程式執行目錄

    +- sonatype-work  工作目錄,該目錄包含nexus生成的配置,日誌,倉庫等

我們將nexus安裝目錄/var/lib/nexus 定義為NEXUS_HOME變數的值,下文描述將引用該值。

sonatype-work這個位置是可以更改的,其配置在$NEXUS_HOME/conf/nexus.properties

# Nexus section

nexus-work=${bundleBasedir}/../sonatype-work/nexus

接下來,我們需要建立一個專門執行nexus的使用者:

$sudo useradd -m -N -s /bin/sh nexus

然後將所有nexus目錄的屬主修改為nexus使用者,否則不能執行(不建議作為root執行):

$sudo chown -R nexus:root nexus-2.11.2-06

$sudo chown -R nexus: root sonatype-work

然後編輯$NEXUS_HOME/bin/nexus

修改

NEXUS_HOME="/var/lib/nexus"

RUN_AS_USER="nexus"

儲存後執行:

$sudo cp $NEXUS_HOME/bin/nexus /etc/init.d

$cd /etc/init.d

$sudo update-rc.d nexus defaults

執行:

需要注意的是Nexus預設執行的埠是0.0.0.0:8081,如果你的伺服器該埠已被佔用,記得提前更改,可以使用命令檢查一下:

$netstat -nltp |grep 8081

如果什麼都沒顯示,則表示該埠沒有被佔用,如果被佔用,則可以這樣修改,

其配置在$NEXUS_HOME/conf/nexus.properties:

# Jetty section

application-port=8081

將8081修改Wie一個其他的值即可,比如8082

$cd nexus

$sudo vi conf/nexus.properties

# Jetty section

application-port=8082

接下來我們開始執行Nexus:

$sudo service nexus start

Nexus會啟動內嵌的Jetty伺服器來執行服務,稍等片刻,我們就可以訪問首頁了,http://[your IP]:8081/nexus:


接下來,我們需要做一些基本的配置才能使用,比如首先需要修改管理員的密碼等。

首先以管理員身份登入,預設使用者名稱密碼為admin/admin123

然後點選右上角使用者名稱下拉選單中的Profile,接著在彈出的選項卡中點選Change Password:


在彈出的選項卡中,修改好儲存即可。

同樣,在nexus中還有預設的另外兩個使用者,點選左側導航欄選單中的Security->Users

在deployment使用者上右鍵->set Password,修改儲存。

接下來,我們要下載Maven中央倉庫的索引檔案,點選左側導航選單欄中的View/Repositories->Repositories

然後點選列表中的Central,在下邊切換到Configuration選項卡,然後找到Download Remote Indexs,將其值修改為true.此時Nexus就會建立一個計劃任務在後臺下載索引,日後方便本地快速搜尋構件:


至此,我們的Nexus的私服就可以提供服務了:

http://192.168.0.103:8081/nexus/content/groups/public

建議直接將該地址配置在maven的配置檔案中(.m2/settings.xml):

<settings>

 …

 <mirrors>

<mirror>

      <id>nexus</id>

      <!-- 代理所有地址 -->

      <mirrorOf>*</mirrorOf>

      <name>Human Readable Name for thisMirror.</name>

      <url>http://192.168.0.103:8081/nexus/content/groups/public</url>

</mirror>

  </mirrors>

</settings>


參考: