maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖。但有时候,当传递性依赖造成问题的时候,我们就需要清楚地知道该传递性依赖是从哪条依赖路径引入的。


例如,项目A有这样的依赖关系 : A-->B-->C-->X(1.0)、A-->D-->X(2.0),X是A的传递性依赖,但是两条依赖路径上有两个版 本的X,那么哪个X会被maven解析使用呢?两个版本都被解析显然是不对的,因为那会造成依赖重复,因此必须选择一个。maven依赖调解的第一原则:路径最近者优先。该例中X(1.0)的路径长度为3,而X(2.0)的路径长度为2,因此X(2.0)会被解析使用。


依赖调解第一原则不能解决所有问题,比如这样的依赖关系:A-->B-->Y(1.0),A-->C-->Y(2.0),Y(1.0)和Y(2.0)的依赖路径长度是一样的,都为2。那么到底谁会被解析使用呢?在maven2.0.8及之前的版本中,这是不确定的,但是maven2.0.9开始,为了尽可能避免构建的不确定性,maven定义了依赖调解的第二原则:第一声明者优先。在依赖路径长度相等的前提下,在POM中依赖声明的顺序决定了谁会被解析使用。顺序最靠前的那个依赖优胜。

Maven 传递性依赖相关推荐

  1. Maven传递性依赖解读

    一:DependencyManagement / Dependencies的区别 dependencyManagement统一管理项目的版本号,只声明依赖,并不实现引入,因此子项目需要显示的声明需要用 ...

  2. [Maven实战](9)传递性依赖

    了解Spring的朋友都知道,创建一个Spring Framework项目都需要依赖什么样的Jar包.如果不使用Maven,那么在项目中就需要手动下载相关的依赖.由于Spring Framework又 ...

  3. Maven的传递性依赖及其jar包冲突解决

    一.Maven简介 Maven是一个跨平台的项目管理工具.作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理. 二.Maven的依赖管理 1. ...

  4. Maven 如何处理传递性依赖

    maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖.但有时候,当传递性依赖造成问题的时 ...

  5. maven 依赖范围影响传递性依赖

      compile test provided runtime compile compile N N runtime test test N N test provided provided N p ...

  6. maven 的依赖传递

    1.   首先就maven的依赖传递来说:只有<scope>compile</scope>时,才能进行依赖的传递,其他的范围没有依赖传递可言!!! 2.   当依赖级别相同时, ...

  7. maven的依赖范围_Maven依赖范围

    maven的依赖范围 介绍: 管理依赖项是Maven的核心功能. 在定义Maven依赖项时, scope属性定义了该依赖项在不同的Maven生命周期阶段(例如build,test和run)上的可见性. ...

  8. maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)

    我们知道,maven的依赖关系是有传递性的.如:A-->B,B-->C.但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A的依赖.在maven的依赖管理中,有两种方式可以对依赖 ...

  9. Maven 排除依赖jar包

    当我们引入第三方jar包的时候,难免会引入传递性依赖,有些时候这是好事,然而有些时候我们不需要其中的一些传递性依赖 比如我们不想引入传递性依赖commons-logging,我们可以使用exclusi ...

最新文章

  1. 问题集锦(26-29)
  2. 轴只显示5个刻度_组团投资5亿元!武平集中签约5个新型显示产业链投资项目
  3. 28 | 堆和堆排序:为什么说堆排序没有快速排序快?
  4. Codeforces 343D Water Tree(DFS序 + 线段树)
  5. 基于lis3dh的简易倾角仪c源码_开源网关apisix源码阅读和最佳实践
  6. java深入学习2多线程(面试必备)
  7. 我有一朋友生意做的红红火火
  8. 一个数组去重的简单实现
  9. 谷歌宣布开源 Live Transcribe 语音识别转文字工具
  10. 《深入剖析Tomcat》源码
  11. 2019年考研篇(2020毕业)
  12. 批量将 txt 记事本文件按照固定行数拆分成单个独立的 txt 小文件
  13. 【读点论文】FBNetV2:Differentiable Neural Architecture Search for Spatial and Channel D扩大搜索空间,复用featuremap
  14. 拉依达准则去除异常数据
  15. 用代码实现一场烟花盛宴,提前祝大家2022新春快乐
  16. 网站镶嵌网站显示代码
  17. 代理方式部署NER标注平台doccano
  18. KingBaseES 报错Connection to X.X.X.X:54321 refused.Check that the hostname and port are correct and ..
  19. (SWAT-3.1)关于土壤水文分组(HYDGRP)的一些资料参考
  20. photoshop ps 美白 去污 磨皮 方法

热门文章

  1. Python 多线程总结(1)- thread 模块
  2. 如何kill同一个应用的所有进程
  3. 互联网笔试各种主流语言在OJ上的的标准输入输出
  4. html,xml_网页开发_爬虫_笔记
  5. LeetCode简单题之区域和检索 - 数组不可变
  6. LeetCode简单题之密钥格式化
  7. 第一个SpringBoot程序(详细解析Grounp、Artifact等项目信息含义)
  8. TensorFlow多元线性回归实现
  9. 2021年大数据Hadoop(二十九):​​​​​​​关于YARN常用参数设置
  10. PHP 算法题:有多少苹果用来分赃1.1