学习 Gradle 增量构建的基础知识。
步骤 1. 理解增量构建
重要的是要了解 Gradle 以多种方式优化您的构建。其中一种优化称为增量构建。
增量构建是一种避免运行自上次构建以来输入未更改的任务的构建,从而使此类任务的执行变得不必要。
为了使增量构建起作用,任务必须定义其输入和输出。在构建时,Gradle 将确定输入或输出是否已更改。如果已更改,Gradle 将执行任务。否则,它将跳过执行。
步骤 2. 更新 Gradle 属性
为了更好地观察增量构建的实际效果,我们将控制台输出切换为详细模式。
在您的应用程序(tutorial
)的顶层文件夹中,创建一个 gradle.properties
文件
$ touch gradle.properties
添加 org.gradle.console=verbose
,使文件内容如下所示
gradle.properties
org.gradle.console=verbose
步骤 3. 分析增量构建
使用 ./gradlew :app:clean :app:build
命令运行 clean 任务,然后运行 build 任务
$ ./gradlew :app:clean :app:build
> Task :app:clean
> Task :app:compileJava
> Task :app:processResources NO-SOURCE
> Task :app:classes
> Task :app:jar
> Task :app:startScripts
> Task :app:distTar
> Task :app:distZip
> Task :app:assemble
> Task :app:compileTestJava
> Task :app:processTestResources NO-SOURCE
> Task :app:testClasses
> Task :app:test
> Task :app:check
> Task :app:build
BUILD SUCCESSFUL in 1s
8 actionable tasks: 8 executed
不出所料,Gradle 调用了构建应用程序所需的所有任务。这已成功完成。
再次运行构建以查看增量构建优化的实际效果
$ ./gradlew :app:build
> Task :app:compileJava UP-TO-DATE
> Task :app:processResources NO-SOURCE
> Task :app:classes UP-TO-DATE
> Task :app:jar UP-TO-DATE
> Task :app:startScripts UP-TO-DATE
> Task :app:distTar UP-TO-DATE
> Task :app:distZip UP-TO-DATE
> Task :app:assemble UP-TO-DATE
> Task :app:compileTestJava UP-TO-DATE
> Task :app:processTestResources NO-SOURCE
> Task :app:testClasses UP-TO-DATE
> Task :app:test UP-TO-DATE
> Task :app:check UP-TO-DATE
> Task :app:build UP-TO-DATE
BUILD SUCCESSFUL in 409ms
7 actionable tasks: 7 up-to-date
大多数任务现在都有 UP-TO-DATE
标签。这是 Gradle 告诉我们输入和输出没有改变,因此某些任务没有重新运行的方式。
步骤 4. 理解结果标签
当开启详细模式时,开发人员可以使用四种标签来查看任务结果
结果标签 | 描述 |
---|---|
UP-TO-DATE |
已执行且未更改的任务(增量构建功能) |
SKIPPED |
任务被明确阻止运行 |
FROM-CACHE |
任务输出已从构建缓存中以前的构建复制到本地目录(缓存功能) |
NO-SOURCE |
任务未执行,因为其所需的输入不可用 |
如果没有标签,则该任务由 Gradle(本地)新执行。
我们将在下一节中查看 FROM-CACHE
标签。
下一步: 启用构建缓存 >>