演示环境:

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网站,方便易用。

点击直达

posted on 2020-11-29 16:33  之之小侠  阅读(27372)  评论(2编辑  收藏  举报