Non-resolvable parent POM 解决。分析 maven parent 解析顺序。


Maven complaining about parent relative path

刚来新公司,工作的时候leader 让导入了一个maven 聚合的项目。

需求是从maven聚合项目,中独立一个服务出来。
在这里插入图片描述
类似上图独立 eurekaserver 项目成一个独立的项目,方便部署。
在这里插入图片描述

报错信息:
[FATAL] Non-resolvable parent POM for com.alibaba:********:[unknown-version]: Could not find artifact com.***-parent:pom:-SNAPSHOT and ‘parent.relativePath’ points at no local POM @ line 12, column 10

原因

当设置了时,是需要有一个relative path来查找父项目的pom.xml的,而如果没有,那么默认的父项目pom.xml就在该pom.xml的父附录中。如果没有,就会根据groupId和artifactId在本地和远端maven仓库中找。如果pom.xml对应的不是外层项目,所以这里就会报错。

解决办法

添加空标签就会直接去仓库找了

<relativePath></relativePath>

原理

maven的parent 标签的解析顺序

  • relativePath
  • local repository
  • remote repositories

首先会检查相对路径 相对路径(如果未明确给出)默认为…,即当前项目的父目录中的pom

Maven会检查
a)该目录中是否有pom文件,
b)该pom文件是否包含与当前项目的父级定义中所述的坐标相同的坐标。

如果a)和b)为true,
则将该pom文件用作解析有效pom的父文件。

如果a)是true,而b)是false,
则会给出警告,因为这通常指向错误配置的项目(如您的情况),并且pom被忽略。

如果a)为假
则检查其他来源。

思考

其实遇到问题可以参考一下框架或者是同类型的问题是怎么解决的。
比如说 spring boot 其实也有同样的问题 我们看一下它的配置文件。

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.2</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

这里明确的说明了 会通过仓库去找相关的jar包。

<!-- lookup parent from repository -->
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值