Gradle 3.0 M1:释放守护进程!

Gradle 3.0 的第一个里程碑版本已发布,除了许多较小的改进之外,它还包含两个主要功能,我们希望得到您的反馈。

第一个特性是**支持用 Kotlin 编写 Gradle 构建脚本**,你可以在上个月的Kotlin 与 Gradle 博客文章中阅读所有相关内容。虽然这项功能仍处于开发初期,但现在 Gradle 3.0 M1 已默认提供。我们很乐意听取你的意见。请参阅Gradle 脚本 Kotlin 0.1.0 版本说明,了解完整细节和入门指南。

第二个特性是**Gradle Daemon 现在默认启用。**这是一个重大变化,我将在本文的剩余部分重点介绍它。

什么是 Gradle Daemon?

Gradle Daemon 是一个长期运行的后台进程——一个“预热 JVM”——Gradle 可以从命令行或 IDE 中连接到它。守护进程跟踪有关项目构建的各种信息,并立即提供这些信息。结果是,Gradle 不必每次运行 gradle buildgradle test 或任何其他任务时都重新计算所有这些信息。当然,对你来说,好处是你的构建时间会快很多

守护进程一直可用 从 Gradle 0.9 开始,但直到现在它一直是一个可选功能,这意味着用户必须在命令行中提供 --daemon 选项,或者以其他方式将 Gradle 的 org.gradle.daemon 属性设置为 true 才能利用它。这种方法运行良好,但只有在你了解它的时候才有效。虽然许多 Gradle 用户确实了解守护进程,并且每天都在使用它,但我们从与社区的互动中了解到,大多数 Gradle 用户尚未利用守护进程。

因此,如果你以前不熟悉守护进程,或者你难以让同事了解此功能,请不要担心——你不是一个人。正是出于这些原因,我们将默认启用守护进程作为 Gradle 3.0 的关键部分。

释放守护进程

多年来,守护进程已成为一个先进且功能强大的软件。但默认启用它并不像“翻转开关”那样简单。这种变化意义重大——这意味着从 3.0 开始,每个 Gradle 用户都会在每次构建时与守护进程交互,除非他们明确选择退出。这是一个非常多的构建,而且随着数量的增加,这意味着即使是最小的错误和最不常见的角落案例也可能在以前没有出现的地方出现。这就是为什么我们在过去几个月投入了大量的工程力量来确保守护进程能够应对这一新的挑战——也是为什么我们如此渴望获得你对第一个里程碑的反馈。

尝试 3.0 M1 及其自动启用的守护进程非常容易。 只需 更新您的 Gradle 包装器,使用以下命令,然后像往常一样运行您的构建

gradle wrapper --gradle-version 3.0-milestone-1

当然,如果您有任何问题、评论或疑问,请 告诉我们

守护进程在行动

下面的简短 asciicast 演示了将项目的构建从 Gradle 2.13 升级到 3.0 M1,并展示了在前后比较中产生的性能提升。正如您将看到的,结果非常显著——项目的 clean build 时间减少了一半以上

还有更多性能提升

如果您运行 Gradle 构建,您很有可能每天运行数十次。这意味着每一秒都很重要,这就是为什么默认情况下启用守护进程只是我们一直在进行的许多与性能相关的努力之一。事实上,与“守护进程”一词的另一个含义一致,您可能会说我们一直在努力使 Gradle 成为世界上最快、功能最强大的构建系统。要实现这一目标,还有很多工作要做,您的反馈将帮助我们每一步。为此,我们希望您查看 3.0 M1 的 发行说明亲自试用,并 告诉我们结果。谢谢!

讨论