依赖传递

  • 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

  • 格式:

    <!--设置当前项目所依赖的所有jar-->
    <dependencies>
    <!--设置具体的依赖-->
        <dependency>
            <!--依赖所属群组id-->
            <groupId>org.springframework</groupId>
            <!--依赖所属项目id-->
            <artifactId>spring-webmvc</artifactId>
            <!--依赖版本号-->
            <version>5.2.10.RELEASE</version>
        </dependency›
    </dependencies>
    
  • 依赖具有传递性

    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

  • 依赖传递冲突问题

    • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
    • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
    • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    

    使用 4.11 版本