學習 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
標籤。
下一步: 啟用建置快取 >>