maven项目中找不到pom文件 Could not find artifact xxx:xxx:pom:1.0-SNAPSHOT

505 阅读3分钟

演示环境:

IntelliJ IDEA

jdk1.8

maven-3.5.3

内容:

自己搭建项目时,发现的一个如下问题:

聚合工程,管理自己的子模块和子模块的依赖。当我在一个子模块中clean,compiler或者install时都会报如下错误。去网上找了下解决方案,按照所说,把父工程install一下就好了。

然后我兴高采烈的去一试究竟,发现然并卵。housekeep父工程clean一下依然包如下错误,install就更不用说了。

What!  Why?   

网上找了半天依然没有解决。最后自己摸索终于找出了问题所在。

在使用idea集成maven之后给的clean,compiler或者install等操作,控制台打印的报错日志太少了,就这么干巴巴的一句话(我的是这样)

于是我就打开了idea下面的terminal,这个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网站,方便易用。

点击直达