今天重构之前的一个单体项目,想鸟枪换大炮,直接上SpringCloud。
刚改完一些依赖冲突,想mvn clean一下。
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for com.beetle:huanghua-mail:0.0.1-SNAPSHOT: Could not find artifact com.beetle:hanghua-server:pom:1.0-SNAPSHOT and ‘parent.relativePath’ points at no local POM @ line 6, column 13@
当时我就纳闷了,仔细检查代码,看看父pom和子pom都好好的,也没缺胳膊少腿。标签正常,标签也正常,本来就菜的我,摸了摸满头浓密的秀发,一筹莫展。
在我薅掉几把头发后,才想起来看报错信息。于是parent.relativePath’ points at no local POM 终于引起了我的注意。本来就没搞清楚在继承父pom时,自动生成的< relativePath />是干嘛的,于是一顿google。
Maven构建jar包时候查找顺序:
relativePath指定的地址 > 本地仓库 > 远程仓库
【relativePath】:父项目的pom.xml文件的相对路径。
- < relativePath/>未指定地址时,先从构建当前项目的目录查找,然后本地仓库查找。若找不到,再去远程仓库寻找。
- 去掉< relativePath/>相当于. ./pom.xml(只是因为不报错了,猜测),直接去当前项目的上一级去寻找。但不保险,不推荐采用。
最终解决方案:
<relativePath>../</relativePath>