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

news2024/10/5 12:49:25

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 ] ; then
  echo "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}
do
    echo $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.coloradmin.cn/o/1863629.html

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

相关文章

STM32F4 STD标准库串口接收例程

STM32F4 STD标准库串口接收中断空闲中断例程 🔖工程基于STM32F446 ✨用惯了STM32CubeMX傻瓜式配置,突然改用标准库写代码,初始化外设内容,总是丢三落四的。 本文将提供3种串口接收和发送模式:串口接收中断空闲中断、串…

PostgreSQL 用户及授权管理 06:启用 SSL 及验证

PostgreSQL 用户及授权管理 06:启用 SSL 及验证 安全在外企中是非常受重视的,一般外企都会要求所有可以使用加密的地方都使用加密。本小节我们启用 PostgreSQL 的 SSL 加密连接并进行抓包验证。 SSL 连接加密 安全套接字层 (SSL) 允许 PostgreSQL 接受…

Vite响应Ajax请求

Vite响应Ajax请求 陈拓 2024/06/20-2024/06/24 1. 概述 http-server、live-server 等常用于本地测试和开发的http服务器不能很好的支持 ES 模块,在测试ES 模块时浏览器控制台经常显示错误: Failed to load module script: Expected a JavaScript modu…

element-ui侧边栏:default-openeds

element-ui侧边栏实现路由跳转后展开对应侧边栏:default-openeds 当菜单是在本地写死时,如果想展开第一块内容、里面就只写1 :default-openeds"[‘1’]" 当菜单是动态获取时,点击跳转之后如何展开对应的菜单,在watch中监…

three.js围绕中心点的旋转动画代码和案例

在 Three.js 中,可以通过设置对象的旋转中心点来实现围绕一个中心点旋转。具体的实现步骤如下: 首先,创建一个场景、相机和渲染器: // 创建一个场景 var scene new THREE.Scene();// 创建一个透视相机 var camera new THREE.P…

Vite打包速度为什么比webpack快,打包的优劣势在哪里?

大家都有被webpack打包速度搞崩溃的时候,修改一处地方,想预览效果,要等上半天。 Vite比Webpack快的原因 ESM(ES Module)原生支持: Vite基于ESM构建,利用浏览器原生支持的ESM模块加载方式&…

【技术解码】百数SRM:如何助力企业快速优化供应链管理?

SRM应用是企业优化供应链管理的重要工具,它帮助企业全面管理供应商关系,从评估、选择到协同合作和绩效监控,确保供应链的稳定性和效率。 对于企业来说,通过全面管理供应商关系,可以降低采购风险,提升产品质…

Open AI 前 Superalignment部门研究员Leopold Aschenbrenner的关于Superintelligence担忧的真挚长文

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

002_unsigned long数据比较的坑?

【背景】 unsigned long 类似数据的比较问题,先上一段代码,如下图所示: 就是图中框出的部分,眨眼一看,应该没啥问题,而且我也在本地的编译器vs2019上编译了,确实也没有报错,所以就修…

基于java+springboot+vue实现的宠物商城网站(文末源码+Lw)273

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,商品信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

java启动命令与参数配置

1. java启动命令 运行一个java应用程序的语法分两种,分别为: 执行类:java [-options] class [args…] 执行jar文件:java [-options] -jar jarfile [args…] 其中 [-options] 配置 JVM参数,[args…] 配置 Java 运行参…

11.xss之href输出

11.xss之href输出 后台配置文件中的代码 xss之href输出绕过:javascript:alert(1111) 直接代入a标签herf里面一样可以绕过htmlspecialchars 输入攻击代码 javascript:alert(1111)点击蓝色字体直接会弹窗,如图所示:

Javac编译器

Java语言的编译器是一段不确定的操作过程,可能是讲Java文件转变为class文件的过程,也可能是指虚拟机的后端编译,讲字节码转换为机器码的过程,还肯是静态提前编译器直接讲Java文件编译为本地机器代码的过程。 前端编译器&#xff…

HTML5五十六个民族网站模板源码

文章目录 1.设计来源高山族1.1 登录界面演示1.2 注册界面演示1.3 首页界面演示1.4 中国民族界面演示1.5 关于高山族界面演示1.6 联系我们界面演示 2.效果和源码2.1 动态效果2.2 源代码2.3 源码目录 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.ne…

压箱底的15套无代码可视化数据大屏

学习视频smardaten致力于大数据、人工智能领域前沿技术研发,充分挖掘生产生活的海量数据,提供覆盖全行业的、超大规模的数据治理与智能分析服务,平台旨在用全方位、前沿化的大数据、人工智能等数据智能技术,突破行业数据管理难题&…

第1章 物联网模式简介---独特要求和体系结构原则

物联网用例的独特要求 物联网用例往往在功耗、带宽、分析等方面具有非常独特的要求。此外,物联网实施的固有复杂性(一端的现场设备在计算上受到挑战,另一端的云容量几乎无限)迫使架构师做出艰难的架构决策和实施选择。可用实现技…

分享一套基于SSM的美食推荐管理系统(源码+文档+部署)

大家好,今天给大家分享一套基于SSM的美食推荐管理系统 开发语言:Java 数据库:MySQL 技术:SpringSpringMvcMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 博主介绍: 一名Java全栈工程师,专注于Jav…

高质量数据不够用,合成数据是打开 AGI 大门的金钥匙吗?

编者按: 人工智能技术的发展离不开高质量数据的支持。然而,现有可用的高质量数据资源已日渐接近枯竭边缘。如何解决训练数据短缺的问题,是当前人工智能领域亟待解决的一个较为棘手的问题。 本期文章探讨了一种经实践可行的解决方案 —— 合成…

EE trade:利弗莫尔三步建仓法

在股市投资领域,利弗莫尔这个名字代表着无数的智慧和经历。他的三步建仓法成为了投资者们趋之若鹜的学习对象。本文将详细解析利弗莫尔的著名买入法,通过分步进攻方式,有效掌控市场并实现盈利。 一、利弗莫尔的三步建仓法详解 利弗莫尔三步…

(9)农作物喷雾器

文章目录 前言 1 必要的硬件 2 启用喷雾器 3 配置水泵 4 参数说明 前言 Copter 包括对农作物喷雾器的支持。该功能允许自动驾驶仪连接到一个 PWM 操作的泵和(可选)旋转器,根据飞行器速度控制液体肥料的流动速度。 稍微过时的视频显示了…