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包的更多相关文章

  1. Flutter学习笔记(28)--使用第三方jar包

    如需转载,请注明出处:Flutter学习笔记(28)--使用第三方jar包 1.打开一个Flutter项目,点击编码窗口右上角的Open for Editing in Android Studio,这 ...

  2. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  3. 查找类class所在的jar包

    CTRL+SHIFT+R 意思是输入关键字搜索当前工程的 对象. CTRL+SHIFT+T 输入关键字搜索当前工程的类.

  4. 上传第三方jar包至maven私服,以geotools为例

    上传jar包(模块打包方式为jar) mvn deploy:deploy-file -DgroupId=org.geotools -DartifactId=gt-api -Dversion=10.3 ...

  5. 操作实践:maven工程查找工程中多余的jar包

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 版本迭代过程中对jar的依赖可能会产生变化,一些本不必再依赖的jar包可以因为没有清除而依然留在版本的发布 ...

  6. 一篇关于Maven项目的jar包Shell启动脚本

    使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...

  7. Linux查找class类所在jar包

    1.说明 写代码或者定位问题的时候, 经常发生只知道类名不知道其所在jar包的问题, 在Eclipse中可以使用Ctrl+Shift+T查找类, 但是如果类所在的jar包不在Build Path中, ...

  8. 自己动手写文件查找,字符串查找,查询jar包等工具

    文件查找——搜索当前目录下的文件 知道大概的文件名称,使用 findf FileName findf.py import argparse, re, os from os.path import jo ...

  9. JAVA Maven 安装 jar 包到本地仓库,以 Oracle11g 的访问包 为例

    maven 作为 java 的首选包管理工具,使我们在创建和维护项目的时候变得十分简单,但是 maven 仓库并不是拥有的一切 jar 包的, 很多 jar 包由于收费或者版权什么的其他原因,并不存在 ...

  10. linux下shell脚本启动jar包

    本文采用的jar包是通过idea下maven打包的springboot项目. 写这个shell脚本是为了在linux下方便启动jar包时不用输入太多的shell命令,将启动脚本的一系列shell命令整 ...

随机推荐

  1. C++通过文件指针获取文件大小

    目录 1. 叙述 2. 结论 1. 叙述 对于读取本地文件,很多时候需要预先知道本地文件的大小在进行读取.网上给出的方案是移动文件指针,计算文件头和文件尾的偏移,计算出文件的大小.但是我总觉得这样做可 ...

  2. 面试官让列举Spring的事务会失效的场景,我说了8个

    本文分享自华为云社区<哪些场景下Spring的事务会失效?>,作者:冰 河 . 在日常工作中,如果对Spring的事务管理功能使用不当,则会造成Spring事务不生效的问题.而针对Spri ...

  3. 云小课 | 玩转HiLens Studio之手机实时视频流调试代码

    摘要:在开发技能过程中,搭配视频流调试技能是非常必要的环节,也是检验技能效果的重要环节.HiLens Studio推出使用手机实时视频流调试代码的功能,以手机摄像头实时的视频流作为技能输入,查看技能输 ...

  4. 如何使用参数化查询提高Cypher查询的性能

    摘要:在DBMS中,参数化查询被视为一种有效预防SQL注入攻击的手段. 本文分享自华为云社区<使用参数化查询提高Cypher查询的性能:以华为云图引擎GES为例>,作者: 蜉蝣与海. 在D ...

  5. 万字讲解WiFi为何物

    摘要:WiFi是一种基于IEEE802.11系列协议标准实现的无线通信技术. 本文分享自华为云社区<[云驻共创]物联网无线短距离Wi-Fi技术专题>,作者:Mr红凯. 前言 Wi-Fi通往 ...

  6. 图解带你掌握`JVM`运行时核心内存区

    摘要:堆空间差不多是最大的内存空间,也是运行时数据区最重要的内存空间.堆可以处于物理上不连续的内存空间,但在逻辑上它应该被视为连续的. 本文分享自华为云社区<醒酒菜:动画图解核心内存区--堆&g ...

  7. VS IIS Express 启动项目后,绑IP让别人可以访问你的网站

    如何VS IIS Express 启动项目后,绑本机IP,让别人可以访问你的网站,方便Debug 一.修改iis配置 1.在web服务器执行后,会运行IIS Express,右击它选择显示所有应用程序 ...

  8. Hugging News #0609: 最新代码生成模型 StarCoder+ 和 StarChat Beta 重磅发布!

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  9. 100天搞定机器学习|Day60 遇事不决,XGBoost

    XGBoost 是一种集大成的机器学习算法,可用于回归,分类和排序等各种问题,在机器学习大赛及工业领域被广泛应用.成功案例包括:网页文本分类.顾客行为预测.情感挖掘.广告点击率预测.恶意软件分类.物品 ...

  10. # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint

    linux使用go连接etcd集群时报错: # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint /root/go/pkg/mod/ ...