码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 记录 Maven 版本覆盖 Bug 的解决过程


    背景

    在使用 Maven 进行项目管理时,依赖版本的管理是一个常见且重要的环节。最近,在我的项目中遇到了一个关于依赖版本覆盖的 Bug,这个问题导致了 Apollo 框架的版本不一致,影响了项目的正常运行。以下是我解决这个问题的过程记录。

    问题描述

    在项目的父 pom.xml 中,引入了 Apollo 的依赖,版本为 3.0.5。然而,在我的子模块的 pom.xml 中定义了一个 2.2.1。在执行 Maven 构建时,最终引入的 Apollo 版本却是 2.2.1,而非父级指定的 3.0.5。这导致了与 Apollo 相关的功能出现异常。

    问题分析

    通过排查发现,Maven 的依赖管理机制遵循“最近优先”的原则,即如果在子模块中定义了某个依赖的版本,它会覆盖父 pom.xml 中定义的版本。这意味着子模块中指定的 2.2.1 版本会取代父模块中的 3.0.5。

    解决方案

    方法一:删除子模块中的版本定义

    最直接的解决方案是删除子模块 pom.xml 中的 Apollo 版本定义,让 Maven 使用父模块中定义的版本。具体步骤如下:

    1. 打开子模块的 pom.xml 文件。
    2. 找到 的定义,并将其删除。
    <properties>
         
    properties>
    

    方法二:统一版本

    如果需要使用特定版本的 Apollo,可以在子模块中修改版本为父模块中的版本:

    <properties>
        <apollo.version>3.0.5apollo.version>
    properties>
    

    方法三:使用依赖管理

    如果项目中有多个子模块,且需要统一管理依赖版本,可以考虑在父 pom.xml 中使用 标签来管理版本:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.ctrip.framework.apollogroupId>
                <artifactId>apollo-coreartifactId>
                <version>3.0.5version>
            dependency>
        dependencies>
    dependencyManagement>
    

    结论

    通过这次问题的解决,我更加深入地理解了 Maven 依赖管理的机制。在项目开发中,合理地管理依赖版本能够有效避免此类问题的发生。希望这篇记录能帮助到其他开发者,减少类似的困扰。


    如需更多信息或讨论,欢迎在评论区留言!

  • 相关阅读:
    【Koltin Flow(三)】Flow操作符之中间操作符(一)
    datalist 是什么?以及作用是什么?
    Spring之bean的生命周期
    实战模拟│揭秘为啥年会你抽不到特等奖
    C++笔记之一个函数多个返回值的方法、std::pair、std::tuple、std::tie的用法
    Java基础之浅谈继承、多态
    C++数学运算、随机数
    告诉大家4个常见的免费备份方法!
    Python使用总结之PyInstaller常用参数详解
    Zebec Protocol 薪酬支付工具 WageLink 上线,掀新一轮薪酬支付浪潮
  • 原文地址:https://blog.csdn.net/weixin_54574094/article/details/143283402
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号