首页 > 其他分享 >记录一次 maven 子模块相互依赖导致的父模块无法动态升级的问题 'parent.relativePath' points at wrong local POM

记录一次 maven 子模块相互依赖导致的父模块无法动态升级的问题 'parent.relativePath' points at wrong local POM

时间:2023-11-20 15:34:59浏览次数:36  
标签:03 parent gwm relativePath commons version 模块 marketing

        项目里面使用的commons公共模块,每次更改后之前都不会升级其版本号,导致当commons改动后,其他服务在不知道的情况下,会出现文件缺失。由于之前commons下面有12个公共子模块,所以之前一直没有升级commons模块。为了方便,于是决定每次更改commons模块后让所有的子项目都跟着升级。

      但是改造的过程中,出现了问题。 

   

<groupId>com.gwm.marketing</groupId>
    <artifactId>gwm-marketing-commons</artifactId>
    <version>${commons.version}</version>

    <packaging>pom</packaging>

    <properties>
        <commons.version>1.0.1-SNAPSHOT</commons.version>
    </properties>

 这个是我在父模块中的定义,然后在子模块中如下:

  

 <parent>
        <groupId>com.gwm.marketing</groupId>
        <artifactId>gwm-marketing-commons</artifactId>
        <version>${commons.version}</version>
        
    </parent>

 

结果在编译时候报错如下:

 

