From ffd0b438daac68e789f8a54af1e063e1223b2c7b Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Thu, 1 Aug 2019 11:00:58 +0300 Subject: [PATCH] Don't create the Kapt generate stubs output dir in lazy initializer Creating a directory in the property getter interferes with Gradle cache outputs snapshotting, resulting in build cache being disabled for the task with the following info message: Caching disabled for task ':app:kaptGenerateStubsKotlin': Gradle does not know how file 'build/tmp/kapt3/incrementalData/main' was created (output property 'destinationDir'). Task output caching requires exclusive access to output paths to guarantee correctness. As Gradle automatically creates any @OutputDirectory, we don't need to create it at the task initialization phase. --- .../internal/kapt/Kapt3KotlinGradleSubplugin.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt index c87df48934c..d6289febebb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt @@ -162,15 +162,17 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { override fun isApplicable(project: Project, task: AbstractCompile) = task is KotlinCompile && Kapt3GradleSubplugin.isEnabled(project) - private fun Kapt3SubpluginContext.getKaptStubsDir() = createAndReturnTemporaryKaptDirectory("stubs") + private fun Kapt3SubpluginContext.getKaptStubsDir() = temporaryKaptDirectory("stubs") - private fun Kapt3SubpluginContext.getKaptIncrementalDataDir() = createAndReturnTemporaryKaptDirectory("incrementalData") + private fun Kapt3SubpluginContext.getKaptIncrementalDataDir() = temporaryKaptDirectory("incrementalData", doMkDirs = false) - private fun Kapt3SubpluginContext.getKaptIncrementalAnnotationProcessingCache() = createAndReturnTemporaryKaptDirectory("incApCache") + private fun Kapt3SubpluginContext.getKaptIncrementalAnnotationProcessingCache() = temporaryKaptDirectory("incApCache") - private fun Kapt3SubpluginContext.createAndReturnTemporaryKaptDirectory(name: String): File { + private fun Kapt3SubpluginContext.temporaryKaptDirectory(name: String, doMkDirs: Boolean = true): File { val dir = File(project.buildDir, "tmp/kapt3/$name/$sourceSetName") - dir.mkdirs() + if (doMkDirs) { + dir.mkdirs() + } return dir }