对其他插件的响应

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

对 Java 插件的响应

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

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

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

  3. 配置 jar 任务使用 plain 作为其归档分类器的约定。

  4. 创建一个名为 bootBuildImage 的 BootBuildImage 任务,该任务将使用 buildpack 创建 OCI 镜像。

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

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

  7. 创建一个名为 bootArchives 的配置,其中包含由 bootJar 任务产生的构件。

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

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

  10. 创建一个名为 productionRuntimeClasspath 的配置。它等同于 runtimeClasspath 减去仅出现在 developmentOnly 或 testDevelopmentOnly 配置中的任何依赖项。

  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 plugin 应用于项目时,Spring Boot 插件:

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

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

  3. 配置 war 任务使用 plain 作为其归档分类器的约定。

  4. 配置 bootArchives 配置包含由 bootWar 任务产生的构件。

对依赖管理插件的响应

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

对 Application 插件的响应

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

  1. 创建一个名为 bootStartScripts 的 CreateStartScripts 任务,该任务将创建使用 java -jar 启动 bootArchives 配置中的构件的脚本。 该任务被配置为使用 applicationDefaultJvmArgs 属性作为其 defaultJvmOpts 属性的约定。

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

  3. 配置 bootRun 任务使用 mainClassName 属性作为其 main 属性的约定。

  4. 配置 bootRun 和 bootTestRun 任务使用 applicationDefaultJvmArgs 属性作为其 jvmArgs 属性的约定。

  5. 配置 bootJar 任务使用 mainClassName 属性作为其清单中 Start-Class 条目的约定。

  6. 配置 bootWar 任务使用 mainClassName 属性作为其清单中 Start-Class 条目的约定。

对 GraalVM Native Image 插件的响应

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

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

    1. 注册 aot 和 aotTest 源集。

    2. 注册一个名为 processAot 的 ProcessAot 任务,该任务将在 aot 源集中为应用程序生成 AOT 优化的源代码。

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

    4. 注册一个名为 processTestAot 的 ProcessTestAot 任务,该任务将在 aotTest 源集中为应用程序的测试生成 AOT 优化的源代码。

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

  2. 将 aot 源集的输出添加到 main GraalVM 本地二进制文件的类路径中。

  3. 将 aotTest 源集的输出添加到 test GraalVM 本地二进制文件的类路径中。

  4. 配置 GraalVM 扩展禁用工具链检测。

  5. 配置每个 GraalVM 本地二进制文件要求 GraalVM 22.3 或更高版本。

  6. 配置 bootJar 任务在其 jar 中包含由 collectReachabilityMetadata 任务产生的可达性元数据。

  7. 配置 bootJar 任务添加 Spring-Boot-Native-Processed: true 清单条目。

对 CycloneDX 插件的响应

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

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

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

  3. 在 jar 或 war 文件的清单中添加 Sbom-Format 和 Sbom-Location。