Maven pom.xml下的依赖包的传递关系

2018-09-06  本文已影响0人  空山Echo

一、dependency 下的标签解释

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>compile</scope>
            <type>jar</type>
        </dependency>
    </dependencies>
image.png

二、如何理解依赖包具有传递性,以及它们的使用级别(注意<scope>的值,若不打进包自然不被传递,如test、provided)

  1. Pa -----logging1.0.1.jar
    Pc -----Pa(则Pc-----logging1.0.1.jar)
    若Pc 本工程直接添加logging1.0.5依赖,不论代码先后,优先使用本工程自身的依赖jar包1.0.5。
  2. Pa ----- logging1.2.6.jar
    Pb ----- logging1.3.0.jar
    Pc ----- Pa,Pb
    则,Pc将依赖logging1.2.6.jar
  3. Pa ----- logging1.2.6.jar
    Pb ----- logging1.3.0.jar
    Pc ----- Pa Pd ----- Pc,Pb
    此时Pd默认依赖Pb传递来的logging1.3.0.jar。若想使用Pa中的logging1.2.6.jar 则需要使用排除标签 <exclusion>排除logging1.3.0.jar

    结论:离工程越近的级别优先级越高,同级别时选择先依赖的那个,若想使用低级别可使用排除高级别的方法

image.png

三、查看依赖关系图

image.png
上一篇 下一篇

猜你喜欢

热点阅读