Gradle 使用兩個主要功能來縮短建置時間:增量建置建置快取

gradle basic 8

增量建置

增量建置是一種建置,可避免執行自上次建置以來輸入未變更的任務。如果這些任務只會重新產生相同的輸出,則重新執行這些任務是不必要的。

要讓增量建置運作,任務必須定義其輸入和輸出。Gradle 將在建置時判斷輸入或輸出是否已變更。如果已變更,Gradle 將執行任務。否則,它將略過執行。

增量建置始終處於啟用狀態,而查看它們運作的最佳方式是開啟詳細模式。在詳細模式下,每個任務狀態會在建置期間標示

$ ./gradlew compileJava --console=verbose

> Task :buildSrc:generateExternalPluginSpecBuilders UP-TO-DATE
> Task :buildSrc:extractPrecompiledScriptPluginPlugins UP-TO-DATE
> Task :buildSrc:compilePluginsBlocks UP-TO-DATE
> Task :buildSrc:generatePrecompiledScriptPluginAccessors UP-TO-DATE
> Task :buildSrc:generateScriptPluginAdapters UP-TO-DATE
> Task :buildSrc:compileKotlin UP-TO-DATE
> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors UP-TO-DATE
> Task :buildSrc:processResources UP-TO-DATE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:jar UP-TO-DATE
> Task :list:compileJava UP-TO-DATE
> Task :utilities:compileJava UP-TO-DATE
> Task :app:compileJava UP-TO-DATE

BUILD SUCCESSFUL in 374ms
12 actionable tasks: 12 up-to-date

當您執行先前已執行且未變更的任務時,任務旁邊會印出UP-TO-DATE

若要永久啟用詳細模式,請將org.gradle.console=verbose新增至您的gradle.properties檔案。

建置快取

增量建置是一項很棒的最佳化,有助於避免已完成的工作。如果開發人員持續變更單一檔案,則可能不需要重新建置專案中的所有其他檔案。

不過,當同一位開發人員切換至上週建立的新分支時,會發生什麼事?檔案會重新建置,即使開發人員正在建置先前已建置過的內容。

這時建置快取就很有幫助了。

建置快取會儲存先前的建置結果,並在需要時還原。它可以防止重複執行耗時且昂貴的程序,並節省成本。

當建置快取用於重新填入本機目錄時,這些任務會標記為FROM-CACHE

$ ./gradlew compileJava --build-cache

> Task :buildSrc:generateExternalPluginSpecBuilders UP-TO-DATE
> Task :buildSrc:extractPrecompiledScriptPluginPlugins UP-TO-DATE
> Task :buildSrc:compilePluginsBlocks UP-TO-DATE
> Task :buildSrc:generatePrecompiledScriptPluginAccessors UP-TO-DATE
> Task :buildSrc:generateScriptPluginAdapters UP-TO-DATE
> Task :buildSrc:compileKotlin UP-TO-DATE
> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors UP-TO-DATE
> Task :buildSrc:processResources UP-TO-DATE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:jar UP-TO-DATE
> Task :list:compileJava FROM-CACHE
> Task :utilities:compileJava FROM-CACHE
> Task :app:compileJava FROM-CACHE

BUILD SUCCESSFUL in 364ms
12 actionable tasks: 3 from cache, 9 up-to-date

重新填入本機目錄後,下一次執行會將任務標記為UP-TO-DATE,而不是FROM-CACHE

建置快取讓您可以在團隊間共用和重複使用未變更的建置和測試輸出。這可以加快本機和 CI 建置速度,因為不會浪費週期重新建置不受新程式碼變更影響的二進位檔。

請參閱建置快取章節以瞭解更多資訊。

下一步: 瞭解建置掃描 >>