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

时间:2017-10-27 22:11:01

标签: maven spring-boot dependencies dependency-management

Spring文档Using Spring Boot without the parent POM显示spring-boot-dependencies部分的依赖关系已添加到dependencyManagement部分。这真的是对的吗?

spring-boot-dependencies指定所有依赖项的版本属性。但是,在使用spring-boot-dependencies的POM中无法使用这些属性。据推测,这是因为spring-boot-dependencies位于dependencyManagement

spring-boot-dependencies仅包含dependencyManagementpluginManagement。因此,似乎可以在不添加不必要的依赖项的情况下将spring-boot-dependencies包含为依赖项(而不是dependencyManagement)。

那么为什么spring-boot-dependencies被列为dependencyManagement

2 个答案:

答案 0 :(得分:1)

这绝对是正确的。请参阅Using Spring Boot without the parent POM

答案 1 :(得分:1)

  

那么为什么spring-boot-dependencies包含在dependencyManagement中?

假设您有一个名为projectA的项目,并将spring-boot-dependencies添加到dependencyManagement的{​​{1}}部分。

pox.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> 部分下声明的所有Spring Boot依赖项都不需要指定dependencies。它从version部分中指定的version版本中获取spring-boot-dependencies

依赖管理的优点

  • 它通过在一个地方指定Spring Boot版本来集中依赖性信息。从一个版本升级到另一个版本时,它确实很有用。

  • Spring Boot依赖项的后续声明只是提到了没有任何版本的库名。在多模块项目中特别有用

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