1.maven的spring-boot-starter-parent的作用?
答:
spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
2.parent的特性
Maven的用户可以通过继承spring-boot-starter-parent项目来获得一些合理的默认配置。这个parent默认提供了以下特性:
1.java版本默认使用1.8,但可添加以下配置修改版本:
<properties>
<java.version>1.8</java.version>
</properties>
2.编码格式默认使用utf-8,但可添加以下配置修改编码:
<properties>
<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
</properties>
3.一个引用管理的功能,在dependencies里的部分配置可以不用填写version信息,这些version信息会从spring-boot-dependencies里得到继承。
正常来说项目应该添加了以下带版本的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.35</version>
</dependency>
但是使用spring-boot-starter-parent的话,可以这样,继承默认版本:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
4.识别过来资源过滤
例如:maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到target\classes下面,但是现实我们可能会在src/main/java下面也放置一些配置文件如hibernate配置文件或mybatis mapper配置文件等,如果不做一些额外配置,那我们打包后的项目可能找不到这些必须的资源文件,因此在pom.xml中增加类似如下配置:
<build>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</build>
就会将src/main/java下的xml文件随同java编译后的class文件一同copy到相应的class目录
5.识别插件的配置
比如exec plugin, surefire, Git commit ID, shade
能够识别application.properties和application.yml类型的文件,同时也能支持profile-specific类型的文件(如: application-foo.properties and application-foo.yml,这个功能可以更好的配置不同生产环境下的配置文件)。