了解 Gradle 增量建置的基礎知識。

在本節中,您將

  • 使用 Gradle 屬性

  • 了解增量建置

  • 探索任務結果標籤

步驟 0. 開始之前

  1. 您在 第 1 部分 中初始化了 Java 應用程式。

  2. 您在 第 2 部分 中執行多項任務。

  3. 您在 第 3 部分 中了解了相依性管理。

  4. 您在 第 4 部分 中將外掛套用到應用程式。

步驟 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 標籤。

下一步: 啟用建置快取 >>