问题引申:
Maven jar版本依赖 排包 依赖冲突问题
场景:
理财公众号:理财行情-今日售卖列表出现现在未推出的产品信息
处理路线:
首先代码年代久远,之前未涉及该模块的开发,后续从查询的入口进行反向追踪
发现数据是在内存获取 内存的数据(代码逻辑是放入到Map中了)又是从Redis获取的 Redis的数据又是通过定时任务从表中读取 后续查询柜台进行组装的
确认数据的来源表之后 后续查看线上异常的产品信息的代码 发现在线上数据库中并不存在
这就有些奇怪了 看之前的代码逻辑 从Redis中获取到的数据会重新更新内存中数据 并且在更新前会清除之前的数据 具体是 this.cacheMap.clear();🤷♂️
后续经过排查是jar包版本依赖的问题 这个问题之前有人处理过 追加了如下代码this.cacheMap.clear(); 并且重新升级了jar包 但是线上部署还是老版本的jar包
pom.xml文件中该依赖并未指定具体的版本号 但是其他依赖包中也有依赖该jar包 并且指定了具体的版本 该版本是有问题的 也就是未修复之前的版本
webapp项目pom:
<dependency> <groupId>com.company.abc</groupId> <artifactId>模块A</artifactId> </dependency> <dependency> <groupId>com.company.abc</groupId> <artifactId>模块B</artifactId> </dependency>
模块B的pom:
可以看到指定了具体的jar包版本,这也就是问题所在
<dependency> <groupId>com.company.abc</groupId> <artifactId>模块A</artifactId> <version>1.2.4</version> </dependency>
现有解决方案:
A:重新启动webapp项目
B:后期升级pom的jar包依赖版本