Gradle 3.0 M1: 释放守护进程!
简介
Gradle 3.0 的第一个里程碑版本 刚刚发布,在众多较小的改进中,它包含两个主要功能,我们希望得到您的反馈。
第一个功能是支持使用 Kotlin 编写 Gradle 构建脚本,您可以在上个月的 Kotlin 遇上 Gradle 博客文章中了解所有相关信息。 虽然仍处于开发的早期阶段,但此功能现在已在 Gradle 3.0 M1 中开箱即用,我们很乐意听取您的意见。 有关完整详细信息和入门说明,请参阅Gradle Script Kotlin 0.1.0 发行说明。
第二个功能是Gradle 守护进程现在默认启用。 这是一个重大事件,我想在本帖的剩余部分重点介绍它。
什么是 Gradle 守护进程? #
Gradle 守护进程是一个长期运行的后台进程——一个“预热的 JVM”——Gradle 可以从命令行或 IDE 内部连接到它。 守护进程跟踪有关项目构建的各种信息,并使这些信息立即可用。 结果是,每次运行 gradle build
或 gradle test
或任何其他任务时,Gradle 都不必重新计算所有这些信息。 当然,对您而言的好处是,您的构建时间会快得多。
自 Gradle 0.9 以来,守护进程就已可用,但直到现在,它一直是一个可选功能,这意味着用户必须在命令行中提供 --daemon
选项,或者以其他方式将 Gradle 的 org.gradle.daemon
属性设置为 true
才能利用它。 这种方法非常有效,但前提是您知道它。 虽然许多 Gradle 用户确实了解守护进程,并且每天都在使用它,但我们从与社区的互动中了解到,大多数 Gradle 用户尚未利用守护进程。
因此,如果您到现在还不熟悉守护进程,或者如果您一直在努力让您的同事了解此功能,请不要担心——您并不孤单。 正是出于这些原因,我们将默认启用守护进程作为 Gradle 3.0 的关键部分。
释放守护进程 #
多年来,守护进程已成为一个先进且功能强大的软件。 但是默认启用它并不像“拨动开关”那么简单。 这种变化是深刻的——这意味着从 3.0 开始,除非 Gradle 用户明确选择退出,否则每个 Gradle 用户都将在每次构建时与守护进程交互。 那是大量的构建,并且有了这样的数字,这意味着即使是最微小的错误和最晦涩的角落案例也可能在以前从未出现过的地方浮出水面。 这就是为什么我们在过去几个月投入了大量的工程工作,以确保守护进程能够应对这一新挑战——这也是为什么我们如此渴望获得您对第一个里程碑的反馈。
试用 3.0 M1 及其自动启用的守护进程很容易。 只需使用以下命令 更新您的 Gradle Wrapper,然后像往常一样运行您的构建即可
gradle wrapper --gradle-version 3.0-milestone-1
当然,如果您有任何问题、意见或疑问,请告诉我们!
运行中的守护进程 #
下面的简短 asciicast 演示了将项目的构建从 Gradle 2.13 升级到 3.0 M1,并以并排比较的方式展示了由此带来的性能提升。 正如您将看到的,结果非常显着——项目的 clean build
时间缩短了一半以上
更多性能提升即将到来 #
如果您运行 Gradle 构建,那么您很可能每天运行数十次。 这意味着每一秒都很重要,这就是为什么默认启用守护进程只是我们一直在努力进行的众多与性能相关的努力之一。 事实上,与“守护进程”一词的另一个含义一致,您可能会说我们一直致力于使 Gradle 成为世界上最快、功能最强大的构建系统。 为了实现这一目标,还有很多工作要做,您的反馈将有助于每一步。 为此,我们希望您查看 3.0 M1 发行说明,亲自试用,并告诉我们您的体验。 谢谢!