進入新公司搭建nexus私有maven倉庫時,又發(fā)現(xiàn)一些細節(jié)很模糊了,so決定記錄下來具體流程以便日后使用。
基于nexus-3.6.1-02版本
A.準備工作
1.壓縮包內(nèi)文件夾解壓至同一目錄,例如D:\Program\nexus
2.cmd進入nexus\nexus-3.6.0-02\bin目錄下
3.輸入nexus.exe /run即可在默認端口啟動nexus(linux下為./nexus run &)&代表后臺運行
4.如端口被占用等情況,可于Nexus\nexus-3.6.1-02\etc下修改nexus-default.properties改變端口
B.基礎配置
1.默認最高權限賬戶:admin 密碼:admin123
2.Blob Stores,如果沒有自定義的話,默認地址為Nexus\sonatype-work\nexus3\blobs\default,如果需要可以自行創(chuàng)建新的倉儲路徑
3.Repositories,對應maven倉庫,首先需要的是一個代理倉庫,一般默認為官方中央倉庫。國內(nèi)的話,默認為aliyun的中央倉庫即可。
4.如果存在第三方jar包,需要創(chuàng)建類型為hosted的repositories,用于mvn depoly發(fā)布,注意Deployment policy要設置為allow redeploy。
- 公司自有項目可建立對應的snapshot和releases倉庫,Maven2下的version policy需設置為對應版本,倉庫類型為hosted。方便起見可直接在項目pom文件內(nèi)進行如下配置:
<distributionManagement>
<snapshotRepository>
<id>倉庫ID</id>
<name>倉庫名稱</name>
<url>
http://地址:端口/repository/倉庫ID/
</url>
</snapshotRepository>
<repository>
<id>倉庫ID</id>
<name>倉庫名稱</name>
<url>
http://地址:端口/repository/倉庫ID/
</url>
</repository>
</distributionManagement>
- 一般公司內(nèi)部需要創(chuàng)建多個倉庫,這時候就需要創(chuàng)建group類型的repositories用于統(tǒng)一訪問多個倉庫
- 配置私有倉庫,在項目下的pom文件中加入
<repositories>
<repository>
<id>倉庫ID</id>
<name>倉庫名稱</name>
<url>
http://地址:端口/repository/倉庫ID/
</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
或者在本地maven的conf文件夾中,修改settings.xml加入鏡像
<mirrors>
<mirror>
<id>倉庫ID</id>
<name>倉庫名稱</name>
<url>
http://地址:端口/repository/倉庫ID/
</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
具體的mirroOf屬性可參照http://blog.csdn.net/isea533/article/details/21560089
一般來說搭建公司私有倉庫,配置為*,即所有請求均被私有倉庫攔截即可,再在私有倉庫中配置中央倉庫的代理即可。
C.Nexus上傳私有包
1.上傳私有包時需要驗證nexus的賬號密碼,一般配置于本地maven的settings.xml文件中。
<servers>
<server>
<id>倉庫ID</id>
<username>nexus username</username>
<password>nexus password</password>
</server>
</servers>
2.idea中運行mvn clean deploy即可發(fā)布,成功后可于nexus倉庫中搜索查看到。
常見問題
1.mvn deploy報錯,報錯信息中有如下:
RELEASE does not allow metadata in path
該問題是snapshots版本的jar包發(fā)布的倉庫版本策略錯誤,在nexus中點擊對應的倉庫查看可發(fā)現(xiàn)Maven2-version policy的值為releases。目前不能修改版本策略,重建一個snapshots版本的倉庫即可。