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仅包含dependencyManagement
和pluginManagement
。因此,似乎可以在不添加不必要的依赖项的情况下将spring-boot-dependencies
包含为依赖项(而不是dependencyManagement)。
那么为什么spring-boot-dependencies
被列为dependencyManagement
?
答案 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库的不匹配。