Gradle 8.0 发布总结
Gradle 团队发布了 Gradle 8.0 版本,该版本带来了构建时间的减少以及对 Kotlin DSL 的改进,支持 Kotlin 1.8 和 Java 11 特性。
Kotlin DSL 改进
Kotlin DSL 自 2018 年引入,作为 Groovy DSL 的替代方案,提供了更好的内容辅助、重构和文档支持,适用于 IntelliJ、Eclipse、Apache NetBeans 和 Visual Studio Code 等 IDE。最新版本允许 .gradle.kts 脚本使用 Java 11 特性,而不是 Java 8。
解释器优化
在 .gradle.kts 脚本中,plugins {} 块现在使用解释器,减少了约 20% 的编译时间。然而,插件版本目录别名(如 alias(libs.plugins.mavenPublish))和类型安全插件声明(如 `my-plugin` )尚不支持。
Kotlin 和 Java 支持
Gradle 8 嵌入了 Kotlin 1.8.10,并支持 Kotlin API 级别 1.8。Gradle 8 支持 Kotlin Gradle Plugin 1.6.10 及更高版本,但可以通过更改 Kotlin compile 任务中的语言版本和 API 版本来使用较低版本。Gradle 8 支持 Android Gradle Plugin 8 及更高版本,或 7.3 及更高版本(需指定属性 android.experimental.legacyTransform.forceNonIncremental=true)。
目录层次结构改进
Gradle 现在使用包含构建的目录层次结构来防止冲突。例如,以前可以使用 gradle :levelTwoDirectory:compileJava 编译 levelTwoDirectory,现在应使用 gradle :levelOneDirectory:levelTwoDirectory:compileJava。
buildSrc 任务改进
buildSrc 构建的任务现在可以直接在命令行中运行,例如 gradle buildSrc:build。新版本允许 buildSrc 通过定义 pluginManagement {includeBuild(anotherBuildDirectory)} 或 includeBuild(anotherBuildDirectory) 来包含其他构建。buildSrc 的测试不再自动执行,因为 build 任务不再运行。
配置缓存
配置缓存是一个孵化功能,通过缓存配置阶段的结果来减少构建时间。Gradle 建议先从简单任务开始缓存,如果成功,再尝试更高级的任务。默认情况下,缓存是禁用的,但可以通过 gradle --configuration-cache 命令或在 gradle.properties 文件中添加 org.gradle.unsafe.configuration-cache=true 属性来启用。此版本在启用配置缓存时自动并行运行任务。缓存保留期现在可以配置,以便在指定天数后清理 Gradle 用户主目录中的缓存。
Java 版本支持
JavaVersion 的字符串格式不再包含 Java 9 及更高版本的 1. 前缀。Gradle 8.0 支持 Java 版本 1.8、9、10 和 11,而不是 Gradle 7.6 的 1.8、1.9、1.10 和 11。
安装和升级
Gradle 8.0.1 是第一个补丁版本,Gradle 团队建议使用最新的次要版本。可以通过 SDMAN!、Homebrew 或 ZIP 文件安装最新版本。在升级之前,建议运行 gradle help --scan 命令并查看报告中的弃用部分。更新插件后,可以使用 gradle wrapper --gradle-version 8.0.1 命令将应用程序升级到 Gradle 8.0.1。
错误和警告
Gradle 现在在使用 finalizedBy、mustRunAfter 或 shouldRunAfter 方法时显示错误而不是警告。无效的 Java 工具链配置和未提供仓库的自动下载现在会显示错误,可以通过用户手册解决。
测试框架配置
在指定测试选项后配置测试框架现在会产生错误,可以通过使用 JVM Test Suite 插件或在指定测试选项之前配置测试框架来解决。
移除的 API 和特性
Gradle 8 移除了多个 API、方法和特性,完整的变化列表可以在 Gradle 8.0 发布说明中找到。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。