为什么spring-boot-dependencies在dependencyManagement中?

问题描述 投票:0回答:3

Spring 文档在没有父 POM 的情况下使用 Spring Boot 显示对

spring-boot-dependencies
的依赖已添加到
dependencyManagement
部分。这真的正确吗?

spring-boot-dependencies 指定所有依赖项的版本属性。但是,这些属性在使用

spring-boot-dependencies
的 POM 中不可用。据推测,这是因为
spring-boot-dependencies
dependencyManagement
中。

spring-boot-dependency 仅包含

dependencyManagement
pluginManagement
。因此,似乎可以将
spring-boot-dependencies
作为依赖项(而不是 dependencyManagement)包含在内,而无需添加不必要的依赖项。

那么为什么

spring-boot-dependencies
会被包含为
dependencyManagement

maven spring-boot dependencies dependency-management
3个回答
8
投票

那么为什么 spring-boot-dependencies 被包含为 dependencyManagement 呢?

假设您有一个名为

projectA
的项目,并且将
spring-boot-dependencies
添加到
dependencyManagement
中的
pom.xml
部分。

<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
。它从
version
部分中指定的
spring-boot-dependencies
版本派生出
dependencyManagement

依赖管理的优点

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

  • 随后的 Spring Boot 依赖项声明仅提及库名称,没有任何版本。在多模块项目中特别有用

  • 避免了项目中不同版本的Spring Boot库不匹配。

  • 没有冲突。


1
投票

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


-1
投票
  • 首先我们来了解一下什么是依赖。因此,当您开发应用程序时,您可能需要许多库(通常是 jar 文件)。这意味着您的应用程序依赖于这些库。因此,名称依赖。
  • 现在您需要一种方法来组装所有这些库并以集中方式管理它们。这也意味着这些库将在需要时在编译时或运行时提供。这就是依赖管理的作用。
  • 因此,依赖关系管理的过程涉及找到这些依赖关系并将它们添加到类路径中。
  • Maven 是一种流行的依赖管理工具,它将集中所有依赖信息。
© www.soinside.com 2019 - 2024. All rights reserved.