Maven依赖传递性

当我们在项目中加入spring-web依赖,而spring-web又依赖了spring-beans、spring-core、spring-jcl等,那么这3个依赖也被自动加了进来,这种叫做依赖的传递;

scope元素的值会对这种传递依赖会有影响,影响结果如下图:

 

 

 

A依赖于B,B依赖于C,我们说A对于B是第一直接依赖,B对于C是第二直接依赖,而A对于C是传递性依赖,

上图第一列:即A->B的scope的值

上图第一行:即B->C的scope的值

行列交叉的值显示的是A对于C最后产生的依赖效果;

表格有一定规律:

(1)当B->C依赖是compile的时候(表中第2列),那么A->C的依赖范围和A->B的sope是一样的;

(2)当B->C的依赖是test时(表中第3列),那么B->C的依赖无法传递给A;

(3)当B->C的依赖是provided(表第4列),只传递A->C的scope为provided的情况,其他情况B->C的依赖无法传递给A;

(4)当B->C的依赖是runtime(表第5列),那么C按照B->C的scope传递给A;

A对C的依赖结果取决于B对C的依赖

 

posted on 2023-01-31 17:17  companion  阅读(43)  评论(0编辑  收藏  举报