Gradle 3.0 M1: 释放守护进程!

目录

引言

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

第一个功能是支持使用 Kotlin 编写 Gradle 构建脚本,您可以在上个月的Kotlin meets Gradle博客文章中阅读所有相关内容。虽然仍处于开发的早期阶段,但此功能现在已在 Gradle 3.0 M1 中开箱即用,我们很乐意听取您的意见。有关完整详细信息和入门说明,请参阅 Gradle Script Kotlin 0.1.0 发布说明

第二个功能是Gradle 守护进程现在默认启用。这是一个大事件,我将在本文的其余部分重点讨论它。

什么是 Gradle 守护进程?#

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

守护进程自Gradle 0.9以来就已可用,但到目前为止,它一直是一个选择加入的功能,这意味着用户必须在命令行提供--daemon选项,或者将 Gradle 的org.gradle.daemon属性设置为true才能利用它。这种方法完美地工作,但仅当您知道它时才有效。虽然许多 Gradle 用户确实知道守护进程并每天使用它,但我们通过与社区互动得知,大多数 Gradle 用户尚未利用守护进程。

因此,如果您到现在还不熟悉守护进程,或者您一直在努力让您的同事了解此功能,请不要担心——您并不孤单。正是由于这些原因,我们将默认启用守护进程作为 Gradle 3.0 的关键部分。

释放守护进程#

多年来,守护进程已成为一个先进且功能强大的软件。但默认启用它并非仅仅“翻转开关”那么简单。这一变化意义深远——这意味着从 3.0 开始,除非明确选择退出,否则每个 Gradle 用户在每次构建时都将与守护进程交互。这真是海量的构建,有了这样的数量,这意味着即使是最小的 bug 和最模糊的边缘情况也可能在以前没有出现过的地方浮出水面。这就是为什么我们在过去几个月里投入了大量的工程精力来确保守护进程能够应对这一新挑战——这也是为什么我们如此渴望获得您对这个第一个里程碑的反馈。

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

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

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

运行中的守护进程#

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

还有更多性能提升即将到来#

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

讨论