Docker之MAVEN私服
目录
- nexus简单介绍
- Docker安装MAVEN nexus
- Maven nexus批量上传jar包
nexus简单介绍
- Nexus 是Maven仓库管理器,可以在自有服务器上搭建自己的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命令
- 在运行是可能会出现
Permission denied
的提示,这是因为容器目录和挂载目录的组名和用户名不同,导致使用对应的用户在宿主机目录下没有读写权限.
- 解决方案请查看Docker容器启动失败之文件读写权限
- 开放防火墙8081端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
- 访问maven私服
ip:8081
- 查看私服用户admin密码
find / -name 'admin.password'
- copy其中的内容为密码
- 登陆成功后进入设置代理仓库
- 红色框是远程代理仓库,也就是本地仓库没有的jar,将会通过远程的仓库下载
点击保存
-
创建本地用户
使用idea创建一个maven项目进行测试,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开发工具中进行打包上传-
登陆maven nexus进行查看如图
-
创建demo项目并进行调用,如图
Maven nexus批量上传jar包
- 先将本地repository下的文件打包成一个zip包
- 使用sftp工具上传到linux /opt目录
- 使用
unzip repository.zip
命令进行解压 - 进入该目录
cd /opt/repository
- 创建mavenimport.sh脚本,内容如下
#!/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
授权该脚本可执行 - 执行导入命令(地址和账号密码更换为自己的maven nexus信息)
./mavenimport.sh -u user -p password -r http://ip:port/repository/maven-releases/
- 执行完毕后进行刷新maven nexus即可看到