Gradle 9.0.0 的新特性
Gradle 9.0.0 是一个重要的主要版本,它包含了自 8.0 版本以来的许多功能。它将 Gradle 配置缓存设置为首选执行模式,提供更清晰、更具操作性的错误报告,并将 Gradle 更新到 Kotlin 2 和 Groovy 4。
目录
Gradle 9 中的关键更新
下面,您可以阅读 Gradle 8.0 到 9.0.0 之间关键更新的摘要。
注意:请务必遵循升级指南。
如您所见,我们正在切换到三位版本格式。从 9.0.0 开始,Gradle 版本将遵循语义版本控制 (SemVer) 规范,适用于所有稳定功能;
孵化中的功能和内部 API 可能具有不同的生命周期。
配置缓存
配置缓存是 Gradle 最受欢迎的近期功能之一。无论您是构建 Java、Kotlin、Android 还是原生项目,它都可以显著减少配置时间,尤其是在大型代码库中。在过去的几年里,我们已经提供了许多改进,使配置缓存更可靠、更快,并改善了采用者和开发人员的体验。
从 Gradle 9.0.0 开始,配置缓存成为首选模式,我们强烈建议 Gradle 用户开始在他们的构建中采用配置缓存。插件作者也应该在他们的插件中争取配置兼容性。请查阅采用指南的文档页面,它可以帮助您入门、排除故障并修复最常见的兼容性问题(如果有)。另请参阅配置缓存网络研讨会的录音,了解一些采用步骤和附加工具的提示。
配置缓存作为首选执行模式
为了促进社区维护插件的进一步采用和兼容性,我们现在建议在大多数情况下启用配置缓存。虽然在此版本中配置缓存不会默认启用,但有一些显著的变化
- Gradle 现在在 CLI 输出中建议启用配置缓存,当它检测到没有使用不兼容的功能时。
- 对于新生成的项目,使用
gradle init
时,配置缓存现在默认启用。 - 开发工具和配置缓存文档已大大改进,以方便采用和故障排除。
- 核心 Gradle 插件和构建任务现在可以在与配置缓存不兼容时优雅地降级构建模式。您现在可以永久启用配置缓存,即使使用不完全兼容的 Gradle 插件,也不会遇到构建失败。
- Gradle 9 删除了许多以前不兼容配置缓存的已弃用 API,转而使用与配置缓存兼容的安全且惯用的替代方案。此清理和弃用将在后续版本中继续进行。
在即将发布的 Gradle 9.x.y 小版本中,我们将重点关注插件生态系统兼容性、开发工具、提高缓存命中率和更好的性能,目标是在 Gradle 10 中默认启用配置缓存。
阅读更多关于 9.0.0 版本的信息:9.0.0 更新日志,升级指南
配置缓存加密
从 8.1 开始,Gradle 现在加密配置缓存,以降低敏感数据意外暴露的风险。Gradle 将根据需要透明地生成机器专用密钥,将其缓存在 Gradle 用户主目录中,并使用它来加密项目特定缓存中的数据。
全面支持依赖验证
Gradle 通过附加元数据文件提供对依赖验证的支持。Gradle 支持校验和和签名验证作为可选功能。从 Gradle 8.1 开始,配置缓存执行模式全面支持依赖验证。关联文件(密钥环文件或 verification-metadata.xml)的更改会被正确检测到,并在必要时使配置缓存失效。
字符串去重
在 Gradle 8.10 中,我们通过字符串去重和同时加速缓存加载时间,显著减小了缓存文件大小。例如,Android X 团队报告缓存大小减少了 3.75 倍。
配置缓存中的并行加载和存储
在 Gradle 8.11 中,我们通过并行加载和存储缓存条目显著提高了配置缓存性能(参见发布说明)。我们的基准测试显示性能显著提高,并行配置在许多场景中提供了进一步的改进。一位采用者报告,对于一个拥有约 600 个项目的构建,配置时间减少了 50%,从 2 分 4 秒缩短到 55 秒,同时缓存大小从 700 MB 减少到 400 MB。
查看更多:Gradle 8.11 发布说明,文档页面,Inaki Villar 的博客文章
更多性能改进
配置缓存提供了巨大的速度提升,但还有更多重要的变化可以改善整体 Gradle 性能,尤其是在构建项目和进行 IDE 同步时。
Kotlin 构建脚本编译避免
Kotlin DSL 为构建作者提供了更好的 IDE 辅助,但 Kotlin 编译时间比 Groovy 长,这对于大型项目来说可能是一个问题。与 JetBrains 和 Google 团队合作,我们持续致力于使用 Kotlin DSL 构建的性能。通过利用 Kotlin 2 的功能(参见下文),Gradle 9.0.0 通过避免不必要的 Kotlin DSL (.kts) 构建脚本重新编译,加快了编辑构建逻辑时的反馈循环。
在下面的示例中,我们观察到在构建修改后,列出 :help
的速度提升了 2.5 倍。
请参阅下面作为 Kotlin 2 部分一部分的概览视频。
内存使用减少
Gradle 8.1 和 8.3 引入了依赖解析的显著内存使用优化。这使大多数构建受益,但对于 IDE 同步过程,尤其是对于具有许多依赖解析操作的复杂项目,收益更为显著。
通过 Tooling API 优化改进 IDE 性能
从 Gradle 8.8 开始,Tooling API 执行大量任务图的效率得到了优化,导致大型、最新构建的性能提高了多达 12%,其任务图中包含超过 15,000 个任务。更新您的 Gradle 版本将立即使 Android Studio、IntelliJ IDEA、Eclipse 和其他Tooling API 客户端受益。
有关更多详细信息,请参阅更新日志条目。
Kotlin 和 Kotlin DSL
Gradle 的 Kotlin DSL 使用 Kotlin 语言,为 IntelliJ IDEA 和 Android Studio 中的构建编写提供全面的 IDE 辅助。这包括自动补全、智能内容辅助、快速访问文档、导航到源代码以及上下文感知重构。使用 Kotlin DSL,您可以以与处理生产和测试代码时相同的编辑体验来编辑您的构建逻辑。Groovy DSL 仍然完全受支持,并且没有弃用计划。我们不断改进 Kotlin DSL 集成和性能,自 8.0 以来进行了许多更改。
了解更多关于 Gradle 中的 Kotlin DSL。
Kotlin DSL 成为新构建的默认值
2023 年 4 月(Gradle 8.2),Kotlin DSL 成为新 Gradle 项目的推荐选项,并且 gradle init
和我们的用户指南中都反映了这一点。Kotlin DSL 也成为新的 IntelliJ IDEA 和 Android Studio 项目的默认选项。我们预计大多数新项目将来都会使用 Kotlin DSL。
更新到 Kotlin 2
Kotlin 2.0 于 2024 年 5 月 21 日发布,标志着一个重要的里程碑——它带来了众多语言增强,例如显式支持字段、更智能的类型推断、更精确的智能转换(即使在 || 之后、lambda 内部和可空表达式之间),以及与 Compose Multiplatform 等工具的更深入集成。2025 年,Kotlin 2.1.0 和 2.2.0 版本发布,并进行了进一步改进。
Gradle 9 嵌入了最新稳定版本的 Kotlin 2.2.x 运行时,并使用 Kotlin 语言版本 2.2。这标志着与 Gradle 8.x 的转变,后者从 8.11 开始嵌入 Kotlin 2.0,但为了兼容性继续使用 Kotlin 语言版本 1.8。那些使用 Kotlin DSL 进行构建定义和开发基于 Kotlin 的 Gradle 插件的开发人员现在可以访问新的语言功能,并在使用 IDE 和其他开发工具时获得更好的体验。同时,Kotlin 2 引入了许多语法和语义上的破坏性更改,因此在更新到 Gradle 9 时可能需要升级您的构建和插件。
Kotlin DSL 改进
在 Gradle 8.x 中,我们不断改进 Kotlin DSL,以提供更好的开发体验,为新旧功能带来了许多改进。主要亮点包括
- 在 8.6 中使用
=
运算符在 Kotlin DSL 脚本中进行简单属性赋值 - 8.5 中预编译脚本中现在提供版本目录 API
- 新功能的 DSL,尤其是针对变体和属性
- 使用 Dokka 创建的专用 Kotlin DSL 参考,因此布局对于 Kotlin 开发人员来说很熟悉
- 更好地集成 Kotlin 工具以进行错误和警告报告,能够根据脚本编译的警告失败,并强制执行 Kotlin 元数据检查
首次使用更快
从 Gradle 8.5 开始,Gradle API 的 Kotlin 扩展作为 Gradle 分发的一部分提供。因此,Gradle 版本首次编译 .gradle.kts
脚本的速度更快,在性能强大的机器上首次运行可节省约 4 秒。这在临时 CI 代理或 Gradle 插件跨版本测试中尤为明显。
有关更多信息,请参阅更新日志条目。
JSpecify 和 Kotlin 二进制 API 更改
自 Gradle 5.0 以来,我们一直使用 JSR-305 的注解来明确 Gradle API 中类型使用的可空性。从 Gradle 9 开始,Gradle API 改用 JSpecify 进行注解。Kotlin 2.2 与 Gradle API 中的 JSpecify 注解结合使用时,引入了更严格的可空性处理,并可能生成不同的二进制 API。
此更改可能会影响所有使用 Kotlin 实现的插件和构建,但它也大大降低了与可空 API 相关的问题风险。有关更多详细信息和潜在的破坏性更改,请参阅专用的升级指南部分。
Java 版本和 Toolchains
随着 Java 的不断发展,Gradle 也随之发展,并添加了对新版本和新功能的支持,以改善开发人员体验。
Java 17 是运行 Gradle 的最低版本
从本版本开始,Gradle 要求 Java 17 作为运行 Gradle 本身的最低版本。您需要将您的运行时升级到此版本。有关支持的版本和配置的更多信息,请参阅Gradle 兼容性矩阵。
如果您正在使用旧版 Java 构建 Java 项目,您仍然可以使用工具链或通过其他方式分离 Gradle 运行时和构建版本来指定它们。
支持运行和构建 Gradle 项目的新版本 Java
我们逐步增加了对新版本 Java 的支持,包括使用指定工具链构建项目和运行 Gradle 本身。Gradle 8.0 支持最高 Java 19,而新的 Gradle 9.0.0 版本支持最高 Java 24,适用于这两种用例。
有关 Java 支持和建议的实际状态,请参阅兼容性矩阵。
支持 JAVA_HOME 作为工具链位置
从 Gradle 9.0.0 开始,您可以依赖 JAVA_HOME 环境变量的值进行工具链自动检测。Gradle 现在可以发现并使用通过标准环境变量提供的 Java 版本。
工具链中对 GraalVM 的支持
从 8.14 开始,Gradle 的工具链支持允许为构建项目(编译代码、运行测试甚至运行 Gradle 本身)提供和选择特定的 JDK 版本。如果设置了 nativeImageCapable
标志,Gradle 在解析工具链时将仅选择支持原生镜像的 JDK。
了解更多:文档条目
Gradle Daemon 改进
Gradle Daemon 的工具链
自 Gradle 8.8 以来,用户可以通过配置守护进程 JVM 标准来为 Gradle Daemon 指定不同于用于运行 Gradle CLI 的 JVM。Gradle 首先尝试从已安装的版本中找到兼容的 Java 工具链——此过程称为守护进程 JVM 自动检测。随着 8.13 中引入守护进程 JVM 自动配置,当本地找不到匹配的 Java 工具链时,Gradle 还可以下载一个匹配的 Java 工具链。
从 8.10 开始,Daemon JVM criteria 支持指定 JVM 供应商。在考虑可用的 JVM 工具链时,Gradle 将只选择与指定 JVM 供应商和版本都兼容的工具链。有关更多信息,请参阅更新日志条目。
有关更多信息,请参阅用户指南中的Daemon JVM criteria。
通过在构建之间保持编译器守护进程活跃来加速构建
Gradle 8.3 加快了 Linux 和 macOS 上的 Java 编译速度,通过在构建之间保持编译器守护进程活跃。Gradle 的内部性能测试显示,对于主要由编译 Java 源代码主导的构建,构建时间最多可提高 30%。8.4 增加了对 Windows 构建的相同兼容性。
Alpine Linux 上的文件系统监视
文件系统监视现在支持 Alpine Linux,这是容器化镜像的热门选择,也是 Docker 的默认分发版。
从 Groovy 3 更新到 Groovy 4
Gradle 嵌入了最新稳定版本的Groovy 4.0,这是对 Gradle 7 和 8 中使用的 Groovy 3.0 版本的一次重大升级。Gradle 4 引入了一系列新的功能和对 Groovy 语言的改进。有关新内容的全面概述,请参阅Groovy 4.0 发布说明以获取完整详细信息。
在 Gradle 生态系统中,Groovy 用于以下几个方面:Groovy DSL 构建脚本(`.gradle` 文件);可以部分用 Groovy 实现的通用插件和约定插件中的构建逻辑,Ant 集成。
在所有重大升级中,某些行为已发生变化,但我们预计这主要会影响用 Groovy 编写的插件,而不是使用 Groovy DSL 的构建脚本。因此,它可能会影响利用此类插件的构建(例如,Shadow 插件中的问题 #1469,现已解决)。如果您正在升级到 Gradle 9,请检查您使用的插件的新版本以获取已知的兼容性修复。
构建编写
在 Gradle,我们希望提供最佳的用户体验,特别是对于那些构建编写经验较少的软件开发人员。无论您是从 CLI、您最喜欢的 IDE 还是在 CI/CD 系统中使用 Gradle,Gradle 9 都应该改善您的体验。它包括为开发 Gradle 构建的人员提供更好的 DSL 和 API,以及更好的工具来排除构建和同步失败。提供清晰且可操作的错误报告一直是 Gradle 工程团队过去几年的主要主题之一,Gradle 8.x 中提供了许多功能,并且计划在 Gradle 9 中提供。
问题 API
8.x 版本的主要亮点之一是新的问题 API,它已经为许多用例提供了帮助,例如弃用、配置缓存兼容性、编译警告等。观看我们最近版本中交付内容的摘要
问题 HTML 报告
从 Gradle 8.11 开始,除了 CLI 输出和 API 之外,报告的问题还汇总到新的 HTML 报告中。此报告作为用户查看构建中出现的问题的中心位置,无论它们是来自内部还是外部插件。此报告在 Gradle 中默认启用,您可以在控制台输出中找到指向它的链接。
更好的错误报告
Gradle 的错误报告在版本之间有了显著改进。这些更改包括但不限于:当多个故障具有相同原因时抑制重复错误报告,配置缓存未命中时的详细信息,失败插件应用的更好报告以及 JVM 匹配。
所有更改
- 当多个故障具有相同原因时抑制重复错误报告 - 8.8
- 改进 Java 编译任务失败报告 - 8.10
- 配置缓存未命中的详细信息 - 8.9
- 改进插件应用错误报告 - 8.7
- 依赖锁定错误时更清晰的建议操作 - 8.6
- 复制任务错误报告 - 8.7
- 改进 JVM 版本不匹配错误报告 - 8.8
- 改进工具链解析器错误处理 - 8.8
- 修复禁用仓库时的错误报告 - 8.8
- 变体歧义和缺失变体 - 8.9
- 检测并报告歧义工件转换链 - 8.12
支持测试空运行
在测试项目时,检查您选择的哪些测试将在不实际执行它们的情况下运行可能很有用,尤其是在使用测试筛选时。Gradle 8.3 引入了测试空运行模式,可以通过 --test-dry-run 命令行选项或通过 dryRun 属性启用。
此模式与 JUnit 和 TestNG 框架兼容。
跳过测试的更好报告
从 8.14 开始,当由于假设违反而跳过测试时,Gradle 现在在 HTML 和 JUnit XML 报告中包含原因。这适用于 JUnit 4、JUnit Platform 和 TestNG。有关更多信息,请参阅更新日志条目。
构建初始化改进
Gradle Build Init 获得了多项改进,以确保符合新功能和最佳实践。
- 在 8.2 中默认生成 Kotlin DSL 构建
- 在 8.2 中支持 Apache Maven 项目转换为 Gradle(参见迁移指南)
- 在 8.5 中使用版本目录生成构建
- 支持 Java 版本参数 8.5
- 支持跳过交互式问题 8.6
- 在 8.11 中默认启用配置缓存
更多 Build Init 功能可以通过附加插件访问,例如生成声明性 Gradle 构建。
其他改进
还有更多的更改和生活质量改进。Gradle 更新日志包含小版本中的所有更改。一些主要亮点是
- 变体 API 改进,以简化基于所需属性和功能的依赖项获取
- 8.13 中的 TestEventReporting API,使构建作者能够从
Test
任务之外报告测试事件 - 工件转换:报告任务(Gradle 8.13 发布说明)和歧义链检测(Gradle 8.12 发布说明)。此外,工件转换现在在构建扫描中呈现,提高了对构建的理解。
通过 Gradle 加强供应链安全
我们继续投资 Gradle 项目的供应链安全。特别是,对于开发人员来说,重现构建并排查其内容至关重要。跟踪依赖项和检测潜在漏洞也是所有现代构建系统(包括 Gradle)的优先事项。在 Gradle 8.x 和 9.x 之间,我们进行了多项改进以支持这一点。
默认可重现存档
Gradle 现在默认生成可重现的存档,确保 JAR 和 ZIP 以及其他 Java 包的内容逐字节相同。虽然自 3.4 版本以来就提供了时间戳、权限和文件顺序一致性,但现在这些选项默认配置。
此更改是迈向可重现构建的一步,旨在增强对二进制文件确实由特定来源生成的信任。此外,此更改还将帮助 Gradle 之外的工具更好地处理逐字节等效性。
重要的是要注意,这对于某些用户来说可能是一个破坏性更改。Gradle 9 生成的可重现存档具有可重现的文件顺序、固定时间戳和预配置权限。如果您的构建依赖于特定的文件顺序、更改时间戳、文件系统权限或文件可执行位,您可能需要重新配置您的存档任务。
GitHub Actions 和依赖提交操作
作为与 GitHub 供应链安全合作的一部分,我们发布了新的Gradle 依赖提交操作。此操作可以配置为自动将依赖项提交到 GitHub 的依赖图,并接收有关潜在漏洞的直接和传递依赖项的 Dependabot 警报。请在公告博客文章和官方新闻稿中阅读更多内容。我们还发布了一个简短的概览视频此处。
GitHub 团队也持续改进 Dependabot 功能。2025 年 5 月,GitHub 引入了 Gradle 依赖项的依赖项自动提交。截至 6 月,Dependabot 也支持 Gradle 锁文件 - 有关更多信息,请参阅锁定版本。
Gradle Wrapper 改进
Gradle Wrapper 任务现在支持符号名称(8.1)并验证分发 URL 是否存在(8.2)。从 Gradle 9 开始,还可以通过使用部分 SemVer 规范来请求 Gradle 版本,例如要求“9”或“9.1”而不是 3 位版本规范(更新日志条目)。
其他功能
以上列表仅突出显示了 Gradle 9.0.0 版本中的关键更改以及近期小版本中的主要主题。该版本还包括许多小的增强、错误修复和已弃用 API 的移除。一些核心 Gradle 插件,例如静态分析和原生支持插件,也获得了重大改进。
这些变化可能对某些用户很重要。它们可以在Gradle 更新日志或特定插件的文档页面中找到。
Build Scan 和 Develocity 集成
在 Gradle 中,任何用户都可以通过 Gradle, Inc. 提供的免费 Build Scan 服务来分析他们的构建、排查性能和依赖项,并更深入地了解构建过程。此服务使用 Develocity Gradle 插件进行发布,并随着 Develocity 和 Gradle Build Tool 的新版本不断改进。
在 Gradle 8.0 到 9.0.0 版本之间,有许多变化。其中一些是 Gradle 9 特有的,有些也适用于以前的版本
- 基于 AI 的构建和测试失败分组
- 支持构建环境系统资源使用报告,包括 CPU、RAM、网络和磁盘 I/O
- 对工件转换的洞察
- 提供更多关于配置缓存的指标和详细信息,包括报告缓存未命中的原因
- 隔离项目现在支持所有 Build Scan 和 Develocity 功能
- Develocity 特有功能的多次集成,例如更好地报告预测性测试选择和测试并行化节省
- 改进的开发人员 API 和 DSL 语法,用于配置插件。
- 关键 Gradle 指标、CLI 输出和报告的更好报告和可视化
如果您还没有尝试过 Build Scan,请查看 DPE 大学提供的简短Gradle Build Scan 课程,它提供了该工具主要功能的导览。
了解更多:Build Scan 文档,Develocity 发布说明,Develocity Gradle 插件发布历史。
文档更新
Gradle 用户指南是 Gradle 最常访问的资源之一,我们将继续投入,提供清晰、结构良好的文档,涵盖 Gradle 的基本和高级功能。在 Gradle 8.x 和 9.x 之间,用户指南经历了多次重大改进
- Gradle 用户手册经过了重新组织,为关键功能提供了专用页面,并改进了导航体验。添加了包括教程在内的新介绍性材料。
- 站点搜索引擎已替换为 Algolia DocSearch v3 并进行了定制,以提供更相关和可搜索的结果。
- 代码示例和片段已刷新,以符合当前的 Gradle 最佳实践。此外,代码片段可以复制粘贴,并且可以下载完整的工作项目。
- 引入了新的反馈表单,以便用户更轻松地提出改进建议。
- Gradle 发布说明现在包含章节锚点,使引用特定更改变得更容易。
- 发布了一个实验性的Gradle Cookbook——一个开源的食谱、指南以及与其他工具和服务集成示例的集合。
- 发布了新的最佳实践指南,帮助开发人员采用推荐的模式并避免常见的陷阱。本指南尤其有助于解决关于 Gradle 提供多种方式来做同一件事的常见担忧。这项持续的努力是 Gradle、Google 和 JetBrains 之间的合作。请留意未来版本中引入的新项目。
所有文档仍然是开源的,我们邀请您贡献!请参阅文档贡献者指南。
培训材料和课程
2024 年 5 月,Gradle, Inc. 推出了新的免费学习门户DPE 大学。它取代了 gradle.org 上旧的课程和许多旧的Gradle 指南。
新的培训门户包括多个自主学习培训课程,旨在支持所有经验水平的开发人员和构建平台工程师,从初级软件开发人员到利用 Gradle 或 Develocity 的经验丰富的构建工程师。完成某些培训后,您可以获得证书,该证书可以在您的 LinkedIn 个人资料上分享。
Gradle 网站 - 新外观与更新
2025 年 5 月,我们更新了 gradle.org 网站的外观!除了新外观外,您还会发现简化的导航,有助于引导您找到重要资源,包括文档、学习材料和主要功能概述。我们还投资了底层工具,以便快速交付新的更改和更新。
其他与 Gradle 资源相关的更新
- Gradle 新闻稿和博客焕然一新,支持目录和章节锚点,让您可以轻松搜索并与同事分享信息。您还可以通过 RSS 订阅更新!
- 我们启动了一个新的开源Gradle 社区网站,它汇集了贡献者资源,包括贡献者指南和 Google Summer of Code 等活动
- 声明式 Gradle 项目启动了一个新的独立网站
排除/延迟的功能
Provider API 迁移
Provider API 迁移旨在采用惰性配置并使 Kotlin DSL 和 Groovy DSL 的 API 保持一致。2025 年 3 月 28 日,我们决定将 Provider API 迁移排除在 Gradle 9 的范围之外。根据早期反馈,我们确认更好的 IDE 支持对于用户成功进行此迁移至关重要。这种 IDE 支持需要 Gradle 内部的增强以及 IntelliJ IDEA 和 Android Studio 中对这些更改的相应采用。
我们仍然致力于 Provider API 迁移,并正在积极努力完成剩余未迁移的属性。我们的目标是将其包含在计划于 2026 年发布的 Gradle 10 中。
Isolated Projects 的孵化状态
独立项目是 Gradle 的一个预 Alpha 功能,它建立在配置缓存之上,以进一步提高性能,特别是在 Android Studio 和 IntelliJ IDEA 同步期间。尽管一些消息源宣布独立项目将在 Gradle 9.0 中孵化,但实际计划是在后续的 Gradle 9.x 版本中推广该功能。
Gradle 9.0.0 不会包含独立项目相关的特定更改。优先级已赋予配置缓存的产品化,这是独立项目成功的先决条件。一旦此主要版本的工作完成,独立项目的开发将恢复。
升级到 Gradle 9
与任何其他主要版本一样,更新到 Gradle 9 需要谨慎的方法,因为存在多个潜在的破坏性更改。这些更改包括但不限于:提高最低要求的 Java 版本、删除已弃用的 API 和功能、由于升级到 Kotlin 2 和 Groovy 4 导致 Kotlin 和 Groovy DSL 中出现破坏性更改,以及采用 JSpecify 注解后 Kotlin 实现生成的二进制 API 中的更改。所有这些都可能导致您的构建以及其中使用的插件不兼容。
尽管我们预计大多数 Gradle 用户将相对顺利地迁移到 Gradle 9,但您的实际情况可能会因复杂性而异。我们敦促大家仔细审查并遵循升级指南,并在您的组织中全面推广之前测试新版本。