1. 什么是 Nexus
Nexus 是一個強大的倉庫管理器,極大地簡化了內(nèi)部倉庫的維護和外部倉庫的訪問。
2016 年 4 月 6 日 Nexus 3.0 版本發(fā)布,相較 2.x 版本有了很大的改變:
- 對低層代碼進行了大規(guī)模重構(gòu),提升性能,增加可擴展性以及改善用戶體驗。
- 升級界面,極大的簡化了用戶界面的操作和管理。
- 提供新的安裝包,讓部署更加簡單。
- 增加對 Docker, NeGet, npm, Bower 的支持。
- 提供新的管理接口,以及增強對自動任務(wù)的管理。
2. Docker搭建Nexus服務(wù)器
演示環(huán)境及內(nèi)容為:Centos7、Docker1.13.1、Nexus3、Docker-compose1.25.5。
2.1. Nexus服務(wù)器安裝
第一步:使用docker命令,從中央倉庫拉取Nexus3鏡像。
docker pull sonatype/nexus3
第二步:創(chuàng)建Nexus數(shù)據(jù)存放目錄,如:/usr/local/docker/nexus/data
第三步:在上面創(chuàng)建的nexus目錄中,創(chuàng)建docker-compose.yml文件,編寫容器創(chuàng)建命令和端口映射,添加內(nèi)容如下:
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus
ports:
- 8081:8081
volumes:
- /usr/local/docker/nexus/data:/nexus-data
第四步:給第二步中創(chuàng)建的data目錄賦予讀寫權(quán)限,執(zhí)行命令如下:
chmod 777 /usr/local/docker/nexus/data
第五步:在nexus目錄下執(zhí)行啟動命令,啟動nexus服務(wù)(-d:后臺啟動)。
docker-compose up
注:查看日志,如果發(fā)現(xiàn)有權(quán)限問題不能啟動成功,執(zhí)行下面操作,再重試。
1、修改/etc/selinux/config 文件
2、將SELINUX=enforcing改為SELINUX=disabled
3、reboot重啟機器即可
2.2. 登錄Nexus服務(wù)界面
第一步:在瀏覽器中輸入地址:ip:8081,訪問。出現(xiàn)下圖所示,表示服務(wù)啟動成功。
第二步:在映射的宿主機地址/usr/local/docker/nexus/data目錄下找到admin.password文件,打開這個文件,里面存放的是nexus登錄的初始密碼,用戶名為:admin。
第三步:輸入用戶名和密碼,登錄成功。
3. Maven倉庫介紹
3.1. 代理倉庫(Proxy Repository)
第三方倉庫,如:maven-central、nuget.org-proxy
版本策略(Version Policy):
Release: 正式版本
Snapshot: 快照版本
Mixed: 混合模式
布局策略(Layout Policy):
Strict:嚴格
Permissive:寬松
3.2. 宿主倉庫(Hosted Repository)
存儲本地上傳的組件和資源的:
maven-releases
maven-snapshots
nuget-hosted
部署策略(Deployment Policy):
Allow Redeploy:允許重新部署
Disable Redeploy:禁止重新部署
Read-Only:只讀
3.3. 倉庫組(Repository Group)
通常包含了多個代理倉庫和宿主倉庫,在項目中只要引入倉庫組就可以下載到代理倉庫和宿主倉庫中的包,如:maven-public、nuget-group。
4. 項目中Maven私服的使用
4.1. Snapshots 與 Releases 的區(qū)別
nexus-releases: 用于發(fā)布 Release 版本
nexus-snapshots: 用于發(fā)布 Snapshot 版本(快照版)
在項目 pom.xml 中設(shè)置的版本號添加 SNAPSHOT 標(biāo)識的都會發(fā)布為 SNAPSHOT 版本,沒有 SNAPSHOT 標(biāo)識的都會發(fā)布為 RELEASE 版本。
SNAPSHOT 版本會自動加一個時間作為標(biāo)識,如:1.0.0-SNAPSHOT 發(fā)布后為變成 1.0.0-SNAPSHOT-20180522.123456-1.jar
4.2. 配置認證信息
在 Maven的settings.xml文件中的servers 節(jié)點下添加 Nexus 認證信息(注意這里的password為修改之后的密碼):
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin</password>
</server>
4.3. 自動化部署到倉庫
第一步:在Maven項目的pom.xml文件中,添加如下配置:
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://ip:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://ip:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意事項:
1、ID 名稱必須要與 settings.xml 中 Servers 配置的 ID 名稱保持一致。
2、項目版本號中有 SNAPSHOT 標(biāo)識的,會發(fā)布到 Nexus Snapshots Repository, 否則發(fā)布到 Nexus Release Repository,并根據(jù) ID 去匹配授權(quán)賬號。
第二步:執(zhí)行命令,部署到倉庫。
mvn deploy -Dmaven.test.skip=true
4.4. 上傳第三方j(luò)ar包
可使用 maven 命令,也可以使用Nexus界面進行上傳:
# 如第三方JAR包:dubbo-2.8.4.jar
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar -Dfile=D:\ dubbo-2.8.4.jar -Durl=http://ip:8081/repository/ maven-releases/ -DrepositoryId=nexus-releases
注意事項:
1、建議在上傳第三方 JAR 包時,創(chuàng)建單獨的第三方 JAR 包管理倉庫,便于管理有維護。(maven-3rd)
2、-DrepositoryId=nexus-releases 對應(yīng)的是 settings.xml 中 Servers 配置的 ID 名稱。(授權(quán))
4.5. Maven項目配置代理倉庫
在Maven項目的pom.xml中配置代理倉庫,項目會自動在nexus私服中拉取jar包依賴到本地。
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://ip:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://ip:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
文檔下載地址:
https://wenku.baidu.com/view/aced70251cb91a37f111f18583d049649b660ea9