背景
项目之前的私有仓库不能使用了,本地仓库可以,但是一旦clean就没了,所以在本地有依赖的时候可以自己搭建一个maven私有仓库然后将依赖全部上传上去
搭建:使用docker-compose方式搭建
docker-compose文件
version: "3.3"
services:
nexus:
image: sonatype/nexus3
container_name: nexus3
restart: "no"
environment:
- TZ=Asia/Shanghai
ports:
- 9091:8081
volumes:
- ./data:/nexus-data
我这里使用本地的9091端口映射到虚拟机中的8081端口,所以本地访问9091就可以
将docker-compose文件所在目录的data目录作为此仓库存储位置
镜像配置
vim ~/.docker/daemon.json
在registry-mirrors下添加镜像地址,这样可以在pull镜像时速度更快
中科大:https://docker.mirrors.ustc.edu.cn/
阿里云:https://你的阿里云加速地址.mirror.aliyuncs.com(去阿里云搜索镜像加速器)
启动
docker-compose up -d
稍等一会儿后即可启动,在浏览器访问9091端口即可
然后新建仓库,用于上传依赖包到仓库
这里我新建的仓库地址是:http://127.0.0.1:9091/repository/local_repo
将依赖全部放在一个文件夹内
例如我这里放到了这儿:
然后在这个mavenimport文件夹下新建文件:vim 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 +x mavenimport.sh
上传依赖
在mavenimport路径下,执行:./mavenimport.sh -u nexus用户名 -p 密码 -r http://127.0.0.1:9091/repository/local_repo/
稍等片刻直到脚本执行完毕即可