了解 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
指令執行清除工作,然後執行建置工作
$ ./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
標籤。
下一步: 啟用建置快取 >>