[2023-11-20 15:03:03] [ERROR] The build could not read 12 projects -> [Help 1]
[2023-11-20 15:03:03] [ERROR]   
[2023-11-20 15:03:03] [ERROR]   The project com.gwm.marketing:gwm-marketing-cache:${commons.version} (/root/workspace/gwm-marketing-cache/pom.xml) has 1 error
[2023-11-20 15:03:03] [ERROR]     Non-resolvable parent POM for com.gwm.marketing:gwm-marketing-cache:${commons.version}: Could not find artifact com.gwm.marketing:gwm-marketing-commons:pom:${commons.version} in gwm-maven (https://gwmdc-maven.pkg.coding.net/repository/gwm-boot/gwm-maven) and 'parent.relativePath' points at wrong local POM @ line 5, column 13 -> [Help 2]
[2023-11-20 15:03:03] [ERROR]   
[2023-11-20 15:03:03] [ERROR]   The project com.gwm.marketing:gwm-marketing-common:${commons.version} (/root/workspace/gwm-marketing-common/pom.xml) has 1 error
[2023-11-20 15:03:03] [ERROR]     Non-resolvable parent POM for com.gwm.marketing:gwm-marketing-common:${commons.version}: Failure to find com.gwm.marketing:gwm-marketing-commons:pom:${commons.version} in https://gwmdc-maven.pkg.coding.net/repository/gwm-boot/gwm-maven was cached in the local repository, resolution will not be reattempted until the update interval of gwm-maven has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 13 -> [Help 2]
[2023-11-20 15:03:03] [ERROR]   
[2023-11-20 15:03:03] [ERROR]   The project com.gwm.marketing:gwm-marketing-feign:${commons.version} (/root/workspace/gwm-marketing-feign/pom.xml) has 1 error
[2023-11-20 15:03:03] [ERROR]     Non-resolvable parent POM for com.gwm.marketing:gwm-marketing-feign:${commons.version}: Failure to find com.gwm.marketing:gwm-marketing-commons:pom:${commons.version} in https://gwmdc-maven.pkg.coding.net/repository/gwm-boot/gwm-maven was cached in the local repository, resolution will not be reattempted until the update interval of gwm-maven has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 9, column 13 -> [Help 2]

 

    12个子模块,刚好对应  The build could not read 12 projects - ,由报错信息可以知道,是因为 我在父模块中定义的公共属性 ${commons.version}  在子模块中找不到,所有的子模块我用的都是一个公共配置,这样每次改动升级commons版本后,只需要父模块升级一下,然后引入的地方对应改动下即可。思路是没问题的,但是怎么就报错了呢?       网上显示搜索了下,参考(https://blog.csdn.net/q7w8e9r4/article/details/133639219、https://blog.csdn.net/rightkk/article/details/128856354) 发现是说 在子模块配置中缺少 
<relativePath></relativePath> 的配置,
于是我把所有的子模块都加上这个,子模块配置如下:
    <parent>
        <groupId>com.gwm.marketing</groupId>
        <artifactId>gwm-marketing-commons</artifactId>
        <version>${commons.version}</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

结果仍然是报错。

 

    这时候想了下,会不会是我子模块中原来写的 模块有相互依赖是写死的导致的,原来的12个子模块中,历史的原因,存在相互依赖的引用关系,之前的依赖都是写死的,于是把原来写死的 统一都改成 ${commons.version}。发现就可以了。。

 

另外我试下了:在子模块中使用 

        <relativePath>../pom.xml</relativePath>
   和 

<relativePath>../../gwm-marketing-commons/pom.xml</relativePath> 的结果竟然是不一致,按照我的理解,.../../gwm-marketing-commons/pom.xml 和 直接使用../pom.xml应该都是一样的才对,因为都是相对路径,可是实际结果是 只有 

        <relativePath>../pom.xml</relativePath>
  才可以。    总结下来,有两个原因:首先是 缺少 
        <relativePath>../pom.xml</relativePath>
 第二个是之前的子模块存在相互依赖,需要把相互依赖的版本也同意修改下才行

标签:03,parent,gwm,relativePath,commons,version,模块,marketing
From: https://www.cnblogs.com/thinkingandworkinghard/p/17844058.html

相关文章

  • sass的模块导入
    sass的模块导入:https://blog.csdn.net/iamdidi0110/article/details/131416901?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%BC%95%E5%85%A5sass%E6%96%87%E4%BB%B6&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default......
  • 项目正式——数据访问接口模块
    数据访问接口模块现在的要求在URL输入数据访问接口-HTTP协议的本质http基础知识写一个普通的server程序用来接受浏览器的请求报文以便于分析模拟请求报文的发送注意这里网页的内容比较多,调用一次智能读取到一部分的数据,输出到文件保存起来还能抓......
  • 【Django使用】django经验md文档10大模块。第4期:Django数据库增删改查
    Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原......
  • 无涯教程-Ruby - 模块语句
    Module语法moduleIdentifierstatement1statement2...........end模块常量的命名与类常量一样,并带有大写字母开头。方法定义也看起来相似:模块方法的定义就像类方法一样。与类方法一样,您可以通过在模块名称前加上模块名称和句点来调用模块方法,并使用模块名称和......
  • 如何使用Matplotlib模块的text()函数给柱形图添加美丽的标签数据?
    (如何使用Matplotlib模块的text函数给柱形图添加美丽的标签数据?)1简单引入在进行数据分析时,当一些图表数据,比如柱形图我们想让它更直观的显示一些内容,有时候会给柱形图添加标签,那如何实现这样的效果呢?还有比如我们把某手机品牌1-12月每月的销量制作成柱形图,那如何在柱形图上......
  • requests+编码模块+百度贴吧数据抓取
    1.查看本地发送过去的头文件importrequestshtml=requests.get(url='http://httpbin.org/get').textprint(html)2.编码模块使用  //使用原因:URL不能识别中文编码,中文转换为编码模式)(1)urlencode()方法fromurllibimportparseparams=parse.urlencode({'wd':'赵丽颖'})......
  • 微博cookie批量自动私信脚本,协议版,可发图片文字,用鱼刺模块开发!
    这个软件我也开源出来,包括DLL部分,程序集,完整的都分享给大家,方便大家学习一下代码的结构和运行原理,很多人都会开发这类的软件,但是都调用了填表模块,协议的很少会,那么这个软件就是一个非常不错的一个参考案例,仅供学习哈。UI部分: 程序集代码:===================================......
  • 抖音自动关注点赞评论脚本,可批量导入视频连接,易语言精易VIP模块开发
    这个软件也是客户定制的,然后调用的是精易论坛的一个VIP模块,一个月收费10块钱,但是功能很强大,它可以直接调用你电脑上安装的谷歌浏览器,然后在浏览器里面直接执行数据功能,比如数据包截取,COOKIE的导入导出,还有JS网页端直接,填表操作等功能,所以用这个模块开发了一个抖音私信的功能,可以直......
  • 手撕Vuex-安装模块方法
    前言经过上一篇文章的介绍,我们实现了将模块安装到store中,那么本章我们就来介绍一下怎么安装模块当中的方法也就是actions、mutations、getters。所以本次文章的目标就是将模块当中的actions、mutations、getters安装到store中,然后在组件中使用。分析阶段那么安装acti......
  • 【Node.js】 - 概念 fs path模块 压缩HTML代码
    一、概念Node.js是一个跨平台javaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序作用:1.编写数据接口,提供网页资源浏览功能等等2.前端工程化二、什么是前端工程化开发项目直到上线,过程中集成的所有工具和技术Node.js是前端工程化的基础(因为Node.js可以主动读取前端代......