传递依赖的范围确定
Posted wumingoo1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传递依赖的范围确定相关的知识,希望对你有一定的参考价值。
传递依赖的确定
问题:如果A依赖B(A→B),B依赖C(B→C),那么A是否一定依赖C(A→C)? 如果A依赖C,A依赖C的范围是什么?是compile还是test还是provided还是runtime?下表是这个问题的答案:
根据上表,有:当A→B的范围是compile, B→C的范围是test,那么A不依赖于C。
这样理解:假设C就是 junit,即要使用 junit对B的功能进行单元测试(B→C),A要使用B提供的功能(A→B),但是A不一定要使用junit进行单元测试。
在IDEA中验证
-
创建模块m_parent和他的两个子模块m_child01, m_child02,m_child01依赖junit,servlet,spring-context,m_child02依赖m_child01
-
查看依赖:通过Maven Projects窗口的Show Dependencies查看m_child01和m_child02的依赖
-
可以看到:
- m_child01依赖junit,范围是test,m_child02依赖m_child01,范围是compile,得到m_child02不依赖junit,符合表1中第2行第5列的情况。
- m_child01依赖servlet,范围是provided,m_child02依赖m_child01,范围是compile,得到m_child02不依赖servlet,符合表1中第2行第3列的情况。
- m_child01依赖spring-context,范围是compile,m_child02依赖m_child01,范围是compile,得到m_child02依赖spring-context,且范围是compile,符合表1中第2行第2列的情况。
以上是关于传递依赖的范围确定的主要内容,如果未能解决你的问题,请参考以下文章