跳到主要内容
版本:4.0.2

响应其他插件

QWen Max 中英对照 Reacting to Other Plugins

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

响应 Java 插件

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

  1. 创建一个名为 bootJarBootJar 任务,用于为项目生成一个可执行的 uber jar。该 jar 将包含主源代码集(main source set)运行时类路径上的所有内容;其中类文件被打包在 BOOT-INF/classes 目录下,而 jar 文件则被打包在 BOOT-INF/lib 目录下。

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

  3. 配置 jar 任务,使用 plain 作为其归档分类器(archive classifier)的默认值。

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

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

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

  7. 创建一个名为 bootArchives 的配置(configuration),其中包含由 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 作为其归档文件分类器(archive classifier)的约定。

  4. 配置 bootArchives 配置,使其包含由 bootWar 任务生成的构件(artifact)。

响应依赖管理插件

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

响应 Application 插件

当 Gradle 的 application plugin 应用于一个项目时,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 源代码集的输出添加到 main GraalVM 原生二进制文件的类路径中。

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

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

  5. 配置 bootJar 任务,使其 JAR 文件中包含 collectReachabilityMetadata 任务生成的可达性元数据。

  6. 配置 bootJar 任务,向其清单(manifest)中添加 Spring-Boot-Native-Processed: true 条目。

对 CycloneDX 插件的响应

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

  1. 配置 cyclonedxBom 任务以:

    1. 使用 application 项目类型。

    2. 将 JSON 格式的 SBOM 输出到 application.cdx.json 文件。

    3. 禁用 XML 格式的 SBOM。

    4. 禁用完整的许可证文本。

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

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