引言
在實際開發工作中,通常需要搭建maven私有倉庫,今天就教大家如何搭建一套maven的私有倉庫
Nexus介紹
Nexus 是Maven倉庫管理器,如果你使用Maven,你可以從Maven中央倉庫 下載所需要的構件(artifact),但這通常不是一個好的做法,你應該在本地架設一個Maven倉庫服務器,在代理遠程倉庫的同時維護本地倉庫,以節省帶寬和時間,Nexus就可以滿足這樣的需要。此外,他還提供了強大的倉庫管理功能,構件搜索功能,它基於REST,友好的UI是一個extjs的REST客戶端,它占用較少的內存,基於簡單文件系統而非數據庫。這些優點使其日趨成為最流行的Maven倉庫管理器。
安裝docker
請參考筆者另一篇文章————物理機安裝Centos系統
docker中安裝nexus3
1. 拉取鏡像
##在之前可以通過docker search nexus 命令搜索一下docker公有庫在的 nexus相關的鏡像
docker pull sonatype/nexus3
2. 建立數據儲存文件夾
##建立數據存放文件夾,用於docker中nexus的數據與本地物理機映射
mkdir -p /usr/local/nexus3/nexus-data
##更改權限
chown 777 /usr/local/nexus3/nexus-data
3. 安裝並運行容器
docker run -d -p 8081:8081 --name docker-nexus3 -v /usr/local/nexus3/nexus-data:/nexus-data sonatype/nexus3
安裝完成
通過web訪問管理端(記得配置防火牆):http://10.10.10.10:8081/
配置Nexus
密碼配置
進入Nexus3主頁后,點擊右上角“Sign in”
提示輸入密碼,並告知你的密碼儲存位置
Your admin user password is located in /nexus-data/admin.password on the server.
因為docker中nexus3的數據儲存位置與本地物理機建立了映射關系,所有在物理機上的地址應該是
/usr/local/nexus3/nexus-data/admin.password
配置阿里雲代理倉庫
- 新建倉庫(Create repository)
- 選擇maven2(proxy)
- 填寫倉庫名稱——maven-aliyun,並填入倉庫url
http://maven.aliyun.com/nexus/content/groups/public
- 將創建的maven-aliyun放入到maven-public中
創建項目私有庫
- 創建兩個倉庫(使用maven2(hosted)類型的庫),分別選擇
Snapshot 和 Release
,命名為(java-snapshout 和 java-release) - 創建一個Group類型倉庫,將java-release和之前創建的阿里代理庫添加其為成員,當客戶端拉取jar包的時候,會從阿里雲和私有的release庫中拉取(命名為java-group)
創建用戶
- 創建角色(develop),並分配nx-all權限
- 創建用戶(test),並授予develop角色
本地使用
修改本地maven配置文件(conf/setting.xml)
1.servers節點下添加以下內容(username和password為剛剛在nexus3中添加的用戶和其密碼)
<server>
<id>nexus-xu</id>
<username>test</username>
<password>123456</password>
</server>
<server>
<id>releases</id> <!--對應pom.xml的id=releases的倉庫-->
<username>test</username>
<password>123456</password>
</server>
<server>
<id>snapshots</id> <!--對應pom.xml中id=snapshots的倉庫-->
<username>test</username>
<password>123456</password>
</server>
2.mirrors節點下添加以下內容
<mirror>
<id>nexus-xu</id>//對應上面的用戶名和密碼
<name>internal nexus repository</name>
<!--鏡像采用配置好的組的地址-->
<url>http://10.10.10.10:8081/repository/java-group/</url>
<mirrorOf>!internal.repo,*</mirrorOf>
</mirror>
項目中發布
在pom中的project節點下配置如下內容
<distributionManagement>
<repository>
<!--id對應着maven的setting.xml中的用戶賬戶-->
<id>releases</id>
<!-- 如果沒有寫xxx-SNAPSHOUT,默認發布到release -->
<url>http://10.10.10.10:8081/repository/java-release/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://10.10.10.10:8081/repository/java-snapshot/</url>
</snapshotRepository>
</distributionManagement>