jar包升级魏某人有话要说!

背景:项目的jar包升级,使用某为的扫描工具扫描出了一堆问题:

image.png

拿到cve去查询了一下,具体的jar的版本是找到了,但是呢有个问题就是 项目的依赖太混乱了

一个spring-aop 在一个工程的直接或者间接引用就高达9处

image.png

个人的想法呢是直接把这些依赖全部都剔除掉

然后直接引入最新的依赖(修复了缺陷的版本)

这样做有两个问题:

1大动干戈,为了一个子依赖,或者孙依赖 项目里面加入大量的exclusion代码阅读性差
2.适配性引发的问题,spring-data-jpa引入了spring-aop,如果把spring-aop升级到高版本可能与当前版本的spring-data-jpa不适配

请问友友们有遇到过类似问题的吗,求赐教

阅读 3.4k
1 个回答

这种问题很常见,依赖传递后版本有冲突嘛。一般的做法是,尝试保留最高版本,其他冲突版本全部排除,如果最高版本和某些库不兼容,再详细查看具体缺少哪些Class/Method/Field,查看报错库所依赖版本的源码,尝试降低保留的版本号,测试兼容性。

如果存在两个无法兼容的库,可以考虑升级版本:

比如 A -> B1.1, C -> B1.9 ,那么优先考虑使用B1.9,如果使用B1.9后发现A引用的方法再B1.9中不存在,那么就看看B1.1-1.9 之间的版本,有没有可以兼容的

如果中间没有任何版本可以兼容,那么可以考虑升级A的版本,很可能A的新版本的B依赖也已经升级。

如果还是无法兼容,那么也可以尝试降级C版本,或者手动修改源码,重新构建发布私服,同时在修改的版本代码中,详细记录所有修改点,这样可以保证以后升级的可行性。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题