Kotlin DSL 现在是新 Gradle 构建的默认选项

目录

介绍

Gradle 的 Kotlin DSL 在 Gradle 构建工具 3.0 版本中引入(2016年8月),并在 Gradle 5.0 中作为 1.0 版本发布。自那时以来,它越来越受欢迎,并极大地改善了许多 Gradle 构建的编写体验。

Kotlin DSL 现在是新 Gradle 构建的默认选择。这意味着,当使用 Gradle 创建新项目时,包括在 IntelliJ IDEA(从 2023.1 版本开始)和 Android Studio(从 Giraffe 版本开始)中,Kotlin DSL 是默认选项。对于现有项目或喜欢使用 Groovy DSL 的用户,将继续支持 Groovy DSL。

在本文中,我们将探讨 Kotlin DSL 的优势,以及为什么它正成为新 Gradle 构建的推荐选项。我们还将讨论未来计划进行的一些改进,以使 Kotlin DSL 变得更好。

Kotlin DSL by default

关于 Kotlin DSL #

Kotlin 是一种强大的语言,它提供了许多使其非常适合创建 DSL 的特性。它的静态类型系统、简洁而富有表现力的语法以及对函数式编程结构的支持,使其易于创建可读且可组合的 DSL。

Gradle 的 Kotlin DSL 利用 Kotlin 语言的优势,为在 IntelliJ IDEA 和 Android Studio 中进行构建编写提供完整的 IDE 辅助功能。这包括自动完成、智能内容辅助、快速访问文档、导航到源代码以及上下文感知重构。使用 Kotlin DSL,您可以像编辑生产代码和测试代码一样编辑构建逻辑。

Gradle 结合了 Kotlin 语言特性及其自身的功能,提供了一种优雅且可扩展的声明式构建语言,可以清晰易懂地表达任何构建。构建模型中动态添加的元素,例如项目依赖项(当使用 版本目录 时)或多项目构建中的子项目名称,都可以从静态类型和 IDE 辅助功能中受益。Gradle 插件通过贡献在构建脚本中静态可用的扩展和任务来扩展 Kotlin DSL。

Kotlin DSL 作为新构建的默认选项 #

感谢 JetBrains、Google 和 Gradle 之间的协作努力,Kotlin DSL 达到了新的成熟度水平,现在对于开发者来说是一个更加高效和用户友好的工具。

交付了许多可用性改进,包括对版本目录的完全支持,以及在 IntelliJ IDEA 和 Android Studio 中更快的代码分析和自动完成。此外,还有一个全新的 DSL 参考文档

从 Gradle 8.2 开始,使用 gradle init 创建新构建时,默认使用 Kotlin DSL 生成 Gradle 构建。在 IntelliJ IDEA 2023.1 中,创建新的 Java 应用程序默认使用 Kotlin DSL。在 Android Studio Giraffe 中,所有向导和模板都默认使用 Kotlin DSL。

阅读 Gradle 文档时,您会注意到用户手册和示例首先显示 Kotlin DSL。此外,Kotlin Gradle 插件以及其他 Kotlin 和 JetBrains 插件的文档现在 100% 是 Kotlin。Android 文档,包括 Android Gradle 插件和其他 Google 插件、配方、示例应用程序和指南,现在都使用 Kotlin DSL。

正如您所见,此更改跨越了多个工具的多个版本发布。请参阅 JetBrains 博客Google 博客 的相关公告。

当前的限制和下一步 #

这个里程碑使 Kotlin DSL 成为新项目的默认和推荐选择。我们也认为 Kotlin DSL 对于大多数现有项目来说是更好的选择。但是,对于当前使用 Groovy DSL 且构建逻辑非常复杂的大型项目,建议等待迁移。特别是,当使用 Kotlin DSL 更改共享构建逻辑时,脚本编译性能目前比 Groovy DSL 慢。请注意,Kotlin 脚本编译输出可以在远程缓存中共享,因此此警告仅适用于在使用 构建缓存 时实际更改共享构建逻辑的人员。虽然脚本编译性能开销对于新项目来说并不明显,但对于具有大量现有构建逻辑的项目来说可能会有问题。

Gradle、JetBrains 和 Google 之间正在持续合作,努力提高 Kotlin DSL 脚本编译性能。我们的下一个目标是使 Kotlin DSL 也成为大型构建的推荐选择。

您应该期待在即将发布的 Gradle 和 IDE 版本中看到更多可用性改进。例如,您很快就可以使用 = 运算符来分配 Gradle 的 延迟属性,并从 Gradle 域对象容器的简化 DSL 中受益。

了解更多 #

如果您想了解更多关于 Gradle 的 Kotlin DSL,请查看 Gradle Kotlin DSL 入门 和更新后的 Kotlin DSL 参考文档。如果您正在将现有项目从 Groovy DSL 迁移到 Kotlin DSL,请务必阅读 迁移指南

加入 社区聊天#kotlin-dsl 频道)和 论坛,提出问题、分享经验并为 Kotlin DSL 的开发做出贡献。您的反馈和贡献对于塑造 Gradle 构建工具的未来至关重要,我们对此高度重视。

讨论