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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM