Maven中错误使用parent.relativePath导致构建失败问题

 更新时间:2024年08月14日 11:01:44   作者:mosplus  
这篇文章主要介绍了Maven中错误使用parent.relativePath导致构建失败问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Maven中错误使用parent.relativePath导致构建失败

搭建一个SpringBoot项目,Maven结构为一个空的父模块包含两个子模块

  • 父模块继承 spring-boot-starter-parent 
<!-- 部分内容 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.13</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<groupId>com.mos</groupId>
<artifactId>parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>

<modules>
    <module>consume</module>
    <module>produce</module>
</modules>
  • 子模块继承父模块
<!-- 部分内容 -->
<parent>
    <groupId>com.mos</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0</version>
    <relativePath/><!-- 注意这个标签 -->
</parent>

<artifactId>consume</artifactId>
<version>1.0.0</version>

然后通过Maven构建,报错,提示远程/本地仓库中都找不到 com.mos:parent 这个项目,本地创建的项目,也没有安装到本地仓库,肯定两边都找不到啊。

但是以前也正常,为什么就这个项目突然出问题了,原因就出在子项目的 <relativePath/> 标签上,

官方对该标签解释

Maven looks for the parent pom first in the reactor of currently building projects, then in this location on the filesystem, then the local repository, and lastly in the remote repo.

  • Maven首先在当前构建项目的reactor中查找父pom,然后在文件系统,然后是本地存储库,最后是远程repo。

for example when your structure is flat, or deeper without an intermediate parent pom. However, the group ID, artifact ID and version are still required, and must match the file in the location given or it will revert to the repository for the POM.

  • 例如,当您的结构是平的,或者更深而没有中间父pom时。但是,组ID、工件ID和版本仍然是必需的,并且必须与给定位置的文件匹配,否则它将恢复到POM的存储库。(即设定一个空值或给定位置不存在时,将始终从仓库中获取,不从本地路径获取,如 <relativePath/>

因为子模块都是用IDEA的SpringBoot模板构建的,所以 pom.xml 里面都有 <relativePath/> 标签,去除即可。

  • 或者手动为其指明父pom
<relativePath>../pom.xml</relativePath>

问题解决。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java操作MongoDB插入数据进行模糊查询与in查询功能

    Java操作MongoDB插入数据进行模糊查询与in查询功能

    今天小编就为大家分享一篇关于Java操作MongoDB插入数据进行模糊查询与in查询功能,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • SpringCloud+nacos部署在多ip环境下统一nacos服务注册ip(亲测有效)

    SpringCloud+nacos部署在多ip环境下统一nacos服务注册ip(亲测有效)

    在部署SpringCoud项目的时候分服务器部署注册同一个nacos服务,但是在服务器有多个ip存在的同时(内外网),就会出现注册服务ip不同的问题,导致一些接口无法连接访问,经过多次排查终于找到问题并找到解决方法,需要的朋友可以参考下
    2023-04-04
  • Spring整合ehCache全过程

    Spring整合ehCache全过程

    这篇文章主要介绍了Spring整合ehCache全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Java利用Jackson序列化实现数据脱敏详解

    Java利用Jackson序列化实现数据脱敏详解

    在项目中有些敏感信息不能直接展示,比如客户手机号、身份证、车牌号等信息,展示时均需要进行数据脱敏,防止泄露客户隐私。本文将利用Jackson序列化实现数据脱敏,需要的可以参考一下
    2023-03-03
  • kafka springBoot配置的实现

    kafka springBoot配置的实现

    本文主要介绍了kafka springBoot配置的实现,通过详细解析Spring Boot for Apache Kafka的配置选项,以及如何优化Kafka生产者和消费者的属性设置,感兴趣的可以了解一下
    2023-11-11
  • Java实现判断浏览器版本与类型简单代码示例

    Java实现判断浏览器版本与类型简单代码示例

    这篇文章主要介绍了Java实现判断浏览器版本与类型简单代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java Tapestry4.1.2入门说明教程

    java Tapestry4.1.2入门说明教程

    不必关心链接!不必关心请求(http request)到了哪里!不必关心响应(http response)要转向哪里!Tapestry构建于底层的request-resonse模式,基于Servlet技术,抽象出面向组件开发的模型。Tapestry关心的是:页面、组件、事件、对象、方法、属性!
    2008-11-11
  • SpringBoot之@ConditionalOnProperty注解使用方法

    SpringBoot之@ConditionalOnProperty注解使用方法

    在平时业务中,我们需要在配置文件中配置某个属性来决定是否需要将某些类进行注入,让Spring进行管理,而@ConditionalOnProperty能够实现该功能,文中有详细的代码示例,需要的朋友可以参考下
    2023-05-05
  • 详解基于MybatisPlus两步实现多租户方案

    详解基于MybatisPlus两步实现多租户方案

    这篇文章主要介绍了详解基于MybatisPlus两步实现多租户方案,本文分两步,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 基于Java实现无向环和有向环的检测

    基于Java实现无向环和有向环的检测

    这篇文章主要介绍了如何在 Java 中实现无向环和有向环的检测,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
    2022-04-04

最新评论