Nexus创建maven仓库导入maven依赖

Nexus创建maven仓库导入maven依赖

近期使用公司内网的Nexus搭了项目的镜像仓库,方便统一做项目的依赖管理,此处做下记录。

引入

导入Nexus分为单个和批量导入,本篇使用界面做单个依赖导入,使用脚本做批量导入。

项目环境:

  • Nexus:3.21.1-01

  • Tabby:1.0.168

此处略去Nexus服务器搭建过程,可自行百度,以下步骤为创建仓库并导入依赖。

1、创建Maven仓库

image

image

【注】此处仓库名称可自行确定。
image

以上,直接点【save】创建仓库即可。

2、导入单个依赖

此处在Nexus服务器界面导入单个依赖。
image

在导入界面,选中本地jar包,并填写jar包对应maven坐标,即可上传单个依赖,以下以mysql驱动依赖为例。
image

完成后可在maven仓库里看到上传的依赖。

3、批量导入依赖

Nexus3需要使用脚本做批量导入,可直接使用Nexus服务器做导入,也可分别使用两台服务器,一台为导入服务器,一台Nexus服务器。

此处为了更通用,模拟两台服务器的情况,一台导入服务器,一台Nexus服务器,从导入服务器向Nexus服务器做导入。

【注】导入服务器和Nexus服务器之间网络必须互通。

3.1 在导入服务器创建依赖文件夹

mkdir /usr/repo

3.2 将依赖文件上传到导入服务器

进入本地仓库,将所有依赖文件压缩成一个压缩文件,再借助远程登录工具的SFTP服务,将本地的依赖文件压缩包上传到服务器上,再在服务器上解压。
image
image

执行以下命令解压文件:

unzip maven.zip -d /usr/repo/

解压后:
image

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}/{} ;

image

3.3.1 如脚本为Windows上传需执行此步骤

如果以上mavenimport.sh脚本为Windows编辑后上传后续执行会出现问题,如直接在Linux服务器上使用vim编辑器可跳过此步骤。

此处模拟Windows编辑脚本后上传,执行脚本:
image

会出现报错:

mavenimport.sh:行5: $'\r': 未找到命令
mavenimport.sh:行7: 未预期的符号 `$'in\r'' 附近有语法错误
'avenimport.sh:行7: ` case $opt in

使用vim编辑器查看会发现脚本存在问题,每一行后面都加了^M。

vim -b mavenimport.sh

image

为解决此问题,执行以下命令:

sed -i 's/\r//g' mavenimport.sh

再次执行上诉vim -b mavenimport.sh可发现脚本已正常。
image

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仓库查看:
image

以上已完成依赖批量导入Nexus仓库。


吾生也有涯,而知也无涯。

posted @ 2022-07-04 14:32  V少年如他  阅读(2182)  评论(0编辑  收藏  举报