基于自动化脚本批量上传依赖到nexus内网私服

发布时间:2023年12月17日

前言

因为某些原因某些企业希望私服是不能连接外网的,所以需要某些开源依赖需要我们手动导入到nexus中,尽管nexus为我们提供了web页面。但是一个个手动导入显然是一个庞大的工程。

在这里插入图片描述

对此我们就不妨基于脚本的方式实现这一过程。

预期效果

笔者本地仓库有一个自定义的jar包,本次实验会通过脚本的方式将其上传到私服上。

在这里插入图片描述

然后我们其他的项目会通过私服将这个依赖引入,实现内网引入这个自定义依赖,如下图所示,将自定义通过脚本批量导入私服之后,我们可以直接导入。

在这里插入图片描述

操作步骤

创建自定义hosted仓库

因为笔者私服是nexus3所以基于脚本导入依赖时是需要自己手动创建hosted仓库的。

在这里插入图片描述

进入选择页面,我们选择maven-hosted,进行本地仓库配置。

在这里插入图片描述

配置我们的本地仓库,读者可以按照下图的注释自行配置。

在这里插入图片描述

在这里插入图片描述

完成配置后到最下方点击创建。

在这里插入图片描述

将本地依赖传到服务器上

以笔者为例,为了实验笔者将所有的com包都传到服务器上。

在这里插入图片描述

编写脚本

我们仓库目录中编写脚本,以笔者为例,笔者仓库目录为/tmp/nexus-repository/,所以笔者就在这个目录编写一个脚本

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.sh -u nexus账户 -p nexus密码 -r 自定义hosted地址

以笔者为例,笔者的命令就是

./mavenimport.sh -u admin -p xxxxx -r http://ip:8081/repository/my-hosted/

查看是否导入成功

然后脚本就会不断输出内容,将com包的所有依赖导入到nexus私服中,待脚本执行结束后,我们到nexus管理页面查看一下依赖是否导入成功。

点击浏览,查看我们的自定义仓库。

在这里插入图片描述

可以看到我们的com包都成功导入了。

在这里插入图片描述

测试

我们本地将com包删除,然后引入自定义的com依赖看看。

在这里插入图片描述

到idea点击导入

在这里插入图片描述

可以看到类成功导入了,实验成功。

在这里插入图片描述

注意事项

为什么我脚本执行没有报错,但是依赖没有上传到nexus呢?

  1. 检查是否可以登录,如果不能登录请尝试重启,先确保可以登录,因为我们的脚本执行逻辑就是先登录再传依赖。
  2. 使用脚本导入依赖需要从根文件夹进行导入,例如我们要导入spring-boot-starter-actuator那么我们就必须将\org这个目录直接上传上去进行导入。

如下图,我们必须将整个IO上传到服务器上,然后使用脚本导入。

在这里插入图片描述

  1. 完成后需要将maven中对应文件夹下的.lastUpdated文件删除,之后即可正常导入了。

参考文献

将本地库批量导入到Nexus3.x上(Maven私服)

文章来源:https://blog.csdn.net/shark_chili3007/article/details/123265679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。