> 健康
mave依赖传递性(mave依赖树依赖结构)
导语:Maven笔记之三:依赖传递
在《Maven笔记之一:简介、安装(Mac)和运行》和《Maven笔记之二:依赖基础scope》介绍了Maven依赖的基础,包括groupId,artifactId,version以及scope等概念。本文主要介绍下依赖传递和依赖冲突的解决方案。
依赖传递
依赖传递很简单:如果A依赖于B,B依赖于C,那么A也将依赖于C。本文用A->B表示A依赖于B。
依赖调解
假设A->B->C->E(1.0),同时A->D->E(2.0),那么路径短优先,使用E(2.0)。如果长度相同,那么就以先声明者优先。
可选依赖
使用optional元素表示该依赖为可选依赖,就是说该依赖只对当前项目有效,对依赖于当前项目的其他项目无效。比如A->B,B->C(optional=true),但是A不会依赖于C。
排除依赖
使用exclusions就可以排除当前依赖的传递依赖。比如A->B->C->E(1.0),同时A->D(E exclusion in D)->E(2.0),A还是会依赖E(1.0)版本。
依赖命令
在实际工作中可以使用如下命令来验证真正的依赖关系。
mvn dependency:list
将项目下的所有依赖以列表的形式展示出来。
mvn dependency:tree
将项目下的所有依赖以树的形式展示出来。(最常用)
mvn dependency:analyze
分析项目下的依赖是否有问题。
本文内容由小姿整理编辑!