响应其他插件
当应用另一个插件时,Spring Boot 插件会通过更改项目的配置来做出反应。本节将描述这些更改。
响应 Java 插件
当 Gradle 的 java plugin 应用于一个项目时,Spring Boot 插件:
-
创建一个名为
bootJar的 BootJar 任务,用于为项目生成一个可执行的 uber jar。该 jar 将包含主源集(main source set)运行时类路径上的所有内容;其中类文件被打包在BOOT-INF/classes中,而 jar 文件则被打包在BOOT-INF/lib中。 -
配置
assemble任务,使其依赖于bootJar任务。 -
配置
jar任务,使用plain作为其归档分类器(archive classifier)的约定。 -
创建一个名为
bootBuildImage的 BootBuildImage 任务,该任务将使用 buildpack 创建一个 OCI 镜像。 -
创建一个名为
bootRun的 BootRun 任务,可用于运行应用程序,使用main源集来查找其 main 方法并提供运行时类路径。 -
创建一个名为
bootTestRun的 BootRun 任务,可用于运行应用程序,使用test源集来查找其 main 方法并提供运行时类路径。 -
创建一个名为
bootArchives的配置(configuration),其中包含bootJar任务生成的产物(artifact)。 -
创建一个名为
developmentOnly的配置,用于存放仅在开发阶段需要的依赖项(例如 Spring Boot 的 Devtools),这些依赖项不应被打包进可执行的 jar 和 war 文件中。 -
创建一个名为
testAndDevelopmentOnly的配置,用于存放仅在开发阶段以及编写和运行测试时需要的依赖项,这些依赖项不应被打包进可执行的 jar 和 war 文件中。 -
创建一个名为
productionRuntimeClasspath的配置。它等价于runtimeClasspath减去那些仅出现在developmentOnly或testDevelopmentOnly配置中的依赖项。 -
配置所有未指定编码的
JavaCompile任务,使其使用UTF-8编码。 -
配置所有
JavaCompile任务,使用-parameters编译器参数。
响应 Kotlin 插件
当 Kotlin 的 Gradle 插件 应用于项目时,Spring Boot 插件:
-
将 Spring Boot 依赖管理中使用的 Kotlin 版本与插件版本对齐。这是通过设置
kotlin.version属性,使其值与 Kotlin 插件的版本相匹配来实现的。 -
配置所有
KotlinCompile任务以使用-java-parameters编译器参数。
响应 War 插件
当 Gradle 的 war 插件 应用于一个项目时,Spring Boot 插件:
-
创建一个名为
bootWar的 BootWar 任务,用于为项目生成一个可执行的、包含所有依赖的 fat war 文件。除了标准打包内容外,providedRuntime配置中的所有内容都将被打包到WEB-INF/lib-provided目录中。 -
配置
assemble任务,使其依赖于bootWar任务。 -
配置
war任务,使用plain作为其归档文件分类器(archive classifier)的约定。 -
配置
bootArchives配置,使其包含由bootWar任务生成的构件(artifact)。
对依赖管理插件的响应
当 io.spring.dependency-management plugin 应用于项目时,Spring Boot 插件将自动导入 spring-boot-dependencies bom。
响应 Application 插件
当 Gradle 的 application plugin 应用于一个项目时,Spring Boot 插件:
-
创建一个名为
bootStartScripts的CreateStartScripts任务,该任务将生成使用java -jar启动bootArchives配置中构件的脚本。该任务被配置为使用applicationDefaultJvmArgs属性作为其defaultJvmOpts属性的默认值。 -
创建一个名为
boot的新分发(distribution),并将其配置为在lib目录中包含bootArchives配置中的构件,在bin目录中包含启动脚本。 -
配置
bootRun任务,使其使用mainClassName属性作为其main属性的默认值。 -
配置
bootRun和bootTestRun任务,使其使用applicationDefaultJvmArgs属性作为其jvmArgs属性的默认值。 -
配置
bootJar任务,使其使用mainClassName属性作为其清单(manifest)中Start-Class条目的默认值。 -
配置
bootWar任务,使其使用mainClassName属性作为其清单(manifest)中Start-Class条目的默认值。
对 GraalVM Native Image 插件的响应
当 GraalVM Native Image 插件 应用于项目时,Spring Boot 插件:
-
应用
org.springframework.boot.aot插件,该插件:-
注册
aot和aotTest源集。 -
注册一个名为
processAot的ProcessAot任务,用于在aot源集中为应用程序生成 AOT 优化的源代码。 -
配置
aot源集的 Java 编译和资源处理任务,使其依赖于processAot。 -
注册一个名为
processTestAot的ProcessTestAot任务,用于在aotTest源集中为应用程序的测试生成 AOT 优化的源代码。 -
配置
aotTest源集的 Java 编译和资源处理任务,使其依赖于processTestAot。
-
-
将
aot源集的输出添加到mainGraalVM 原生二进制文件的类路径中。 -
将
aotTest源集的输出添加到testGraalVM 原生二进制文件的类路径中。 -
配置 GraalVM 扩展以禁用 Toolchain 检测。
-
配置每个 GraalVM 原生二进制文件要求使用 GraalVM 22.3 或更高版本。
-
配置
bootJar任务,将其 JAR 文件中包含由collectReachabilityMetadata任务生成的可达性元数据。 -
配置
bootJar任务,在其清单文件中添加Spring-Boot-Native-Processed: true条目。
对 CycloneDX 插件的响应
当 CycloneDX 插件 应用于项目时,Spring Boot 插件:
-
配置
cyclonedxBom任务,使用application项目类型,并以 JSON 格式将 SBOM 输出到application.cdx文件中,且不包含完整的许可证文本。 -
将 SBOM 添加到生成的 jar 或 war 文件中的
META-INF/sbom目录下。 -
在 jar 或 war 文件的清单(manifest)中添加
Sbom-Format和Sbom-Location属性。