2023 年农历新年回顾

目录

介绍

大家好!谨代表 Gradle 社区,祝大家农历新年快乐!2023 年对于 Gradle 构建工具来说是伟大的一年,发布了许多新功能和倡议。让我们回顾一下主要更新

  • Gradle 8 基线以及 7 个功能丰富的版本发布
  • Kotlin DSL 成为 Gradle 的新默认选项
  • 配置缓存、构建速度和可扩展性改进
  • 我们的首次 Google 编程之夏和 Major League Hacking 参与
  • Gradle Enterprise 更名为 Develocity,以及 Gradle Build Scan 的增强
  • 下一步,声明式 Gradle 以及迈向 Gradle 9 的道路

2023 Lunar Year in Gradle

Gradle 8 #

2023 年 2 月,Gradle 团队宣布了 Gradle 8.0 - 一个将 Kotlin DSL 升级到 v1.8 并大大提高了其编译速度的新版本。Gradle 8.0 扩展了与 Java 工具(如 CodeNarc、PMD 和 Foojay Disco API)的集成,用于工具链管理。这个主要版本有超过 40 位来自 Gradle 社区的代码贡献者。感谢大家!

Gradle 8.0 release

请参阅 这篇博文,了解引入功能的完整列表和迁移指南。在 8.0 版本发布之后,我们又发布了 6 个主要版本,其中包含更多功能。除了下面列出的主要更新之外,您还可以在变更日志和我们的 新闻邮件 中找到更多信息。

Kotlin DSL 成为新的默认选项 #

2023 年 4 月,Kotlin DSL 成为 新 Gradle 项目的默认推荐选项。Gradle 的 Kotlin DSL 使用 Kotlin 语言,为 IntelliJ IDEA 和 Android Studio 中的构建编写启用完整的 IDE 辅助功能。这包括自动完成、智能内容辅助、快速访问文档、导航到源代码以及上下文感知的重构。借助 Kotlin DSL,您可以使用与处理生产和测试代码时相同的编辑体验来编辑构建逻辑。Groovy DSL 仍然完全受支持,并且没有弃用计划。了解更多关于 Gradle 中的 Kotlin DSL。

Kotlin DSL is Now the Default for New Gradle Builds

由于围绕 Gradle 中的 Kotlin DSL 的努力以及 2023 年的大规模采用,Gradle 加入了 Kotlin 基金会,成为白银会员。请参阅完整的新闻稿 此处。我们现在参与了基金会运营的许多技术和外展活动。

New members of the Kotlin Foundation in 2023

配置缓存 #

在 Gradle 8.1(2023 年 4 月)中,我们还宣布正式发布 Gradle 配置缓存。此功能通过缓存配置阶段的结果并在后续构建中重用它,显着提高了构建性能。使用配置缓存,当没有影响构建配置的任何内容(例如构建脚本)发生更改时,Gradle 可以完全跳过配置阶段。请参阅 Mikhail Lopatkin 的这篇 博文,以了解有关配置缓存工作原理的更多信息。

Gradle Configuration Cache in Action

Gradle 构建速度和可扩展性 #

除了配置缓存之外,Gradle 构建工具还收到了许多更新,以提高大规模开发人员的速度,尤其是在年初的 8.2 和 8.3 版本中。我们添加了对 持久编译器守护进程 的支持,以减少初始化时间。我们能够大幅减少内存消耗,同时缩短构建时间

示例 Android Studio 项目的内存消耗减少

Memory consumption reductions on a sample Android Studio project

不同 Gradle 版本和 Bazel 的构建时间

Build times in different Gradle versions and Bazel

要了解有关性能改进的更多信息,请参阅这篇 博文

文档更新 #

您可能已经注意到,Gradle 用户手册 今年进行了重大更新,包括但不限于内容刷新、新示例和导航体验。其中包含许多新页面,包括适用于技术和 IDE 的新解决方案页面。快来看看!

Gradle User Manual - new documentation page

在最近的 Gradle 8.6 版本中,我们还为 Gradle 文档引入了深色主题,并且计划继续改进文档引擎并简化对文档的反馈和贡献。我们在 Gradle 社区 Slack 上有一个 #docs 频道,我们欢迎任何人在此处讨论内容和文档体验。

我们的首次 Google 编程之夏活动 #

在 2023 年夏天,Kotlin 基金会赞助了 2023 年 Google 编程之夏的四个项目。其中之一是由 Nikolai Vladimirov 负责的 Gradle Kotlin 脚本对 Eclipse 和 BuildShip 的支持项目!Gradle,Kotlin 基金会成员,以及 Donát Csikós 为该项目提供了指导支持。

