Springboot之maven依赖管理

Springboot之maven依赖管理

    • maven依赖传递性与依赖冲突解决
    • maven插件 Maven Helper
    • 统一管理 dependencyManagement 标签
      • import标签
      • 手动声明
      • 依赖排除

在我们日常开发中,一般中大型项目对依赖管理会比较高,最近重新梳理了一下相关的知识

maven依赖传递性与依赖冲突解决

  • 最短路径优先
    假设有以下三个模块:
    Module A 依赖于 Library X 版本 1.0
    Module B 依赖于 Library X 版本 2.0
    Module C 同时依赖于 Module A 和 Module B
    在这种情况下:
    如果 Module C 直接依赖于 Module A 和 Module B,Maven 将选择 Library X 的哪个版本取决于最短路径优先原则。
  • 最先声明者优先
    如果有多个路径可以到达同一个依赖且路径长度相同,Maven 将选择最先声明的路径中的版本

maven插件 Maven Helper

这个idea的插件可以帮我们很方便的查看maven的依赖结构
Springboot之maven依赖管理_第1张图片
Springboot之maven依赖管理_第2张图片

统一管理 dependencyManagement 标签

当多个项目或模块需要共享相同的依赖项版本时,可以将这些依赖项的版本信息集中定义在一个单独的POM文件中,然后在其他项目的pom.xml中通过import导入这个POM文件。这样,当需要更新某个依赖项的版本时,只需在一个地方进行修改,而不需要在每个项目中都进行修改。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>dependencies-management</artifactId>
            <version>1.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

import标签

我们导入时候一般都会生命这个标签,注意如果使用这个标签的话,所引入的POM里面的依赖会替换掉依赖,所以maven的依赖传递性不生效

手动声明

<dependency>
      <groupId>com.example</groupId>
      <artifactId>library-x</artifactId>
      <version>2.0</version> <!-- 统一指定版本 -->
    </dependency>

依赖排除

<dependency>
  <groupId>com.example</groupId>
  <artifactId>module-b</artifactId>
  <version>1.0</version>
  <exclusions>
    <exclusion>
      <groupId>com.example</groupId>
      <artifactId>library-x</artifactId>
    </exclusion>
  </exclusions>
</dependency>

你可能感兴趣的:(spring,boot,maven,后端)