垃圾站 VPS技术 解决IDEA的maven reload无法识别dependency

解决IDEA的maven reload无法识别dependency

手头有一个比较大的maven project,拆成了十几个module,如果我要在 Intellij IDEA 跑个单测什么的,就会报错,各种依赖找不到,即使 pom.xml 里是明明白白写着:

解决IDEA的maven reload无法识别dependency插图

依然无法识别,连 lombok 和 junit 都不行:

解决IDEA的maven reload无法识别dependency插图1

尽管 idea 很好心地给了帮助 “Add JUnit4 to classpath”,点击后也只是在 pom.xml 里再添加一次,并没有什么卵用。

这个问题有个很灵异的现象是,每次用 “mvn clean install” 整体编译的时候是正常的,但是在 idea 跑 test case,或启动某个 main,就会报错。

查找原因:

打开 Project Structure 可以看到,这个 module 的 dependency 全是空的:

解决IDEA的maven reload无法识别dependency插图2

说明 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 指定正确的版本号:

<version>1.10.1</version>

再重新reload,问题就解决了。

总结:

再回头想想前面提到的灵异现象,从结果倒推,大概是因为把项目作为整体编译的时候,同一个package只能有一个版本,即使模块A没有指定版本,只要模块B有指定,就能正常引用。

之前还遇到过另一个现象,整体编译没问题,但是在 iDEA 里跑单测的时候,会发现引用了旧版本,其实也是同样的问题了。

 

上一篇
下一篇

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

返回顶部