该项目的最初目标是改善用户与 Eclipse IDE 中 Gradle Kotlin 脚本的交互。该项目旨在实现几个关键功能,包括 Kotlin 脚本的语法突出显示、内容辅助、跳转到定义、语法错误的准确诊断、签名帮助和悬停。Nikolai 通过基于现有的 kotlin-language-server 项目实现对 Kotlin 脚本的支持,创建了一个新的系统来分隔每个构建脚本的编译环境,成功交付了这些功能。阅读更多关于 Nikolai 和团队的这个项目。

Syntax highlighting for .kts scripts in Eclipse IDE

2023 年,我们还赞助了两名 Major League Hacking 实习生,他们在 Gradle 构建工具中改进了文档并进行了各种改进,包括改进了项目的错误处理。请参阅 博文 了解详细信息。

敬请期待 2024 年 Google 编程之夏!我们已向 Kotlin 基金会和 Eclipse 基金会提交了一些项目想法。

Gradle Enterprise 更名,欢迎 Develocity #

对于 Develocity(以前称为 Gradle Enterprise),这也是收获满满的一年。首先,Gradle Enterprise 更名为 Develocity,解决了许多社区成员报告的命名混乱问题。请参阅 这篇博文,了解 Develocity 和 Gradle Build Scan 更新的完整列表。

Develocity 2023 update

Gradle 构建扫描 #

Gradle 构建扫描 也进行了许多增强,现在为 Gradle 提供了更多见解。使用新版本,您可以

Gradle Build Scan

今年的测试改进也很棒!特别是,我们为构建扫描添加了 不稳定性测试检测细粒度测试分发可观察性。这些功能依赖于构建历史记录,因此需要功能完善的 Develocity 实例。

进入声明式 Gradle #

今年,我们还宣布了 声明式 Gradle 项目。目标是交付一种优雅且可扩展的声明式构建语言,使开发人员能够清晰易懂地描述任何软件。Gradle 团队正在推动这个项目,并与 Google 和 JetBrains 密切合作,后者也在运行一个名为 Amper 的实验性项目。请参阅 Piotr Jagielski 的 这篇博文,以了解有关该项目及其目标的更多信息。

以下是在 Kotlin DSL 中声明式 Gradle 顶层定义的示例

// Clear type of software the project produces
javaLibrary {
    // GroupID/ArtifactID/Version for publishing
    publishedAs("my-group:my-lib:2.0")

    // Common dependencies for all targets
    dependencies {
        api("some:lib:1.2")
        implementation(projects.someLib)
    }

    // A library might have more than one target
    targets {
        // All information about specific targets is grouped here
        java(11) { // Specific information about Java 11 target
            dependencies {
                implementation("some:back-port-lib:1.5")
            }
        }
        java(21) // No additional info for the Java 21 target
    }

    tests {
        unit {
            // Dependencies for the unit tests
            dependencies {
                implementation("some:other-lib:1.4")
            }
        }
    }
}

您可以在 gradle/declarative-prototypes 存储库中找到一些原型和实验性工作。工作正在进行中,欢迎任何反馈!请参阅 README 文件以获取讨论和反馈链接。

下一步是什么? #

在接下来的几个月中,我们的主要重点仍然是改善 Gradle 用户的开发人员体验,特别是声明式 Gradle,并改进错误报告,这将有助于简化 Gradle 8.x 中引入的更严格的任务依赖项管理的缓解。我们还计划提供 更好的项目隔离,扩展配置缓存并提高性能,特别是对于 Android Studio 和 IntelliJ IDEA 项目的同步。

2 月 6 日,Gradle 的首席软件工程师兼支持团队负责人 Louis Jacomet 在 Jfokus 上谈到了 Gradle 9 的发展道路以及我们对可扩展性和可理解性的关注。Louis 强调了以下几点

  • 持续投资于配置缓存
  • 即将推出的隔离项目功能
  • 更高层次的软件项目建模
  • 构建用户和作者的关注点分离

其中许多项目已在 Gradle Build Tool 公共路线图 上,您可以在那里找到信息和链接。我们将在后续的新闻邮件中持续发布有关 Gradle 9 演进的更新。

您可以在 此处 找到 Louis 的幻灯片。视频录像稍后将在 Jfokus 页面 和 YouTube 频道上发布。我们还计划尽快在 Gradle 博客上发布文本版本。敬请关注!

The Road to Gradle 9

我如何参与? #

如果您想分享反馈或加入这些倡议中的任何一个,请加入我们的 社区 Slack 频道!我们的 GitHub 问题和社区论坛也 24/7 开放。

查看 Gradle Build Tool 公共路线图,了解有关即将发布的下一个版本的更多信息!

祝大家 Gradlest 新年快乐!

讨论