问题记录-maven依赖升级或替换(简单版)

问题背景

项目被检测到有高危漏洞,需要对部分jar进行升级。以一个jar为例记录一下升级过程。

1 找到高危漏洞的包

如果装了maven helper插件则可以在下面查看当前模块依赖包

2 使用maven命令

执行下面这个命令,会将当前项目的信息打印出来,那个jar依赖了什么其它的jar可以看的非常的清楚。

bash 复制代码
mvn dependency:tree

3 进行依赖排除

bash 复制代码
<dependency>
   <groupId>org.geotools</groupId>
   <artifactId>gt-main</artifactId>
   <version>${geotools.version}</version>
   <exclusions>
       <exclusion>
           <artifactId>commons-text</artifactId>
           <groupId>org.apache.commons</groupId>
       </exclusion>
   </exclusions>
</dependency>

4 依赖替换

将里面的依赖排除,替换成我们需要升级的版本

bash 复制代码
<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-text</artifactId>
   <version>1.10.0</version>
</dependency>

5 其它方法

其实我们也可以偷懒直接去替换jar 包里面的依赖,然后重新压缩成jar文件。

bash 复制代码
java jar cvfm0 demo.jar . #注意后面的. 在当前目录执行此命令

-c:创建新的 JAR 文件包

-t:列出 JAR 文件包的内容列表

-x:展开 JAR 文件包的指定文件或者所有文件

-u:更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)

-v:生成详细报告并打印到标准输出

-f:指定 JAR 文件名,通常这个参数是必须的

-m:指定需要包含的 MANIFEST 清单文件

-0:只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快(最好不要压缩)

-M:不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m参数

增量更新

bash 复制代码
jar -uvf0 commons-text-1.10.0.jar test  #这个命令意思是将test目录放到jar中去 
jar -uvf0 commons-compiler-3.1.2.jar META-INF/* #这个意思是将META-INF 中的所有文件添加到jar中去
#这里有个问题就是更新过一次以后,再更新会有错误


特别注意 :这样的升级方式的前提是,你所使用的接口在更高版本的jar中没有被替换,也就是能向低版本兼容如果不行,有可能就涉及到多个依赖的升级。

相关推荐
hrrrrb10 分钟前
【Java Web 快速入门】十、AOP
java·前端·spring boot
凛冬君主14 分钟前
插入排序专栏
java·算法·排序算法
檀越剑指大厂36 分钟前
【开发语言】Groovy语言:Java生态中的动态力量
java·开发语言
Tina学编程1 小时前
线程P5 | 单例模式[线程安全版]~懒汉 + 饿汉
java·单例模式·线程安全
我们从未走散1 小时前
设计模式学习笔记-----单例模式
java·笔记·学习·单例模式·设计模式
期待のcode1 小时前
Maven
java·spring·maven·mybatis
IT毕设实战小研1 小时前
Java毕业设计选题推荐 |基于SpringBoot的健身爱好线上互动与打卡社交平台系统 互动打卡小程序系统
java·开发语言·vue.js·spring boot·vue·毕业设计·课程设计
long3163 小时前
java 工厂方法设计模式 FactoryMethod
java·开发语言·后端·设计模式
萤丰信息5 小时前
智慧工地从工具叠加到全要素重构的核心引擎
java·大数据·人工智能·重构·智慧城市·智慧工地
找不到、了7 小时前
Java设计模式之《原型模式》--深、浅copy
java·设计模式·原型模式