我正在参加「掘金·启航计划」
以2.3.7.RELEASE为例
spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
<relativePath/>
</parent>
继承了spring-boot-dependencies
其内部首先是继承了spring-boot-dependencies
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.7.RELEASE</version>
</parent>
所以很明显是包含关系了。
定义了一些属性
<properties>
<java.version>1.8</java.version>
<resource.delimiter>@</resource.delimiter>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
- java.version 被用于指定编译时源文件和目标文件的 java 版本
- resource.delimiter定义了占位符,可以用来在资源文件application.properties里通过@...@来引用maven中定义的变量,详见官方文档,比如
app.encoding=@project.build.sourceEncoding@
app.java.version=@java.version@
- maven.compiler.source定义了maven编译的版本
- project.build.sourceEncoding定义了项目源码编码格式为UTF-8
定义了打包时的资源过滤
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/application*.yml</include>
<include>**/application*.yaml</include>
<include>**/application*.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/application*.yml</exclude>
<exclude>**/application*.yaml</exclude>
<exclude>**/application*.properties</exclude>
</excludes>
</resource>
</resources>
打包插件的管理
maven-compiler-plugin kotlin-maven-plugin maven-failsafe-plugin maven-jar-plugin maven-war-plugin maven-resources-plugin git-commit-id-plugin spring-boot-maven-plugin,定义了可执行jar包的配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${start-class}</mainClass>
</configuration>
</plugin>
maven-shade-plugin
spring-boot-dependencies
而spring-boot-dependencies依赖里,只负责管理其他依赖的版本。
总结
也就是说,如果你只想管理依赖版本,其他打包的内容自己管理、配置,你可以只引用spring-boot-dependencies,否则,你需要引用spring-boot-starter-parent。