# 依赖管理

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

  • 格式:

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

image_2023-03-06-21-20-06

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

image_2023-03-06-21-22-04

# 依赖传递冲突问题

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级月低,层级越浅,优先级越高

  • 声明优先:当前资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的

  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

# <optional>true/false</optional>

# 可选依赖

  • 隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性

  • 可选依赖指对外隐藏当前所有依赖的资源 -- 不透明

<dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.11</version>
<!--        可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递性 -->
        <optional>true</optional>
    </dependency>

# 排除依赖

点击查看

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本 -- 不需要

  • 排除依赖资源仅指定 GA 即可,无需指定 V