问题背景
项目被检测到有高危漏洞,需要对部分jar进行升级。以一个jar为例记录一下升级过程。
1 找到高危漏洞的包
如果装了maven helper插件则可以在下面查看当前模块依赖包
2 使用maven命令
执行下面这个命令,会将当前项目的信息打印出来,那个jar依赖了什么其它的jar可以看的非常的清楚。
mvn dependency:tree
3 进行依赖排除
<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>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.10.0</version>
</dependency>
5 其它方法
其实我们也可以偷懒直接去替换jar 包里面的依赖,然后重新压缩成jar文件。
java jar cvfm0 demo.jar . #注意后面的. 在当前目录执行此命令
-c:创建新的 JAR 文件包
-t:列出 JAR 文件包的内容列表
–x:展开 JAR 文件包的指定文件或者所有文件
-u:更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)
–v:生成详细报告并打印到标准输出
-f:指定 JAR 文件名,通常这个参数是必须的
-m:指定需要包含的 MANIFEST 清单文件
-0:只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快(最好不要压缩)
-M:不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m参数
增量更新
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中没有被替换,也就是能向低版本兼容如果不行,有可能就涉及到多个依赖的升级。
原文地址:https://blog.csdn.net/qq_43259860/article/details/134703391
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_17935.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!