From 914f7c8719d0a9ca60d0560f9d263314079109ca Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Thu, 14 Mar 2019 16:17:49 +0300 Subject: [PATCH] KT-27675: Following the Gradle Java plugin, enable Kapt cache by default As the Gradle Java plugin considers Java annotation processing cacheable with any annotation processors, we can enable build cache by default for Kapt tasks, leaving the opt-out flag just in case. Issue #KT-27675 Fixed --- .../jetbrains/kotlin/gradle/BuildCacheIT.kt | 34 +++++++++---------- .../kotlin/gradle/internal/kapt/KaptTask.kt | 3 +- .../kotlin/gradle/plugin/KaptExtension.kt | 6 ++-- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildCacheIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildCacheIT.kt index d5a94fa8497..162d1fdb1fb 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildCacheIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BuildCacheIT.kt @@ -135,27 +135,12 @@ class BuildCacheIT : BaseGradleIT() { } @Test - fun testKaptCachingDisabledByDefault() = with(Project("simple", GRADLE_VERSION, directoryPrefix = "kapt2")) { + fun testKaptCachingEnabledByDefault() = with(Project("simple", GRADLE_VERSION, directoryPrefix = "kapt2")) { prepareLocalBuildCache() - build("build") { - assertSuccessful() - assertContains("Packing task ':kaptGenerateStubsKotlin'") - assertNotContains("Packing task ':kaptKotlin'") - assertContains("Caching disabled for task ':kaptKotlin': 'Caching is disabled by default for kapt") - } - - File(projectDir, "build.gradle").appendText( - "\n" + """ - afterEvaluate { - kaptKotlin.useBuildCache = true - } - """.trimIndent() - ) - build("clean", "build") { assertSuccessful() - assertContains(":kaptGenerateStubsKotlin FROM-CACHE") + assertContains("Packing task ':kaptGenerateStubsKotlin'") assertContains("Packing task ':kaptKotlin'") } @@ -164,6 +149,21 @@ class BuildCacheIT : BaseGradleIT() { assertContains(":kaptGenerateStubsKotlin FROM-CACHE") assertContains(":kaptKotlin FROM-CACHE") } + + File(projectDir, "build.gradle").appendText( + "\n" + """ + afterEvaluate { + kaptKotlin.useBuildCache = false + } + """.trimIndent() + ) + + build("clean", "build") { + assertSuccessful() + assertContains(":kaptGenerateStubsKotlin FROM-CACHE") + assertNotContains(":kaptKotlin FROM-CACHE") + assertContains("Caching disabled for task ':kaptKotlin': 'Caching is disabled for kapt") + } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt index 9929145ead4..d185724bdbb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/KaptTask.kt @@ -19,8 +19,7 @@ abstract class KaptTask : ConventionTask(), TaskWithLocalState { cacheOnlyIfEnabledForKotlin() if (isBuildCacheSupported()) { - val reason = "Caching is disabled by default for kapt because of arbitrary behavior of external " + - "annotation processors. You can enable it by adding 'kapt.useBuildCache = true' to the build script." + val reason = "Caching is disabled for kapt with 'kapt.useBuildCache'" outputs.cacheIf(reason) { useBuildCache } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt index c059b828251..362336c28af 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KaptExtension.kt @@ -42,10 +42,10 @@ open class KaptExtension { @Deprecated("Use `annotationProcessor()` and `annotationProcessors()` instead") open var processors: String = "" - /** Explicit opt-in switch for Kapt caching. Should be used when annotation processors used by this project are - * certain NOT to use anything aside from the task inputs in their logic and are guaranteed to produce the same + /** Opt-out switch for Kapt caching. Should be used when annotation processors used by this project are suspected of + * using anything aside from the task inputs in their logic and are not guaranteed to produce the same * output on subsequent runs without input changes. */ - var useBuildCache: Boolean = false + var useBuildCache: Boolean = true private val apOptionsActions = mutableListOf<(KaptAnnotationProcessorOptions) -> Unit>()