传递性依赖和依赖范围
依赖范围不仅可以控制依赖与三种classpath的关系,还对传递性依赖产生影响。
compile | test | provided | runtime | |
---|---|---|---|---|
compile | compile | - | - | runtime |
test | test | - | - | test |
provided | provided | - | provided | provided |
runtime | runtime | - | - | runtime |
仔细观察一下上表,我们可以发现这样的规律:
- 当第二直接依赖的范围是compile的时候,传递性依赖与第一直接依赖的范围这致
- 当第二直接依赖的范围是test的时候,依赖不会得以传递
- 当第二直接依赖的范围是provided的时候,只传递第一直接依赖范围也是provided的依赖,且传递性依赖的范围同样为provided
- 当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递性依赖的范围为runtime