Docker之MAVEN私服
目錄
- nexus簡單介紹
- Docker安裝MAVEN nexus
- Maven nexus批量上傳jar包
nexus簡單介紹
- Nexus 是Maven倉庫管理器,可以在自有服務(wù)器上搭建自己的MAVEN倉庫.
Docker安裝MAVEN nexus
- Docker安裝
- 查詢nexus安裝鏡像
docker search nexus - 下載鏡像
docker pull docker.io/sonatype/nexus3 - 查看鏡像
docker images - 啟動鏡像
docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus3 -v /opt/nexus-data:/nexus-data -u root --privileged=true --restart=always docker.io/sonatype/nexus3
- 命令詳解查看docker命令
- 在運(yùn)行是可能會出現(xiàn)
Permission denied的提示,這是因?yàn)槿萜髂夸浐蛼燧d目錄的組名和用戶名不同,導(dǎo)致使用對應(yīng)的用戶在宿主機(jī)目錄下沒有讀寫權(quán)限.
- 解決方案請查看Docker容器啟動失敗之文件讀寫權(quán)限
- 開放防火墻8081端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent - 訪問maven私服
ip:8081 - 查看私服用戶admin密碼
find / -name 'admin.password'
- copy其中的內(nèi)容為密碼
- 登陸成功后進(jìn)入設(shè)置代理倉庫
- 紅色框是遠(yuǎn)程代理倉庫,也就是本地倉庫沒有的jar,將會通過遠(yuǎn)程的倉庫下載
nexus之私服倉庫地址.jpg
點(diǎn)擊保存
-
創(chuàng)建本地用戶
nexus之用戶創(chuàng)建.jpg 使用idea創(chuàng)建一個maven項(xiàng)目進(jìn)行測試,pom中加入如下代碼
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://ip:port/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://ip:port/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
- 配置配置$MAVEN_HOME/conf/settings.xml的nexus私服用戶,id和pom的配置一致
<server>
<id>nexus-releases</id>
<username>felixfei</username>
<password>felixfeinexus</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>felixfei</username>
<password>felixfeinexus</password>
</server>
配置完成之后使用
mvn deploy在idea開發(fā)工具中進(jìn)行打包上傳-
登陸maven nexus進(jìn)行查看如圖
打包并上傳私服.jpg -
創(chuàng)建demo項(xiàng)目并進(jìn)行調(diào)用,如圖
jar-pom.jpg
Maven nexus批量上傳jar包
- 先將本地repository下的文件打包成一個zip包
- 使用sftp工具上傳到linux /opt目錄
- 使用
unzip repository.zip命令進(jìn)行解壓 - 進(jìn)入該目錄
cd /opt/repository - 創(chuàng)建mavenimport.sh腳本,內(nèi)容如下
#!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itself explicitly so the script name is important # Get command line params while getopts ":r:u:p:" opt; do case $opt in r) REPO_URL="$OPTARG" ;; u) USERNAME="$OPTARG" ;; p) PASSWORD="$OPTARG" ;; esac done find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ; - 輸入
chmod a+x mavenimport.sh授權(quán)該腳本可執(zhí)行 - 執(zhí)行導(dǎo)入命令(地址和賬號密碼更換為自己的maven nexus信息)
./mavenimport.sh -u user -p password -r http://ip:port/repository/maven-releases/ - 執(zhí)行完畢后進(jìn)行刷新maven nexus即可看到



