在Kotlin中使用Gradle构建缓存
Kotlin 1.2.21允許Kotlin項目使用構建緩存。通過Gradle的構建緩存功能,可以提升Kotlin代碼的編譯速度,加快開發周期。本文將結合實際例子,介紹利用Gradle加速Kotlin代碼編譯的原理、配置示例以及在IDE中的使用方法。
\\構建緩存允許Gradle可以復用任何之前調用(包括那些來自其它機器的調用)的任務產出。Kotlin 1.2.21允許Kotlin項目使用構建緩存。
\\構建緩存的工作原理是在緩存中存儲編譯過的類、測試結果和其它構建工序,同時記錄所有的任務輸入,包括輸入文件內容、相關的類路徑和任務配置。
\\\\這常常導致更快的構建。下面的圖標展示了在Gradle的持續集成中使用構建緩存和不使用構建緩存所收集到的構建時間:
\\\\本文中,我們將向你闡述,如何使用Gradle的構建緩存來避免不必要的Kotlin編譯,從而加快你的構建過程。
\\Spek快速示例
\\你現在就可以嘗試使用Gradle的構建緩存。只需要遵循下面幾個步驟:
\\Clone Spek?
\\\git clone https://github.com/spekframework/spek.git\cd spek\\Spek 2.x分支(其默認分支)已經有我們后續要介紹的構建緩存的所有先決條件。
\\構建和填充緩存
\\下面的命令會構建Spek并填充本地構建緩存。
\\\? ./gradlew assemble --build-cache\\BUILD SUCCESSFUL in 10s\21 actionable tasks: 21 executed\\使用--build-cache標識,可以讓Gradle在一個獨立的任務結果緩存中存儲任務結果。
\\刪除/更改構建結果
\\這模擬了在另一臺機器上的情況或者做了一次改變并stash(存儲)這次改變的情況。演示的最快方法是使用clean任務。
\\\? ./gradlew clean\\\\從構建緩存中重新構建
\\當我們重新構建時,從構建緩存中拉取所有編譯過的Kotlin源碼。
\\\? ./gradlew assemble --build-cache\\BUILD SUCCESSFUL in 2s\21 actionable tasks: 11 executed, 10 from cache\\\\就是這樣!通過使用Gradle的構建緩存,你重用了編譯過的Kotlin類,而不是又重新編譯!構建速度差不多快了5倍!
\\你可以從這次構建觀測中看到,Kotlin編譯任務從構建緩存中拉取緩存結果;而:jar和:processResources任務沒有從緩存中拉取,因為它們本地生成JAR包和復制文件的速度比從緩存中拉取緩存結果的速度更快。另外Gradle構建緩存也支持緩存:test任務。
\\當持續集成的一個實例填充了一個共享的構建緩存(開發者可以從中拉取)時,Gradle構建緩存會特別有效。下文羅列了實現這點的更多資源的鏈接。
\\為你的項目啟用構建緩存
\\我希望你會在自己的項目上嘗試使用構建緩存——你可以遵循下面的步驟來啟用構建緩存。
\\首先,你需要確保正在使用Gradle 4.3或者更高版本,這樣才能選擇Kotlin Gradle Plugin來使用新的Gradle APIs。你可以方便地使用Gradle wrapper升級Gradle。
\\然后,你需要確保正在使用Kotlin 1.2.20或更高版本來進行編譯。你在自己的構建腳本build.gradle中的buildscript {}塊中配置類似如下的聲明:
\\\dependencies {\ classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.21\"\}\\\\然后,我們需要讓Gradle使用構建緩存。有3種啟用構建緩存的方法:
\\- 在命令行中使用--build-cache來為當前構建啟用構建緩存。\\t
- 在$PROJECT_ROOT/gradle.properties中增加org.gradle.caching=true來為整個項目啟用構建緩存。\\t
- 在$GRADLE_HOME/gradle.properties中增加org.gradle.caching=true來為當前用戶的所有構建啟用構建緩存。\
注意: Android開發者即使設置了android.enableBuildCache=true,也仍需要按照上述方法啟用構建緩存,因為Gradle的構建緩存是獨立于Android的構建緩存的。
\\我們可以選擇通過將run和test actions委派給Gradle的方式,來利用IDE的構建緩存。
\\在IntelliJ中啟用構建緩存
\\如果你使用IntelliJ來執行Gradle actions,你需要在IDE配置中勾選“Delegate IDE build/run actions to Gradle(將IDE 構建/運行動作委派給Gradle)”,從而在IntelliJ中構建和運行測試時利用構建緩存。
\\\\注意: Android Studio默認這樣做。
\\緩存kapt任務
\\目前即使使用--build-cache,針對kapt的緩存也默認是禁用的,因為Gradle還沒有一種方法來映射注解處理器的輸入和輸出。你可以通過在kapt配置中將useBuildCache設置為true來明確啟用針對Kotlin注解處理任務的構建緩存。
\\\kapt {\useBuildCache = true\}\\\\推薦讀物
\\你可以通過下列資源來了解更多關于利用Gradle構建緩存的信息:
\\- Configuring the build cache\\t
- Setting up a shared, remote build cache ??\\t
- Debugging build cache misses\\t
- Developing cacheable custom tasks\
結論
\\使用kotlin-gradle-plugin 1.2.20及以上版本編譯Kotlin代碼,可以利用Gradle的--build-cache功能來加快開發周期。我們正在繼續努力來擴展支持構建緩存的任務集。
\\關于作者
\\Eric Wendelin是Gradle的軟件工程師,旨在讓軟件構建更簡單。
\\查看英文原文:Using Gradle build cache with Kotlin
\\感謝覃云對本文的審校。
總結
以上是生活随笔為你收集整理的在Kotlin中使用Gradle构建缓存的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: abap 优化之ST05
- 下一篇: C语言对结构体何时用- , 何时用.