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的依赖