Nexus创建maven仓库导入maven依赖
Nexus创建maven仓库导入maven依赖
近期使用公司内网的Nexus搭了项目的镜像仓库,方便统一做项目的依赖管理,此处做下记录。
引入
导入Nexus分为单个和批量导入,本篇使用界面做单个依赖导入,使用脚本做批量导入。
项目环境:
-
Nexus:3.21.1-01
-
Tabby:1.0.168
此处略去Nexus服务器搭建过程,可自行百度,以下步骤为创建仓库并导入依赖。
1、创建Maven仓库
【注】此处仓库名称可自行确定。
以上,直接点【save】创建仓库即可。
2、导入单个依赖
此处在Nexus服务器界面导入单个依赖。
在导入界面,选中本地jar包,并填写jar包对应maven坐标,即可上传单个依赖,以下以mysql驱动依赖为例。
完成后可在maven仓库里看到上传的依赖。
3、批量导入依赖
Nexus3需要使用脚本做批量导入,可直接使用Nexus服务器做导入,也可分别使用两台服务器,一台为导入服务器,一台Nexus服务器。
此处为了更通用,模拟两台服务器的情况,一台导入服务器,一台Nexus服务器,从导入服务器向Nexus服务器做导入。
【注】导入服务器和Nexus服务器之间网络必须互通。
3.1 在导入服务器创建依赖文件夹
mkdir /usr/repo
3.2 将依赖文件上传到导入服务器
进入本地仓库,将所有依赖文件压缩成一个压缩文件,再借助远程登录工具的SFTP服务,将本地的依赖文件压缩包上传到服务器上,再在服务器上解压。
执行以下命令解压文件:
unzip maven.zip -d /usr/repo/
解压后:
3.3 编写批量导入脚本
直接在当前目录/usr/repo
使用vim编辑器。
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 './mavenUpload\.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}/{} ;
3.3.1 如脚本为Windows上传需执行此步骤
如果以上mavenimport.sh
脚本为Windows编辑后上传后续执行会出现问题,如直接在Linux服务器上使用vim编辑器可跳过此步骤。
此处模拟Windows编辑脚本后上传,执行脚本:
会出现报错:
mavenimport.sh:行5: $'\r': 未找到命令
mavenimport.sh:行7: 未预期的符号 `$'in\r'' 附近有语法错误
'avenimport.sh:行7: ` case $opt in
使用vim编辑器查看会发现脚本存在问题,每一行后面都加了^M。
vim -b mavenimport.sh
为解决此问题,执行以下命令:
sed -i 's/\r//g' mavenimport.sh
再次执行上诉vim -b mavenimport.sh
可发现脚本已正常。
3.4 向Nexus仓库批量导入依赖
执行以下命令:
sh /usr/repo/mavenimport.sh -u admin -p admin -r http://186.1.1.192:8081/repository/maven/
【注】以下参数需根据实际情况调整。
-u 后为Nexus服务器账号
-p 后为Nexus服务器密码
-r 后为Nexus服务器仓库地址
待脚本执行完成后到Nexus仓库查看:
以上已完成依赖批量导入Nexus仓库。