ChatGPT学习之_shell脚本一例-查找版本冲突的第三方jar包
ChatGPT学习之_shell脚本一例-查找版本冲突的第三方jar包
背景
自从换了Java后
产品里面用到了非常多的第三方组建,也就是很多jar包.
产品内的研发规范要求, jar包不能带版本号和snapshot的标识
必须使用原始的文件名, 避免有多个版本导致java类加载器出现顺序问题导致异常.
但是第三方jar包其实没有这么过规则. 大部分都是使用带版本号的进行处理
这样有几个比较大的好处, 可以很直观的看到版本. 对开发测试工作量来说比较有益处
但是处在一个大的弊端在于, 如果产品里面包含了多个版本, 单纯通过文件名就很难进行分析和判断了.
因为最近要换一个环境, 今天同事问到我后 感觉可以通过chatgpt的方式进行一下问题解决.
比自己之前单纯的自己死抠代码和百度要好多了.
然后发现有了思路之后三分钟就可以讲脚本写好.
思路
大部分重复的jar包(只能这么说, 如果改了名字, 这个方法也无能为力)
一般是通过数字版本号来进行区分.
如果将数字版本号trim掉,然后再将大小写全部改为小写, 再进行排序就可以很简单的找到可能有版本冲突的jar包了.
刚才自己花了十分钟看到了三个jar包存在问题.
然后尝试使用脚本进行处理 发现3分钟写好, 就可以发现四个冲版本冲突的jar包.
思路很简单
1. 在3rd的目录下面进行操作
2. 将所有的文件名中的梳子替换为空
3. 将数字已经替换为空的名字进行大小写替换.
4. 将最终的结果进行排序和计数
第一版本的脚本为:
for i in $(for i in `ls` ; do echo $i | sed 's/[0-9]*//g' ; done) ; do echo $i |tr '[:upper:]' '[:lower:]' ; done |sort |uniq -c |sort -k1h
发现自己多此一举了, 第二个版本的脚本为:
for i in `ls` ; do echo $i | sed 's/[0-9]*//g' |tr '[:upper:]' '[:lower:]' ; done |sort |uniq -c |sort -k1h
更容易的处理方式为:
for i in `ls` ; do echo $i | sed 's/[0-9]*//g' |tr '[:upper:]' '[:lower:]' ; done |sort |uniq -c |sort -k1h |awk '$1 >1 {print}'
结果为:
2 ehcache-...jar
2 hutool-all-...jar
2 okhttp-...jar
3 netty-codec-http-...final.jar
命令查找相当简单

ChatGPT学习之_shell脚本一例-查找版本冲突的第三方jar包的更多相关文章
- Flutter学习笔记(28)--使用第三方jar包
如需转载,请注明出处:Flutter学习笔记(28)--使用第三方jar包 1.打开一个Flutter项目,点击编码窗口右上角的Open for Editing in Android Studio,这 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- 查找类class所在的jar包
CTRL+SHIFT+R 意思是输入关键字搜索当前工程的 对象. CTRL+SHIFT+T 输入关键字搜索当前工程的类.
- 上传第三方jar包至maven私服,以geotools为例
上传jar包(模块打包方式为jar) mvn deploy:deploy-file -DgroupId=org.geotools -DartifactId=gt-api -Dversion=10.3 ...
- 操作实践:maven工程查找工程中多余的jar包
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 版本迭代过程中对jar的依赖可能会产生变化,一些本不必再依赖的jar包可以因为没有清除而依然留在版本的发布 ...
- 一篇关于Maven项目的jar包Shell启动脚本
使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...
- Linux查找class类所在jar包
1.说明 写代码或者定位问题的时候, 经常发生只知道类名不知道其所在jar包的问题, 在Eclipse中可以使用Ctrl+Shift+T查找类, 但是如果类所在的jar包不在Build Path中, ...
- 自己动手写文件查找,字符串查找,查询jar包等工具
文件查找——搜索当前目录下的文件 知道大概的文件名称,使用 findf FileName findf.py import argparse, re, os from os.path import jo ...
- JAVA Maven 安装 jar 包到本地仓库,以 Oracle11g 的访问包 为例
maven 作为 java 的首选包管理工具,使我们在创建和维护项目的时候变得十分简单,但是 maven 仓库并不是拥有的一切 jar 包的, 很多 jar 包由于收费或者版权什么的其他原因,并不存在 ...
- linux下shell脚本启动jar包
本文采用的jar包是通过idea下maven打包的springboot项目. 写这个shell脚本是为了在linux下方便启动jar包时不用输入太多的shell命令,将启动脚本的一系列shell命令整 ...
随机推荐
- CutMix&Mixup详解与代码实战
摘要:本文将通过实践案例带大家掌握CutMix&Mixup. 本文分享自华为云社区<CutMix&Mixup详解与代码实战>,作者:李长安. 引言 最近在回顾之前学到的知识 ...
- LiteOS:盘点那些重要的数据结构
摘要:本文会给读者介绍下LiteOS源码中常用的几个数据结构,包括: 双向循环链表LOS_DL_LIST,优先级队列Priority Queue,排序链表SortLinkList等. 在学习Huawe ...
- 想快速重构智慧园区5A系统,这份方案推荐给你
摘要:近年来,园区的数字化一直在演进,从OA.CA.BA.SA.FA等单一系统的信息化建设,到以应用为主导的大系统集成,再到以云.大数据为基础的数据开放平台构建,继而进入全量数据融合.数字技术泛在的智 ...
- 万字详解什么是生成对抗网络GAN
摘要:这篇文章将详细介绍生成对抗网络GAN的基础知识,包括什么是GAN.常用算法(CGAN.DCGAN.infoGAN.WGAN).发展历程.预备知识,并通过Keras搭建最简答的手写数字图片生成案. ...
- React Native 打包 App 发布 iOS 及加固混淆过程
React Native 打包 App 发布 iOS 及加固混淆过程 摘要 本文将介绍如何使用 React Native 打包并发布 iOS 应用到 App Store,并介绍了如何进行应用的加固和混 ...
- 中企出海,用火山引擎DataTester开启增长第一步
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 今年 Google 宣布其提供的A/B测试工具 Optimize 将在2023年9月30号停止服务.在全球化浪 ...
- PPT 动画-制作一个倒酒
波浪往左上方,慢慢运动 数字 渐入 + 渐出 + 居中对齐 酒杯绘制 波浪绘制 上方的点全部设成[平滑顶点] https://getwaves.io/ 快速生成波浪[Office 2016 不支持插入 ...
- Go--连接mysql,增删改查
下载驱动库,下为官方推荐的,还有其他ORM库,暂时没涉及,故本文不做阐述 go get -u github.com/go-sql-driver/mysql 一.连接 1.1 直接连接,查询单行 pac ...
- Go--变量的声明
Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性. 变量是一段或多段用来存储数据的内存,在go中,变量一旦被定义,一定要使用,不然会报错 内建变量类型 ...
- 【POJ 2279】Mr. Young’s Picture Permutations【线性DP】
题目: 有N个学生合影,站成左端对齐的k排,每排有 \(N-1,N_2,-N_k\)个人,第一排在最后面.学生的身高互不相同,分别为\(1-N\),并且合影时要求每一排从左往右身高递减,每一列从后往前 ...