Gradle 最近发布了其流行的构建工具的 4.2 版本,新增了一些重要特性。其中有项新增特性就是对于原生的编译和链接任务支持并行任务执行。关于这项特性,InfoQ 咨询了Gradle 的首席工程师 Eric Wendelin :
Gradle 的 worker API 提供了一种并行执行任务的机制,借助最大化 CPU 的利用率减少整体的构建时间。默认情况下,Gradle 4.2 会使用 worker API 来执行 C/C++/Swift 的编译和链接任务。换句话说,并行任务执行默认只会用于原生任务,目前还没有用到像 Java 这样的其他任务中,但是我需要说明一点,有些 Gradle 插件已经将该特性用到了自己的生态系统中,实现并行的任务执行。
Wendelin 还补充说,现有的项目如果升级到最新版本的话也会从中受益,因为 Gradle 4.2 提供了更好的性能,尤其是使用远程脚本插件的项目。Gradle 4.2 还提供了更快的构建缓存解压功能,在这样的构建过程中,会使用 zipTree 和 tarTree 进行归档打包。
下图来自 Gradle 的网站,它展现了相对于 v4.1,v4.2 所带来的性能提升。
Gradle 4.2 包含了一些面向插件作者的新 API ,包括嵌套 DSL 元素、将任务输出声明为发布制件(artifact),另外,PropertyState 类型的属性支持使用 Groovy DSL。按照 Wendelin 的说法:
最值得一提的是用来创建嵌套 DSL 元素的新 ObjectFactory API,还有一个新的 DSL 扩展,允许插件作者将给定的文件和目录声明为项目的输出。
4.2 版本的其他特性还包括 Kotlin DSL 的增强、支持 Google Cloud Storage、支持 Play v2.6 的自定义 Twirl 模板以及按需重新构建 PlayRun 任务。
在 Java 7 上运行 Gradle 的支持已经处于废弃状态,在 Gradle 5.0 版本将会彻底移除。
查看英文原文: Gradle 4.2 Is Released
评论