Maven私服批量上传pom和jar实操

Maven私服上传pom和jar实操-CSDN博客

Maven私服上传jar实操_maven fakepath-CSDN博客

之前写过两篇向maven私服上传jar的操作,看到阅读量还可以,觉得应该有很多人有这个需求,所以这次再放一个大招,通过批量的方式向私服传jar和pom,这个是笔者在实际操作中实践的结果,用以提高生产效率,希望能对大家有所帮助。

场景描述:

背景如前面两篇介绍的一样,只是后续要上传的体量比较大,一个一个的传比较费时间,因此不得不另辟蹊径找个更稳妥的解决方案。贴出来笔者的环境如下,由于是内网开发,涉及到保密,因此以下环境仅作示意:

整体的开发环境如上图所示:所有开发工作都在内网进行,有个内网的仓库 maven仓库-02 会不定时的跟互联网公共仓库进行同步。其中云桌面为本地开发环境,可以直连maven仓库-02 ,一般情况下够用,由于历史原因还有一个 maven仓库-01 这个是自己搭建的仓库,一般本地开发也会连接这个maven仓库,一般发布的快照版本或者自己封装的公共代码一般也都提交到这个仓库。关键是maven仓库-01maven仓库-02在网络上是隔离的,而且短期这种情况不会改善,因此本地开发不得不连接这两个maven仓库,这个不是最麻烦的,麻烦的是我们的应用部署在测试开发环境,而测试开发环境只能连接maven仓库-01,因此运行的自动化打包编译的脚本或者类似jekins就只能连接maven仓库-01 ,这就导致了提交的代码经常发生因为缺少依赖在测试环境无法打包编译通过的烦恼

解决方案:

前面的文章也介绍过,虽然可以通过单个包上传解决缺包无法编译通过的麻烦,但是这个上传效率着实不敢恭维,有时候遇到了依赖大面积升级简直就是噩梦。

因此不得不倒逼想想其他一劳永逸的办法,最后经过实践终于摸索出了一套解决方案:由于本地仓库能同时连接maven-01 和maven-02 ,本地开发编译都没有问题,因此想办法将本地仓库的所有依赖同时上传到 maven-01 仓库就能解决了,秉持这个思路写个脚本批量上传就行了。

直接上脚本代码:

#!/bin/bash##########################################
# author: caojiangtao 
# datet: 2023-08-17
# desc: upload local repository to nexus 
##########################################if [ $# -ne 2 ] ; thenecho "argv error: please input like mav-upload.sh /d/repository  /com/alibaba "exit 2
fi## 接收两个参数: 第一个为本地仓库的根路径,第二个为需要上传的包的目录
root_resp=$1
target_resp=$2## 进入本地仓库的根目录
cd  ${root_resp}## 查找需要上传的文件
result=`find ${target_resp} -type f -not -path './mav-upload\.sh' -not -path '*/\*' -not -path '*/\^archetype\-catalog\.xml' -not -path '*/\^maven\-metadata\-local*\.xml'  -not -path '*/\^maven\-metadata\-deployment*\.xml' -not -path '*/\_remote.repositories' | sed "s|^\./||" `## 开始上传
echo "start upload files ..."
for res in ${result}
doecho $res | xargs -I '{}' curl -u admin:admin123 -X PUT -v -T {} http://128.196.*.45:8081/nexus/content/respositories/opt/{}
done
echo "upload files successfully !!"## 上传成功,退出
sleep 3
exit 0

上述脚本的脚本需要解决的问题就俩:

  • 上传哪些依赖

其中find命令的主要作用是正则匹配,过滤xml以及repositories等无关文件,这个可以根据需要变化,例如可以只上传7天内本地仓库新增的依赖等,主要是活用find命令。

  • 如何上传

上传通过的是curl命令,其中admin/admin123为远程仓库maven-02的登录用户名和密码,这个要根据实际情况填写,也可以当参数输入,另外 -T 后面跟的文件上传的目标地址也需要根据实际情况更改

这个脚本呢可以让我们的批量上传事半功倍,当然也提供了一种解决思路,后续大家也可以根据这个思路拓展更好用的脚本,而且不限定只使用shell。

温馨提示:如果是windows环境,这个脚本需要在Git Bash中执行,如果没有就自己想办法了!

实测效果:

由于涉及内外机密,实测效果就不跟大家展示了,目前这个方案对我来说比较实用高效。

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

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

相关文章

ChatGPT智能对话绘画系统 带完整的安装源代码包以及搭建教程

系统概述 ChatGPT 智能对话绘画系统是一款集智能语言处理和绘画创作于一体的综合性系统。它利用了深度学习和自然语言处理技术,能够理解用户的意图和需求,并通过与用户的交互,生成富有创意的绘画作品。该系统的核心是一个强大的人工智能模型…

【RAG】PDF Chatbot 个人练手项目

【RAG】PDF Chatbot 个人练手项目 项目的架构和技术选择,以及如何利用它来提升个人的开发能力和理解人工智能技术在文档处理中的应用。 项目截图 后端:FastAPI 应用 功能特性: PDF 文件上传:通过界面或 API,上传 P…

基于weixin小程序新生报到系统的设计

管理员账户功能包括:系统首页,个人中心,学生管理,班级信息管理,师资力量管理,宿舍信息管理,宿舍安排管理,签到信息管理,论坛管理 小程序功能包括:系统首页&am…

Android跨进程调用,Binder线程池溢出导致ANR

Android跨进程调用,Binder线程池溢出导致ANR 如果发生ANR,找到trace.txt 、/data/anr目录下, "main" prio5 tid1 Native| group"main" sCount1 dsCount0 flags1 obj0x72c33e38 self0x78a64c2a00| sysTid1863 nice0 cgr…

