基于Docker搭建Maven私服
docker 安装nexus
-
下载nexus3的镜像
sudo docker pull sonatype/nexus3
-
将容器内部/var/nexus-data挂载到主机/root/nexus-data目录
docker run -d -p 9009:8081 --name nexus -v /lei.zou/home/nexus3/nexus-data:/nexus-data --restart=always sonatype/nexus3 # 内存默认大于2G 可以限制一下内存(增加下面内容) -e "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs" # 如下 docker run -d -e "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs" -p 9009:8081 --name nexus -v /lei.zou/home/nexus3/nexus-data:/nexus-data --restart=always sonatype/nexus3
-
启动后查看登录密码
进入容器, /nexus-data/admin.password 打开查看
sudo docker exec -it 4fb2e9830d4a /bin/bash
-
登录
配置仓库
远程仓库,本地仓库,私服仓库,分组仓库
- 配置aliyun 代理仓库
- Name:
aliyun-nexus
- Version pollcy:
Release
- Remote storate:
http://maven.aliyun.com/nexus/content/groups/public/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ULRQ5dL-1669203733798)(Docker搭建Maven私服.assets/1656899196498.png)]
- 配置 Spring 仓库代理 (版本策略为Release)
- Name:
spring-milestone
- Version pollcy:
Release
- Remote storate:
https://repo.spring.io/milestone
- 配置 Spring 仓库代理(版本策略为Snapshot)
- Name:
spring-snapshot
- Version pollcy:
Snapshot
- Remote storate:
https://repo.spring.io/snapshot
-
创建一个自己的仓库用于使用 这里使用 maven-release
需要将改成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q867syln-1669203733799)(Docker搭建Maven私服.assets/1657673702526.png)]
配置完成后无法直接使用,需要进一步配置
- 点击
设置按钮
->Repository
->Repositories
- 选择
maven-public
,修改Group
如下图所示(注意先后顺序)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MnNmYVuY-1669203733800)(Docker搭建Maven私服.assets/1657673792875.png)]
配置计划任务
实际开发过程中可能每天都会产生大量的快照版本,每个快照都会占用相应的空间,历史快照版本就没有什么意义了应该定时清理以释放多占用的空间资源,我们可以通过 Tasks 计划任务选项定期清理旧的快照版本
点击>设置按钮>System>Tasks
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78ob2Ngp-1669203733800)(Docker搭建Maven私服.assets/1656900112892.png)]
Maven配置
将本地的仓库的jar包批量写入maven私服
-
本地maven打包zip
打包上传到liunx服务器并解压
-
在解压后的文件夹中建立批量导入maven的脚本
#!/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}/{} ;
-
赋予权限然后执行命令
sh mavenimport.sh -u admin -p uaes,123 -r http://174.34.90.112:9009/repository/maven-releases/
-
执行成功后就可以在仓库中看到这些导入的文件
405异常如下图:是地址写错,注意http://174.34.90.112:9009/repository/maven-public/ 后面的应该是hosted的地址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-inQccxIh-1669203733800)(Docker搭建Maven私服.assets/1657674233565.png)]
正常应该:显示了导入的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5CTMejit-1669203733801)(Docker搭建Maven私服.assets/1657675782740.png)]
配置setting.xml与私服实现认证
- 配置镜像就可以从该仓库下载了
<mirror>
<id>nexus(112)</id>
<mirrorOf>*</mirrorOf>
<name>nexus(112)</name>
<url>http://174.34.90.112:9009/repository/maven-public/</url>
</mirror>