IDEA debug启动项目断点调试时依赖模块版本号不一致问题

场景

今天用IDEA debug启动跑某个项目单元测试时,在依赖的某基础组件内部打了断点进行调试,停在断点时发现对应jar版本号不对。
光标移动到IDEA文件窗口的标题栏,发现xxx.jar版本为1.0.0-SNAPSHOT,而在项目的pom.xml里引用的依赖是1.3.0-SNAPSHOT。

分析&解决

项目模块本身只配置了依赖,没有写版本号,通过父工程pom.xml里配置dependencyManagement来统一管理依赖的版本号。
开始以为是IDEA没有识别出来,修改模块里的pom.xml,指定<version>为1.3.0-SNAPSHOT,重新debug启动问题依然在。

通过IDEA的maven窗口、maven helper插件、以及mvn dependency:tree3种方式查看依赖的组件版本号确实为1.3.0-SNAPSHOT。

注意到Debug控制台窗口里的启动命令里-classpath指定该组件的包为xxx-1.0.0-SNAPSHOT包,验证了是IDEA识别的问题。

通过Command + ;打开Project Structure窗口,里面看到依赖的组件版本号为1.0.0-SNAPSHOT;
在左侧项目模块里,打开IDEA的xxx.iml文件,里面搜索依赖的组件,版本号位1.0.0-SNAPSHOT;
尝试修改该文件,将版本号修改1.3.0-SNAPSHOT,在重新打开Project Structure窗口,里面版本号没有变,仍然为1.0.0-SNAPSHOT;
关闭Project并重新打开,Project Structure窗口已修改,这时再重新debug启动,在控制台窗口里以及断点调试,版本已恢复正确。

可项目中依赖了很多包,一个个去改效率很低。于是想到了把工程里所有的.iml文件删掉,通过maven命令重新生成IDEA的iml文件。
在工程父目录执行,生成IDEA工程:mvn idea:idea
在工程某模块目录执行,生成IDEA模块:mvn idea:module

PS:如果发现工程里某模块依赖本工程其它模块,IDEA里跳转不展示java源码文件,而是展示.class反编译文件,也可尝试用此方法修复。

参考

maven生成iml文件:https://www.cnblogs.com/skyblue123/p/12698787.html

posted @ 2022-02-14 20:40  cdfive  阅读(911)  评论(0编辑  收藏  举报