Python学习笔记21:进阶篇(十)常见标准库使用之math模块,random模块和statistics模块

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 数学 P…

Hi3861 OpenHarmony嵌入式应用入门--LiteOS semaphore作为锁

CMSIS 2.0 接口中的 Semaphore(信号量)是用于嵌入式系统中多线程或中断服务例程(ISR)之间同步和共享资源保护的重要机制。Semaphore 是一种用于控制对多个共享资源访问的同步机制。它可以被看作是一个计数器,用于跟踪可…

计算机组成原理,网络安全,软件工程等上机报告

这些都是学长们当年的战斗,如果需要的话后台联系我

【从0实现React18】 (六) 完成commit提交流程并初步实现react-dom包,完成首屏渲染测试

前面,我们提到 React 更新流程有四个阶段: 触发更新(Update Trigger)调度阶段(Schedule Phase)协调阶段(Reconciliation Phase)提交阶段(Commit Phase) 之前…

并发编程理论基础——合适的线程数量和安全的局部变量(十)

多线程的提升方向 主要方向在于优化算法和将硬件的性能发挥到极致想要发挥出更多的硬件性能,最主要的就是提升I/O的利用率和CPU的利用率以及综合利用率操作系统已经解决了磁盘和网卡的利用率问题,利用中断机制还能避免 CPU 轮询 I/O 状态,也提…

【机器学习】在【R语言】中的应用:结合【PostgreSQL数据库】的【金融行业信用评分模型】构建

目录 1.数据库和数据集的选择 1.准备工作 2.PostgreSQL安装与配置 3.R和RStudio安装与配置 2.数据导入和预处理 1.连接数据库并导入数据 1.连接数据库 2.数据检查和清洗 1.数据标准化 2.拆分训练集和测试集 3.特征工程 1.生成新特征 2.特征选择 4.模型训练和评估…

使用Tailwindcss之后,vxe-table表头排序箭头高亮消失的问题解决

环境 vue2.7.8 vxe-table3.5.9 tailwindcss/postcss7-compat2.2.17 postcss7.0.39 autoprefixer9.8.8 问题 vxe-table 表格表头 th 的排序箭头在开启正序或逆序排序时,会显示蓝色高亮来提示用户表格数据处在排序情况下。在项目开启运行了tailwindcss之后&#xff0…

数据集的未来:如何利用亮数据浏览器提升数据采集效率

目录 一、跨境电商的瓶颈1、技术门槛2、语言与文化差异3、网络稳定性4、验证码处理和自动识别5、数据安全6、法规和合规 二、跨境电商现在是一个合适的商机吗?三、数据集与亮数据浏览器1、市场分析2、价格监控3、产品开发4、供应链优化5、客户分析 四、亮数据浏览器…

上海计算机学会2020年3月月赛C++丙组T4连乘问题

题目描述 给定 a1​,a2​,⋯,an​,请计算一组乘积,记为P1​,P2​,⋯,Pn​,其中 Pi​ 的定义如下: 也就是说,Pi​ 是 a1​ 到 an​ 的连乘再除去 ai​。由于答案可能比较大,输出每个 Pi​ 模 10000 的余数。…

算法05 模拟算法之二维数组相关内容详解【C++实现】

大家好,我是bigbigli,前面一节我们一节讲过一维数组的模拟了,如果还没看的话,可以👉点击此处。模拟算法还有很多内容需要讲,比如图像、日期相关的模拟算法,后续将继续更新,今天先来讲…

代码随想录——跳跃游戏Ⅱ(Leetcode 45)

题目链接 贪心 class Solution {public int jump(int[] nums) {if(nums.length 1){return 0;}int count 0;// 当前覆盖最远距离下标int curDistance 0;// 下一步覆盖距离最远下标int nextDistance 0;for(int i 0; i < nums.length; i){nextDistance Math.max(nums[…

快速修复mfc100u.dll丢失解决方案

相连文章&#xff1a;SecureCRT的安装破解 [详细过程2024] 有小伙伴向我反馈在打开SecureFX注册机之后显示【mfc100u.dll找不到】重装之后也没有用&#xff0c;这个是因为Microsoft Visual C的运行时组件和库出现了错误&#xff0c;直接选择重新安装就可以 出现这种情况的原因…

高性能并行计算华为云实验五:PageRank算法实验

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建PageRank源码 3.2 makefile的创建和编译 3.3 主机配置文件建立与运行监测 四、实验结果与分析 4.1 采用默认的节点数量及迭代次数进行测试 4.2 分析并行化下节点数量与耗时的变化规律 4.3 分析迭代次数与耗时的变…

MySQL——联表查询JoinON详解

Join 对比&#xff08;7种&#xff09; 代码演示&#xff1a; -- 查询参加了考试的同学&#xff08;学号&#xff0c;姓名&#xff0c;科目编号&#xff0c;分数&#xff09; SELECT * FROM student SELECT * FROM result/* 1. 分析需求&#xff1a;分析查询的字段来自哪些表&…

spring原理篇

第三方bean默认为方法名 自动配置 自动配置的原理 springboot的自动配置原理 首先是从 SpringBootApplication这个注解出发 有一个ComponentScan()默认扫描同级包及其子包 第二个注解是springbootconfiguration 声明当前类是一个配置类 第三个是核心 enableAutoConfigurati…

通过看板系统管理工作流程:强调持续交付与可视化工作的全面指南

目录 前言1. 看板系统简介1.1 看板系统的基本原理1.2 看板系统的主要特点 2. 强调持续交付的重要性2.1 持续交付的优势2.2 持续交付的实施步骤 3. 可视化工作的核心价值3.1 提高透明度和可见性3.2 促进工作流程的优化3.3 增强团队的自我管理能力 4. 看板系统的实施指南4.1 初始…