为什么dependencyManagement中存在spring-boot依赖项



Spring文档Using Spring Boot without The parent POM显示了对spring-boot-dependencies的依赖被添加到dependencyManagement部分。这真的正确吗?

spring-boot依赖项为所有依赖项指定版本属性。但是,这些特性在使用spring-boot-dependencies的POM中不可用。据推测,这是因为spring-boot-dependenciesdependencyManagement中。

弹簧引导依赖关系仅包括CCD_ 6和CCD_。因此,似乎可以将spring-boot-dependencies作为依赖项(而不是dependencyManagement)包括在内,而不添加不必要的依赖项。

那么,为什么要将spring-boot-dependencies包含为dependencyManagement呢?

那么,为什么要将spring-boot依赖项作为dependencyManagement包括在内呢?

假设您有一个名为projectA的项目,并将spring-boot-dependencies添加到pom.xml中的dependencyManagement部分。

<project>
<groupId>com.iovation.service</groupId>
<artifactId>projectA</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<type>pom</type>
<version>1.5.8.RELEASE</version>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Spring Boot Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
...
</project>

如果您仔细注意到,您会发现在dependencies部分下声明的所有Spring Boot依赖项都不需要指定version。它从dependencyManagement部分中指定的spring-boot-dependencies的版本导出version

依赖关系管理的优势

  • 它通过在一个位置指定Spring Boot版本来集中依赖关系信息。在从一个版本升级到另一个版本的过程中,它确实很有帮助。

  • Spring Boot依赖项的后续声明只提到库名称,没有任何版本。特别有助于多模块项目

  • 它避免了项目中不同版本的spring引导库不匹配。

  • 没有冲突。

这绝对是正确的。请参阅在没有父POM的情况下使用Spring Boot!

  • 首先,让我们了解什么是依赖关系。因此,当您开发应用程序时,可能需要许多库(通常是jar文件)。这意味着您的应用程序依赖于这些库。因此产生了名称依赖关系
  • 现在,您需要一种方法来组装所有这些库并以集中的方式管理它们。这也意味着这些库将在编译时或运行时根据需要提供。这就是依赖关系管理的作用
  • 因此,依赖关系管理的过程包括定位这些依赖关系并将它们添加到类路径中
  • Maven是一个流行的依赖关系管理工具,它将集中所有依赖关系信息

最新更新