• Maven传递依赖的坑:父pom中dependencyManagement版本优先级高于传递依赖版本


    一、由来

    之前同事问了个问题,就是当前工程为spring boot项目,假设版本号为2.0.3

    这个项目中依赖了一个spring boot项目依赖(先别管为啥有这么奇葩的依赖,这个版本是1.5.9)。

    1.5.9的版本,会传递一堆starter过来。

    结果最终看到的是,所有的starter版本都是2.0.3。

    二、原因

    maven官方有下面一段话:

    https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

     翻译下:

    Dependency management:允许项目作者直接指定artifact的版本,当该组件是通过传递依赖传递过来,或者为没有指定版本号的直接依赖。

    再回头看前言里的问题,就是当前工程继承了spring boot parent 2.0.3,然后里面的<dependencyManagement>指定了各组件的版本号。这时候被依赖的1.5.9的组件,作为传递依赖,其版本号就会使用2.0.3.

    三、参考

    也有人遇到了同样问题:

    https://blog.csdn.net/zwt0909/article/details/52372765

    https://blog.csdn.net/jiaobuchong/article/details/81842503

  • 相关阅读:
    classpath详解
    xml详解
    pojo、po、dto、dao、bo区别
    事务的四种隔离级别
    spring相关知识点易错
    Orm
    100+个Java项目视频教程+源码+笔记,项目经验不用愁了!
    使用TM1629A芯片驱动米字数码管
    关于安装airflow遇到的问题
    Semver(语义化版本号)扫盲
  • 原文地址:https://www.cnblogs.com/grey-wolf/p/10395153.html
Copyright © 2020-2023  润新知