如果不用spring-boot-starter-parent
作为spring-boot项目的父pom
创建Spring-boot项目的时候,pom文件中默认的parent就是spring-boot-starter-parent
:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
让我们来尝试一下去除spring-boot-starter-parent
会有什么效果:
去处置后我们的工程找不到
spring-boot
相关的依赖了,启动 spring-boot
项目后提示:
但是如果我们不想使用spring-boot-starter-parent
作为我们spring-boot
工程的父pom,根据官网的提示,我们可以使用spring-boot-dependencies
作为我们的依赖管理
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
添加完依赖包以后就可以正常启动了。
spring-boot-starter-parent
与spring-boot-dependencies
之间是什么关系?
ctrl+鼠标左键
打开spring-boot-starter-parent
的依赖,如下图:
可以看出
spring-boot-starter-parent
是 spring-boot-dependencies
的子pom,只是额外添加了一些properties,resources,plugins
spring-boot-starter-parent
相比spring-boot-dependencies
提供了哪些额外特性?
spring-boot官方文档也有详细的说明
1、 java1.8作为默认的编译级别
2、 UTF-8是默认的编码格式
3、 一个依赖管理部分,从spring-boot-dependencies
pom继承,管理着共同依赖的版本。当在自己的pom中使用这些依赖关系时,可以为这些依赖关系省略标记。
4、 具有执行ID 的repackage目标的repackage执行。
5、 maven中更隔离的resource filter。
6、 合理的插件配置(exec插件,Git提交ID和shade)。
7、 针对application.properties
和application.yml
包括特定于配置文件的文件的合理resource filter(例如application-dev.properties
和application-dev.yml
)