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的传递性依赖及其jar包冲突解决

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

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

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

  3. Maven 传递性依赖

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

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

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

  5. Maven坐标和依赖(三)

    2019独角兽企业重金招聘Python工程师标准>>> 接下来介绍一下Maven的坐标和依赖. 1. Maven坐标 依赖的底层基础就是坐标.在实际生活中我们可以将地址看成一种坐标. ...

  6. 4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念

     1 maven概念模型 2 maven的生命周期,项目构建过程 Maven生命周期就是为了对所有的构建过程进行抽象和统一 包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤 Mave ...

  7. Maven添加本地依赖

    在写本文的时候先来说明一下maven依赖的各种范围的意思 compile(编译范围)        compile 是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在所有的 ...

  8. maven 树 查看依赖

    Maven对于新手来说是<步步惊心>,因为它包罗万象,博大精深,因为当你初来乍到时,你就像一个进入森林的陌生访客一样迷茫. Maven对于老手来说是<真爱配方>,因为它无所不能 ...

  9. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )

    文章目录 一.Gradle 自动下载并配置构建环境 二.Gradle 提供 API 扩展与开发工具集成 三.Gradle 内置 Maven 和 Ivy 依赖管理 四.Gradle 使用 Groovy ...

最新文章

  1. 开发log4j配置_从 log4j 迁移到 logback
  2. linux利用grep查看打印匹配的下几行或前后几行的命令
  3. 编译hibernate源代码
  4. 移动互联网的发展趋势ios与android哪更有前景,移动互联网是什么?移动互联网现状,发展趋势及前景...
  5. LNMP架构的搭建--源码编译(MYSQL,PHP,nginx)
  6. Activiti 手工任务(manualTask)
  7. 复合梯形公式与复合辛普森公式matlab_时尚女装套装的公式图纸分享
  8. 数据挖掘:模型选择——关联规则
  9. 【GEE】配置本地python环境
  10. 【Docker】05 容器数据卷
  11. C语言常用函数大整理
  12. matlab freqz2 逆变化,【matlab】freqz函数的使用(二)
  13. 通信原理及系统系列9—— 设计无码间串扰的通信系统(理想低通滤波器)
  14. bbys_tu_2016
  15. 计算机前沿讲座题目论文,计算机技术前沿讲座论文
  16. 中国首部房地产行业电子签名应用白皮书发布,法大大编写
  17. /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
  18. 最长上升子序列(c++图文详解)
  19. 数字信号处理 --- 用离散傅里叶变换(循环卷积)实现线性卷积(个人学习笔记)
  20. wu版-天下无难试之Redis面试题刁难大全

热门文章

  1. tplink显示网络连接已断开_TP-Link无线路由器经常突然断开连接,如何解决?
  2. 做短视频选好素材和工具,新手做起来事半功倍,每天稳定200多
  3. 透过达达财报看同城零售赛道价值,平台规模化增长后撑起更大价值
  4. python的浮点数占 个字节_Python的浮点数占( )字节_学小易找答案
  5. (算法-二分)浮点数二分-求一个数的三次方根
  6. 红米k30s至尊纪念版和华为p30pro哪个好
  7. 从零开始编写自己的C#框架(8)——后台管理系统功能设计
  8. conda创建pytorch1.4环境 及遇到的错误
  9. Python之tkinter 组合框 Combobox
  10. 动手学深度学习(pytorch版)d2lzh_pytorch导入问题汇总