Gradle 3.0 M2:初步支持 Java 9 及性能改进
引言
Gradle 3.0 的第二个里程碑版本 刚刚发布,此版本带来了对 Java 9 的初步支持!
这意味着 Gradle 现在可以在最新的 Java 9 EAP 构建上正常运行,并且您还可以使用 JDK 9 的早期版本来构建和运行测试。然而,重要的是要理解,虽然您可以使用 JDK 9 编译和测试应用程序,但我们 **尚未** 支持模块,以及任何 JDK 9 特定的编译选项(例如 -release
或 -modulepath
)。不过,我们非常乐意收到您在使用自己项目时的反馈。
更多性能改进 #
这个里程碑版本也是一个很好的机会来查看我们最新、最棒的性能改进。在真实构建上进行测量总是更好的,因此下面的示例以 Golo 编程语言 作为测试对象,并比较了该项目的干净构建的执行时间。左侧是使用 Gradle 2.12,而右侧是使用带有“热”守护进程的 Gradle 3.0 M2。
正如您所见,默认 启用守护进程 可以显著加快构建速度,尽管自 Gradle 2.12 以来我们所做的性能改进不仅仅是使用守护进程。对于在先前版本 Gradle 中已启用守护进程的用户,您也应该会看到更好的性能,如下面的屏幕录像所示。
自 Gradle 2.12 以来,我们已 取得了显著进展,这些进展可概括为几点:
- 配置时间现在更快,这意味着从调用 Gradle 任务到任务实际执行之间的时间大大缩短。这在大规模多模块构建上尤其明显。
- 守护进程执行已优化,这意味着在 Gradle 3.0 中默认启用守护进程,您将立即受益于更快的构建速度。
- 构建脚本缓存已重构,不仅使后续构建配置更快,而且并发运行的构建也不会再出现挂起。这对于在 CI 服务器上运行的非隔离构建尤为重要。
为说明这些改进,我们尝试在 Apereo CAS 项目 上使用守护进程执行 gradle help
。该项目包含一个大型多项目构建,通常会从这些改进中大大受益。同样,左侧使用的是 Gradle 2.12,而右侧使用的是 3.0 M2。
最后但同样重要的是,我们还关注了 Gradle 仍然比 Maven 慢的罕见情况并进行了修复。以下屏幕录像展示了 Gradle 3.0 与 Maven 相比的预期效果。该项目包含一个包含 25 个子项目、每个子项目约 200 个文件和单元测试的构建。然后,我们要求 Gradle 和 Maven 在不运行测试的情况下进行组装。
最终,Gradle 和 Maven 之间最大的区别之一是 Gradle 了解任务的所有输入/输出。因此,它足够智能,可以知道何时需要执行某项操作。所以当我们再次执行相同的任务时,如果没有任何变化,它将不会重新执行它们。
查看我们的性能指南 #
拥有高性能的构建是构建幸福感的关键!因此,我们大力关注 Gradle 本身的性能改进。然而,用户也可以做许多事情来加快他们的构建速度。为此,我们目前正在撰写一份 性能指南,并邀请大家参考。目前它还处于草稿阶段,但已包含许多关于如何使您的 Gradle 构建更加快捷有用的提示。请务必阅读,我们很乐意通过该指南的 GitHub Issues 听到您的反馈。