Gradle 8.0 提供了改进的 Kotlin DSL 和构建时间

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 现在在使用 finalizedBymustRunAftershouldRunAfter 方法时显示错误而不是警告。无效的 Java 工具链配置和未提供仓库的自动下载现在会显示错误,可以通过用户手册解决。

测试框架配置

在指定测试选项后配置测试框架现在会产生错误,可以通过使用 JVM Test Suite 插件或在指定测试选项之前配置测试框架来解决。

移除的 API 和特性

Gradle 8 移除了多个 API、方法和特性,完整的变化列表可以在 Gradle 8.0 发布说明中找到。

阅读 52
0 条评论