专栏名称: 狗厂
目录
相关文章推荐
51好读  ›  专栏  ›  狗厂

在Kotlin中使用Gradle构建缓存

狗厂  · 掘金  ·  · 2018-03-12 03:31

正文

Kotlin 1.2.21允许Kotlin项目使用构建缓存。通过Gradle的构建缓存功能,可以提升Kotlin代码的编译速度,加快开发周期。本文将结合实际例子,介绍利用Gradle加速Kotlin代码编译的原理、配置示例以及在IDE中的使用方法。

构建缓存 允许Gradle可以复用 任何之前调用(包括那些来自其它机器的调用) 的任务产出。 Kotlin 1.2.21 允许Kotlin项目使用构建缓存。

构建缓存的工作原理是在缓存中存储编译过的类、测试结果和其它构建工序,同时记录所有的任务输入,包括输入文件内容、相关的类路径和任务配置。

这常常导致 更快的构建 。下面的图标展示了在Gradle的持续集成中使用构建缓存和不使用构建缓存所收集到的构建时间:

本文中,我们将向你阐述,如何使用Gradle的构建缓存来避免不必要的Kotlin编译,从而加快你的构建过程。

Spek快速示例

你现在就可以尝试使用Gradle的构建缓存。只需要遵循下面几个步骤:

Clone Spek

__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__git clone https://github.com/spekframework/spek.git
cd spek__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__

Spek 2.x 分支(其默认分支)已经有我们后续要介绍的 构建缓存的所有先决条件

构建和填充缓存

下面的命令会构建Spek并填充本地构建缓存。

__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__❯ ./gradlew assemble --build-cache

BUILD SUCCESSFUL in 10s
21 actionable tasks: 21 executed__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__

使用 --build-cache 标识,可以让Gradle在一个独立的任务结果缓存中存储任务结果。

删除/更改构建结果

这模拟了在另一台机器上的情况或者做了一次改变并 stash (存储)这次改变的情况。演示的最快方法是使用 clean 任务。

__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__❯ ./gradlew clean

__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__

从构建缓存中重新构建

当我们重新构建时,从构建缓存中拉取所有编译过的Kotlin源码。

__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__❯ ./gradlew assemble --build-cache

BUILD SUCCESSFUL in 2s
21 actionable tasks: 11 executed, 10 from cache

__Mon Mar 12 2018 11:31:50 GMT+0800 (CST)____Mon Mar 12 2018 11:31:50 GMT+0800 (CST)__

就是这样!通过使用Gradle的构建缓存,你重用了编译过的Kotlin类,而不是又重新编译!构建速度差不多 快了5倍

你可以从 这次构建观测 中看到,Kotlin编译任务从构建缓存中拉取缓存结果;而 :jar :processResources 任务没有从缓存中拉取,因为它们本地生成JAR包和复制文件的速度比从缓存中拉取缓存结果的速度更快。另外Gradle构建缓存也支持缓存 :test 任务。

当持续集成的一个实例填充了一个 共享的构建缓存 (开发者可以从中拉取)时,Gradle构建缓存会特别有效。下文罗列了实现这点的 更多资源的链接







请到「今天看啥」查看全文