Maven 如何处理传递性依赖
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 如何处理传递性依赖相关推荐
- Maven的传递性依赖及其jar包冲突解决
一.Maven简介 Maven是一个跨平台的项目管理工具.作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理. 二.Maven的依赖管理 1. ...
- [Maven实战](9)传递性依赖
了解Spring的朋友都知道,创建一个Spring Framework项目都需要依赖什么样的Jar包.如果不使用Maven,那么在项目中就需要手动下载相关的依赖.由于Spring Framework又 ...
- Maven 传递性依赖
maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖.但有时候,当传递性依赖造成问题的时 ...
- maven 依赖范围影响传递性依赖
compile test provided runtime compile compile N N runtime test test N N test provided provided N p ...
- Maven坐标和依赖(三)
2019独角兽企业重金招聘Python工程师标准>>> 接下来介绍一下Maven的坐标和依赖. 1. Maven坐标 依赖的底层基础就是坐标.在实际生活中我们可以将地址看成一种坐标. ...
- 4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念
1 maven概念模型 2 maven的生命周期,项目构建过程 Maven生命周期就是为了对所有的构建过程进行抽象和统一 包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤 Mave ...
- Maven添加本地依赖
在写本文的时候先来说明一下maven依赖的各种范围的意思 compile(编译范围) compile 是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在所有的 ...
- maven 树 查看依赖
Maven对于新手来说是<步步惊心>,因为它包罗万象,博大精深,因为当你初来乍到时,你就像一个进入森林的陌生访客一样迷茫. Maven对于老手来说是<真爱配方>,因为它无所不能 ...
- 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
文章目录 一.Gradle 自动下载并配置构建环境 二.Gradle 提供 API 扩展与开发工具集成 三.Gradle 内置 Maven 和 Ivy 依赖管理 四.Gradle 使用 Groovy ...
最新文章
- 开发log4j配置_从 log4j 迁移到 logback
- linux利用grep查看打印匹配的下几行或前后几行的命令
- 编译hibernate源代码
- 移动互联网的发展趋势ios与android哪更有前景,移动互联网是什么?移动互联网现状,发展趋势及前景...
- LNMP架构的搭建--源码编译(MYSQL,PHP,nginx)
- Activiti 手工任务(manualTask)
- 复合梯形公式与复合辛普森公式matlab_时尚女装套装的公式图纸分享
- 数据挖掘:模型选择——关联规则
- 【GEE】配置本地python环境
- 【Docker】05 容器数据卷
- C语言常用函数大整理
- matlab freqz2 逆变化,【matlab】freqz函数的使用(二)
- 通信原理及系统系列9—— 设计无码间串扰的通信系统(理想低通滤波器)
- bbys_tu_2016
- 计算机前沿讲座题目论文,计算机技术前沿讲座论文
- 中国首部房地产行业电子签名应用白皮书发布,法大大编写
- /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
- 最长上升子序列(c++图文详解)
- 数字信号处理 --- 用离散傅里叶变换(循环卷积)实现线性卷积(个人学习笔记)
- wu版-天下无难试之Redis面试题刁难大全
热门文章
- tplink显示网络连接已断开_TP-Link无线路由器经常突然断开连接,如何解决?
- 做短视频选好素材和工具,新手做起来事半功倍,每天稳定200多
- 透过达达财报看同城零售赛道价值,平台规模化增长后撑起更大价值
- python的浮点数占 个字节_Python的浮点数占( )字节_学小易找答案
- (算法-二分)浮点数二分-求一个数的三次方根
- 红米k30s至尊纪念版和华为p30pro哪个好
- 从零开始编写自己的C#框架(8)——后台管理系统功能设计
- conda创建pytorch1.4环境 及遇到的错误
- Python之tkinter 组合框 Combobox
- 动手学深度学习(pytorch版)d2lzh_pytorch导入问题汇总