Kotlin DSL 现在是新 Gradle 构建的默认选项
引言
Gradle 的 Kotlin DSL 在 2016 年 8 月的 Gradle 构建工具 3.0 版本中引入,并在 Gradle 5.0 中发布了 1.0 版本。从那时起,它越来越受欢迎,极大地改善了许多 Gradle 构建的编写体验。
Kotlin DSL 现在是新 Gradle 构建的默认选择。这意味着,当使用 Gradle 创建新项目时(包括在 IntelliJ IDEA(2023.1 及更高版本)和 Android Studio(Giraffe 及更高版本)中),Kotlin DSL 是默认选项。对于现有项目或偏好使用 Groovy DSL 的用户,仍将继续提供支持。
在本篇文章中,我们将探讨 Kotlin DSL 的优势,以及它为何成为新 Gradle 构建的推荐选项。我们还将讨论为进一步改进 Kotlin DSL 而计划中的一些改进。
关于 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 构建工具的未来至关重要,我们对此非常重视。