演示环境:
IntelliJ IDEA 2019.2.2
jdk1.8
maven3.5.3
内容:
自己搭建项目时,发现的一个如下问题。聚合工程,管理自己的子模块和子模块的依赖。
当我在一个子模块中clean,compiler或者install时都会报如下错误。去网上找了下解决方案,按照所说,把父工程install一下就好了。
然后我兴高采烈的去一试究竟,发现然并卵。housekeep父工程clean一下依然包如下错误。install就更不用说了。
What! Why?
网上找了半天依然没有解决。最后自己摸索终于找出了问题所在。
在我们使用idea集成maven之后给的clean,compiler或者install等操作,控制台打印的报错日志太少了,就这么干巴巴的一句话(我的是这样)
于是我就打开了idea下面的terminal,这个terminal的作用想必大家都不陌生,就是相当于在该项目下打开CMD命令窗口(idea中terminal默认是打开我们的CMD命令窗口)。
打开是这个样子
然后我就使用maven的命令来clean一下这个housekeep父工程,结果如下
这个报错日志就比较详细,仔细一看,发现上面有这样一段话
大概意思就是说我的housekeep-product-service子模块找不到父级工程housekeep的pom文件
于是我就去找到我这个子项目
我建的项目时三层关系,红圈是最外一层,也就是housekeep父工程。蓝圈是二级父级项目housekeep-product继承housekeep。而绿圈侧是我的服务项目housekeep-product-service。
因为项目依赖继承关系有点多,一时走神,把housekeep-product-service中的父级写成了housekeep,应该是写成housekeep-product。按照正常来说这也没什问题,无非就是继承有点混乱。但因为housekeep-product-service项目的所在的项目位置,和housekeep父级工程的pom文件所在的目录,相距了两层文件目录,而我也没有给这个父级依赖添加<relativePath>标签来指明pom文件的位置,该子工程项目就会默认从当前项目所在地的上一级目录去找,很显然是找不到的。这就导致了刚开始的问题。解决办法可以加上<relativePath>标签来指明pom文件的位置或者这把父级改成housekeep-product。当然后者是最好的。
第一种改法如下
之后在housekeep父级工程clean一下,就会成功。
第二种改法
在housekeep父级工程clean一下,依然肯定会成功。之后就是我把父级工程install一下,进行之后操作。clean成功的前提下这个install一般都会成功,不成功,按照上面的步骤进行对install的追查。
综上所述,最终是想告诉小伙伴们,在idea中出现这种pom文件找不到的情况,我们可以使用maven命令去操作,报出的异常信息比较详细,我们能追根溯源,找到具体是哪那个子模块有问题。
本人学疏才浅,以上是个人的一点见解,希望能帮助志同道合的小伙伴。
~~~~~~~~~~可以忽略~~~~~~~~~~~~~
发现一个不错的chatGPT网站,方便易用。