传递依赖的范围确定

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?下表是这个问题的答案:

 

技术图片

 

 

表1

 

根据上表,有:当A→B的范围是compile, B→C的范围是test,那么A不依赖于C。

这样理解:假设C就是 junit,即要使用 junit对B的功能进行单元测试(B→C),A要使用B提供的功能(A→B),但是A不一定要使用junit进行单元测试。

在IDEA中验证

  1. 创建模块m_parent和他的两个子模块m_child01, m_child02,m_child01依赖junit,servlet,spring-context,m_child02依赖m_child01
    技术图片 技术图片 技术图片 技术图片

  2. 查看依赖:通过Maven Projects窗口的Show Dependencies查看m_child01和m_child02的依赖
    技术图片

    • m_child01的依赖
      技术图片
    • m_child02的依赖
      技术图片
  3. 可以看到:

    • 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列的情况。

以上是关于传递依赖的范围确定的主要内容,如果未能解决你的问题,请参考以下文章

来自提供的范围依赖的传递依赖

maven依赖管理(依赖配置依赖传递依赖冲突依赖范围)

测量不确定度与测量误差的区别与联系?

maven依赖和传递

传递依赖的范围

Maven 的依赖范围和传递