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
?
那么为什么 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库不匹配。
没有冲突。
这绝对是正确的。请参阅在没有父 POM 的情况下使用 Spring Boot!