Spring文档Using Spring Boot without The parent POM显示了对spring-boot-dependencies
的依赖被添加到dependencyManagement
部分。这真的正确吗?
spring-boot依赖项为所有依赖项指定版本属性。但是,这些特性在使用spring-boot-dependencies
的POM中不可用。据推测,这是因为spring-boot-dependencies
在dependencyManagement
中。
弹簧引导依赖关系仅包括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是一个流行的依赖关系管理工具,它将集中所有依赖关系信息