3.3.传递依赖和依赖范围的关系

我们来看这样一种依赖

项目A依赖项目B,项目B依赖项目C。那么项目A一定会引入项目C吗?

答案当然是不会的,我们还要看依赖范围(scope)来确认A与C的关系。


我们把A对于B的依赖叫做第一直接依赖

我们把B对于C的依赖叫做第二直接依赖

A对于C是传递性依赖


下图中最左一列表示第一直接依赖范围,最上一行是第二直接依赖范围,中间单元格则表示传递性依赖范围。


依赖范围影响传递性依赖

compile test provided runtime
compile compile - - runtime
test test - - test
provided provided - provided provided
runtime runtime - - runtime


当第二直接依赖的范围是compile的时候传递性依赖的范围与第一直接依赖的范围一致。

当第二直接依赖的范围是test的时候依赖不会得以传递

当第二直接依赖的范围是provided,只有第一直接依赖范围是provided才传递,且传递性依赖的范围同样是provided

当第二直接依赖的范围是runtime,传递性依赖与第一直接依赖范围一致,但complie除外。

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...