增量建置
增量建置 是一種建置,可避免執行自上次建置以來輸入未變更的任務。如果這些任務只會重新產生相同的輸出,則重新執行它們是不必要的。
為了使增量建置能夠運作,任務必須定義其輸入和輸出。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 建置。
請參閱建置快取章節以了解更多資訊。
下一步: 了解建置掃描 >>