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

news2024/12/25 16:32:08

前言

因为某些原因某些企业希望私服是不能连接外网的,所以需要某些开源依赖需要我们手动导入到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私服)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1308687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】网络编程-UDP回响服务器客户端简单代码编写

这一篇文章我们将讲述网络编程中UDP服务器客户端的编程代码 1、前置知识 UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。 UDP的特点有:无连接、尽最大努力交付、面向报文、没有拥塞控制 本文讲…

为什么FPGA是战略芯片?

FPGA(Field Programmable Gate Array)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物,它是作为一种半定制电路而出现的,既解决了定制电路的不足&…

提升数据采集技能:用 Axios 实现的 Twitter 视频下载器全面解析

引入 在当今数据驱动的时代,高效的数据采集是实现成功数据科学项目的关键。数据采集不仅涉及到数据的获取,还包括数据的清洗、转换、存储和分析等多个环节。Twitter作为全球最大的社交媒体平台之一,蕴含着丰富的信息和海量的多媒体内容&…

计算机网络:数据链路层(网桥)

带你速通计算机网络期末 目录 一、冲突域和广播域 二、网桥介绍 三、网桥分类—―透明网桥 四、网桥分类―—源路由网桥 五、多接口网桥―—以太网交换机 总结 一、冲突域和广播域 冲突域:在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只…

C# WPF上位机开发(内嵌虚拟机的软件开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 学习过halcon的同学都知道,它不仅有很多的图像算子可以使用,而且调试很方便。每一步骤的调试结果,都可以看到对…

WWW 指南-万维网联盟(World Wide Web)

WWW - 万维网联盟 WWW通常称为网络。 web是一个世界各地的计算机网络。 电脑在Web上使用标准语言沟通。 万维网联盟(W3C)制定了Web标准 什么是WWW? WWW 代表 World Wide Web(万维网)万维网常常被称为 网络网络是世界各地的计算机网络网络中…

Spark分布式内存计算框架

目录 一、Spark简介 (一)定义 (二)Spark和MapReduce区别 (三)Spark历史 (四)Spark特点 二、Spark生态系统 三、Spark运行架构 (一)基本概念 &#x…

博客社区资讯APP源码/开源知识付费社区小程序源码/资源社区源码/独有付费阅读+兼容安卓苹果

源码简介: 博客社区资讯APP源码,它是开源知识付费小程序源码,作为资源社区源码,它具有独有付费阅读兼容安卓苹果。它是Typecho后端的。 知识付费社区RuleApp多内容发布,后端基于Typoche博客程序开发带完整安装文档 竟…

互联网,我们的虚拟世界

同学们,你们知道互联网是干什么的吗?它就像一个虚拟的世界,让我们能够连接到任何地方,获取任何信息,就像你现在正在通过互联网阅读我的文章一样。 互联网 你们有没有想过,如果没有互联网,我们的…

借助3D文档控件Aspose.3D,用Java 创建 3D 场景

3D 场景是在计算机上显示 3D 形状的一种方式。在本指南中,我们将学习如何使用 Java 创建 3D 场景,而不需要任何特殊的 3D 软件。之后,我们将以FBX文件格式保存 3D 场景,这是共享 3D 内容的常见方式。那么,让我们开始吧…

BearPi Std 板从入门到放弃 - 先天神魂篇(3)(RT-Thread I2C设备)

简介 使用BearPi IOT Std开发板及其扩展板E53_SC1, SC1上有I2C1 的光照强度传感器BH1750 和 EEPROM AT24C02, 本次主要就是读取光照强度; 主板: 主芯片: STM32L431RCT6LED : PC13 \ 推挽输出\ 高电平点亮串口: Usart1I2C使用 : I2C1E53_SC1扩展板 : LE…

4G工业路由器物联网解决方案智慧储能系统

储能系统是用于电网和用户间起到电力缓冲和削峰填谷作用的电力管理平台。储能系统通常由电池、充电机、控制器、电能质量治理装置及监控系统组成。主要应用于可再生能源发电系统,电力需求侧响应,电动汽车充电等领域。 4G工业路由器是一款专门针对物联网…

winform使用CefSharp嵌入VUE网页并交互

1、NuGet添加CefSharp 如果下载慢或失败可以更新下载源 腾讯资源https://mirrors.cloud.tencent.com/nuget/华为资源https://repo.huaweicloud.com/repository/nuget/v3/index.json 2、将项目平台改为X64 3、在winform窗体添加cef using CefSharp; using CefSharp.WinForms; u…

Flink的容错机制

容错机制 容错:指出错后不影响数据的继续处理,并且恢复到出错前的状态。 检查点:用存档读档的方式,将之前的某个时间点的所有状态保存下来,故障恢复继续处理的结果应该和发送故障前完全一致,这就是所谓的检…

【C语言】操作符详解(三)

目录 逗号表达式 下标访问[ ],函数调用( ) 下标引用操作符[ ] 函数调用操作符() 逗号表达式 exp1,exp2,exp3,...expN 逗号表达式,就是用逗号隔开的多个表达式…

C# 提取PDF中指定文本、图片的坐标

获取PDF文件中文字或图片的坐标可以实现精确定位,这对于快速提取指定区域的元素,以及在PDF中添加注释、标记或自动盖章等操作非常有用。本文将详解如何使用国产PDF库通过C# 提取PDF中指定文本或图片的坐标位置(X, Y轴)。 ✍ 用于…

Linux---切换目录命令

1. 切换目录命令的使用 命令说明cd 目录切换到指定目录cd ~切换到当前用户的主目录cd ..切换到上一级目录cd .切换到当前目录cd -切换到上一次目录 注意: cd命令切换目录时,这个目录必须存在。cd 后面不写目录等价于cd ~ cd 目录效果图: cd ~效果图: cd ..效果图…

leetcode --15 三数之和 【双指针 C++】

原题链接:15. 三数之和 - 力扣(LeetCode) 题目解析: 题目中说的不可以包含重复的三元组,从示例1可以看出[-1,0,1] 和[0,1,-1]虽然三个数顺序不同但是元素重复了,所以只选取其中一个。而本题难点也在于去重…

论文阅读:MonetDB/X100: Hyper-Pipelining Query Execution

目录 Abstract 1 Introduction 1.1 Outline 2 How CPU Work Abstract 在决策支持、OLAP和多媒体检索等计算密集型应用领域,数据库系统往往只能在现代cpu上实现较低的IPC(每周期指令)效率。本文首先以TPC-H基准为重点,深入研究了这种情况发生的原因。…

Linux操作系统学习(一)、Linux是什么与如何学习

Linux 软件移植 如果一个操作系统适应了一套硬件,但是当新的硬件产品出现之后,这个操作系统就不适用了,所以我们又得去修改操作系统,这种概念就叫做软件移植。 可移植性 由于Linux是开源的操作系统,所有他的程序码…