ChatGPT学习之_shell脚本一例-查找版本冲突的第三方jar包


背景

  1. 自从换了Java
  2. 产品里面用到了非常多的第三方组建,也就是很多jar包.
  3. 产品内的研发规范要求, jar包不能带版本号和snapshot的标识
  4. 必须使用原始的文件名, 避免有多个版本导致java类加载器出现顺序问题导致异常.
  5. 但是第三方jar包其实没有这么过规则. 大部分都是使用带版本号的进行处理
  6. 这样有几个比较大的好处, 可以很直观的看到版本. 对开发测试工作量来说比较有益处
  7. 但是处在一个大的弊端在于, 如果产品里面包含了多个版本, 单纯通过文件名就很难进行分析和判断了.
  8. 因为最近要换一个环境, 今天同事问到我后 感觉可以通过chatgpt的方式进行一下问题解决.
  9. 比自己之前单纯的自己死抠代码和百度要好多了.
  10. 然后发现有了思路之后三分钟就可以讲脚本写好.

思路

  1. 大部分重复的jar包(只能这么说, 如果改了名字, 这个方法也无能为力)
  2. 一般是通过数字版本号来进行区分.
  3. 如果将数字版本号trim掉,然后再将大小写全部改为小写, 再进行排序就可以很简单的找到可能有版本冲突的jar包了.
  4. 刚才自己花了十分钟看到了三个jar包存在问题.
  5. 然后尝试使用脚本进行处理 发现3分钟写好, 就可以发现四个冲版本冲突的jar包.
  6. 思路很简单
  7. 1. 3rd的目录下面进行操作
  8. 2. 将所有的文件名中的梳子替换为空
  9. 3. 将数字已经替换为空的名字进行大小写替换.
  10. 4. 将最终的结果进行排序和计数

第一版本的脚本为:

  1. 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

发现自己多此一举了, 第二个版本的脚本为:

  1. for i in `ls` ; do echo $i | sed 's/[0-9]*//g' |tr '[:upper:]' '[:lower:]' ; done |sort |uniq -c |sort -k1h

更容易的处理方式为:

  1. 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}'

结果为:

  1. 2 ehcache-...jar
  2. 2 hutool-all-...jar
  3. 2 okhttp-...jar
  4. 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. SVN工具基础知识

    SVN工具基础知识 1.简介 1.全称Subversion,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现 在发展成为 Apache 软 ...

  2. 记录:excel导入导出js-xlsx,处理合并

    效果 前情提要 后端传excel坐标数据,前端自己处理模板,找资料后,选择直接载入xlsx方式. 准备工作 npm i xlsx import * as XLSX from 'xlsx' 方法一:数据 ...

  3. 不信谣不传谣,亲自动手验证ModelBox推理是否真的“高性能”

    摘要:"高性能推理"是ModelBox宣传的主要特性之一,不信谣不传谣的我决定通过原生API和ModelBox实现相同案例进行对比,看一下ModelBox推理是否真的"高 ...

  4. JS遍历循环方法性能对比:for/while/for in/for of/map/foreach/every

    这周codeReview例会,又遇到map与foreach到底谁问题.单独图方便,我会选择用map一个函数搞定一切.但是从语义的角度来讲,如果只是单纯遍历,还是推荐选择foreach.其实formap ...

  5. FTP 被动模式配置

    总结:FTP 21端口,可以主动连接,防火墙配置一下21端口放行就OK了.非21端口,需要设成被动连接和端口范围.防火墙要做相应的配置 原理 https://www.cnblogs.com/zjoch ...

  6. termius macos 破解版,激活版下载,永久激活,亲测可用

    termius 是一款非常值得推荐的 SSH/SFTP 跨平台终端工具,其十分亮眼的功能是可以上传文件夹,这是其他几款终端工具都不具备的,比如说 macOS 自带的终端.号称 21 世纪最强终端的 w ...

  7. 升讯威周报与工时统计系统 V3

    欢迎使用"升讯威周报与工时统计系统"本系统是一款适合各类型企业.机构.团队使用的周报填写.查询:工时上报.统计分析的软件. 本系统主要特点: 员工按周填写周报,录入工时:可区分项目 ...

  8. 通过Navicate for MySQL导入SQL文件

    本文介绍通过Navicate for MySQL导入SQL文件的方法. 前提条件 已安装Navicat for MySQL 和 MySql.您可以前往 Navicat官网 下载Navicat for ...

  9. Visual Studio 2022 激活码

    Pro: TD244-P4NB7-YQ6XK-Y8MMM-YWV2J Enterprise: VHF9H-NXBBB-638P6-6JHCY-88JWH Key 来自网络 备忘...

  10. 深入浅出 ZooKeeper

    ZooKeeper 是一个分布式协调服务 ,由 Apache 进行维护. ZooKeeper 可以视为一个高可用的文件系统. ZooKeeper 可以用于发布/订阅.负载均衡.命令服务.分布式协调/通 ...