响应其他插件

当应用其他插件时,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 任务,该任务将使用 构建包 创建一个 OCI 镜像。

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

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

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

  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 插件版本匹配的值设置 kotlin.version 属性来实现的。

  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 任务生成的工件。

响应依赖项管理插件

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

响应应用程序插件

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

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

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

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

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

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

  6. 配置 bootWar 任务使用 mainClassName 属性作为其清单中 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 源集的输出添加到主 GraalVM 原生二进制文件的类路径中。

  3. aotTest 源集的输出添加到测试 GraalVM 原生二进制文件的类路径中。

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

  5. 配置每个 GraalVM 原生二进制文件以需要 GraalVM 22.3 或更高版本。

  6. 配置 bootJar 任务在其 jar 文件中包含 collectReachabilityMetadata 任务生成的 reachability 元数据。

  7. 配置 bootBuildImage 任务使用 paketobuildpacks/builder-jammy-tiny:latest 作为其构建器,并在其环境中将 BP_NATIVE_IMAGE 设置为 true

响应 CycloneDX 插件

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

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

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

  3. Sbom-FormatSbom-Location 添加到 jar 或 war 文件的清单中。