微服务使用模块化时候导入公共模块导致maven更新依赖错误问题

在微服务开发中,遇到一个由于公共模块频繁更新导致的构建异常问题。问题在于,服务模块原本应依赖于Spring Boot的父工程,但实际指向了导入的公共模块renren-fast和renren-generator。解决方法是在服务模块的pom.xml中添加`<relativePath/>`标签,确保其查找父工程时从远程仓库而非本地模块开始。这涉及到Maven寻找父模块的顺序:首先检查反应堆中的项目,然后是文件系统中的relativePath,接着是本地仓库,最后是远程仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:在使用微服务分模块化开发的时候导入公共模块的时候,公共模块频繁更新pom坐标导致服务模块更新坐标出现下面异常,并且无论怎么样注释公共模块的坐标也无法把公共模块给剔除出去,也可能是自己误操作的原因导致maven刷新坐标不起作用,但是错误原因很明显,所以根据报错去解决问题

io.renren:renren-fast:jar:3.0.0 构建有效模型时遇到的一些问题
POM io.renren:renren-fast:3.0.0 (D:\workspace\java\gulimall\renren-fast\pom.xml) 的 'parent.relativePath' 指向 com.atguigu.gulimall:gulimall 而不是 org.springframework .boot:spring-boot-starter-parent,请验证您的项目结构@第11行,第10列
io.renren:renren-generator:jar:1.0.0 构建有效模型时遇到的一些问题
POM io.renren:renren-generator:1.0.0 (D:\workspace\java\gulimall\renren-generator\pom.xml) 的 'parent.relativePath' 指向 com.atguigu.gulimall:gulimall 而不是 org.springframework .boot:spring-boot-starter-parent,请验证您的项目结构@第11行,第10列
com.atguigu.gulimall:gulimall-common:jar:0.0.1-SNAPSHOT构建有效模型时遇到一些问题
缺少 org.apache.maven.plugins:maven-compiler-plugin 的“build.plugins.plugin.version”。 @ com.atguigu.gulimall:gulimall-common:[未知版本],D:\workspace\java\gulimall\gulimall-common\pom.xml,第16行,第21列
强烈建议修复这些问题,因为它们会威胁到您构建的稳定性。
出于这个原因,未来的 Maven 版本可能不再支持构建这种格式错误的项目。

问题描述翻译的意思是,本来本服务模块使用的父工程是springboot,但是却指向了导入common公共模块为父工程,解决办法就是在<parent>中添加

<relativePath/> <!-- lookup parent from repository -->

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

下面对 relativePath解释来自https://blog.youkuaiyun.com/gzt19881123/article/details/105255138

  1. relativePath 是Maven为了寻找父模块pom.xml所额外增加的一个寻找路径
  2. relativePath 默认值为 …/pom.xml
  3. Maven 寻找父模块pom.xml 的顺序如下:
    (1)  first in the reactor of currently building projects
          这里一个maven概念 反应堆(reactor ),
          意思就是先从工程里面有依赖相关的模块中找你引入的
          parent 的pom.xml,
        
    (2) then in this location on the filesystem
         然后从 你定义的  <relativePath > 路径中找,
         当然你如果只是 /  即空值,则跳过该步骤,  
         默认值 ../pom.xml 则是从上级目录中找啦。

    (3)  then the local repository
       这个就不说了,如果 (1) (2) 步骤没有则从 本地仓库找啦。

    (4) and lastly in the remote repo
     这个还用说吗,上面都找不到了,最后只能从远程仓库找啦,再找不到就报错给你看 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值