响应其他插件

当应用其他插件时,Spring Boot 插件会通过对项目配置做出各种更改来响应。 本节描述了这些更改。

响应 Java 插件

当 Gradle 的 java 插件 应用于项目时,Spring Boot 插件会:

  1. 创建一个名为 bootJarBootJar 任务,用于为项目创建可执行的 uber jar。 该 jar 将包含主源码集运行时类路径上的所有内容;类被打包在 BOOT-INF/classes,jar 被打包在 BOOT-INF/lib

  2. 配置 assemble 任务依赖于 bootJar 任务。

  3. 配置 jar 任务将其归档分类器的约定设置为 plain

  4. 创建一个名为 bootBuildImageBootBuildImage 任务,使用 buildpack 创建 OCI 镜像。

  5. 创建一个名为 bootRunBootRun 任务,可用于使用 main 源码集查找主方法并提供其运行时类路径来运行你的应用。

  6. 创建一个名为 bootTestRunBootRun 任务,可用于使用 test 源码集查找主方法并提供其运行时类路径来运行你的应用。

  7. 创建一个名为 bootArchives 的配置,包含由 bootJar 任务生成的 artifact。

  8. 创建一个名为 developmentOnly 的配置,用于仅在开发时需要的依赖(如 Spring Boot 的 Devtools),这些依赖不应被打包进可执行 jar 和 war。

  9. 创建一个名为 testAndDevelopmentOnly 的配置,用于仅在开发和测试时需要的依赖,这些依赖不应被打包进可执行 jar 和 war。

  10. 创建一个名为 productionRuntimeClasspath 的配置。它等价于 runtimeClasspath,但去除了仅出现在 developmentOnlytestDevelopmentOnly 配置中的依赖。

  11. 配置所有未设置编码的 JavaCompile 任务使用 UTF-8

  12. 配置所有 JavaCompile 任务使用 -parameters 编译器参数。

响应 Kotlin 插件

Kotlin 的 Gradle 插件 应用于项目时,Spring Boot 插件会:

  1. 使 Spring Boot 依赖管理中使用的 Kotlin 版本与插件版本保持一致。 这是通过将 kotlin.version 属性设置为与 Kotlin 插件版本一致的值实现的。

  2. 配置所有 KotlinCompile 任务使用 -java-parameters 编译器参数。

响应 War 插件

当 Gradle 的 war 插件 应用于项目时,Spring Boot 插件会:

  1. 创建一个名为 bootWarBootWar 任务,用于为项目创建可执行的 fat war。 除了标准打包外,providedRuntime 配置中的所有内容都将被打包进 WEB-INF/lib-provided

  2. 配置 assemble 任务依赖于 bootWar 任务。

  3. 配置 war 任务将其归档分类器的约定设置为 plain

  4. 配置 bootArchives 配置包含由 bootWar 任务生成的 artifact。

响应依赖管理插件

io.spring.dependency-management 插件 应用于项目时,Spring Boot 插件会自动导入 spring-boot-dependencies bom。

响应 Application 插件

当 Gradle 的 application 插件 应用于项目时,Spring Boot 插件会:

  1. 创建一个名为 bootStartScriptsCreateStartScripts 任务,用于使用 java -jar 启动 bootArchives 配置中的 artifact。 该任务默认使用 applicationDefaultJvmArgs 属性作为其 defaultJvmOpts 属性的约定。

  2. 创建一个新的名为 boot 的分发包,并配置其 lib 目录包含 bootArchives 配置中的 artifact,bin 目录包含启动脚本。

  3. 配置 bootRun 任务默认使用 mainClassName 属性作为其 main 属性。

  4. 配置 bootRunbootTestRun 任务默认使用 applicationDefaultJvmArgs 属性作为其 jvmArgs 属性。

  5. 配置 bootJar 任务默认使用 mainClassName 属性作为其 manifest 的 Start-Class 条目。

  6. 配置 bootWar 任务默认使用 mainClassName 属性作为其 manifest 的 Start-Class 条目。

响应 GraalVM Native Image 插件

GraalVM Native Image 插件 应用于项目时,Spring Boot 插件会:

  1. 应用 org.springframework.boot.aot 插件:

    1. 注册 aotaotTest 源码集。

    2. 注册名为 processAotProcessAot 任务,在 aot 源码集中生成 AOT 优化源码。

    3. 配置 aot 源码集的 Java 编译和资源处理任务依赖于 processAot

    4. 注册名为 processTestAotProcessTestAot 任务,在 aotTest 源码集中生成应用测试的 AOT 优化源码。

    5. 配置 aotTest 源码集的 Java 编译和资源处理任务依赖于 processTestAot

  2. aot 源码集的输出添加到 main GraalVM native binary 的类路径。

  3. aotTest 源码集的输出添加到 test GraalVM native binary 的类路径。

  4. 配置 GraalVM 扩展以禁用 Toolchain 检测。

  5. 配置每个 GraalVM native binary 要求 GraalVM 22.3 或更高版本。

  6. 配置 bootJar 任务将 collectReachabilityMetadata 任务生成的可达性元数据包含进 jar。

  7. 配置 bootJar 任务在 manifest 中添加 Spring-Boot-Native-Processed: true 条目。

响应 CycloneDX 插件

CycloneDX 插件 应用于项目时,Spring Boot 插件会:

  1. 配置 cyclonedxBom 任务使用 application 项目类型,并将 SBOM 输出到 JSON 格式的 application.cdx 文件(不包含完整许可证文本)。

  2. 在生成的 jar 或 war 文件的 META-INF/sbom 下添加 SBOM。

  3. 在 jar 或 war 文件的 manifest 中添加 Sbom-FormatSbom-Location