跳到主要内容
版本:4.0.2

响应其他插件

QWen Max 中英对照 Reacting to Other Plugins

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

响应 Java 插件​

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

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

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

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

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

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

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

  7. 创建一个名为 bootArchives 的配置(configuration),其中包含由 bootJar 任务生成的产物(artifact)。

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

  1. 创建一个名为 bootWar 的 BootWar 任务,用于为项目生成一个可执行的、包含所有依赖的 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. 创建一个名为 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 插件 应用于一个项目时,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 扩展以禁用 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-Format 和 Sbom-Location。