标题:解决idea的maven reload不能识别dependency 出处:Felix021 时间:Wed, 11 Aug 2021 20:43:04 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2237 内容: # 现象 手头有一个比较大的maven project,拆成了十几个module,如果我要在 Intellij IDEA 跑个单测什么的,就会报错,各种依赖找不到,即使 pom.xml 里是明明白白写着: 点击在新窗口中浏览此图片 https://www.felix021.com/blog/attachment.php?fid=591 依然无法识别,连 lombok 和 junit 都不行: 点击在新窗口中浏览此图片 https://www.felix021.com/blog/attachment.php?fid=590 尽管 idea 很好心地给了帮助 "Add JUnit4 to classpath",点击后也只是在 pom.xml 里再添加一次,并没有什么卵用。 这个问题有个很灵异的现象是,每次用 "mvn clean install" 整体编译的时候是正常的,但是在 idea 跑 test case,或启动某个 main,就会报错。 # 排查 打开 Project Structure 可以看到,这个 module 的 dependency 全是空的: 点击在新窗口中浏览此图片 https://www.felix021.com/blog/attachment.php?fid=592 说明 pom.xml 文件应该是有坑。 查看 maven reload 的output,发现是了问题是某个dependency没有指定版本号 引用 [ERROR] org.apache.maven.artifact.InvalidArtifactRTException: For artifact {org.apache.flink:flink-streaming-java_2.11:null:jar}: The version cannot be empty. 参考其他 module 指定正确的版本号: 引用 1.10.1 再重新reload,问题就解决了。 # 回顾 再回头想想前面提到的灵异现象,从结果倒推,大概是因为把项目作为整体编译的时候,同一个package只能有一个版本,即使模块A没有指定版本,只要模块B有指定,就能正常引用。 之前还遇到过另一个现象,整体编译没问题,但是在 iDEA 里跑单测的时候,会发现引用了旧版本,其实也是同样的问题了。 完。 Generated by Bo-blog 2.1.0