From 0379254918ca76ed9ceb9de617bcf81ec6c335af Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Mon, 13 Mar 2017 21:14:55 +0300 Subject: [PATCH] Kapt3: Fix compatibility with IC (KT-16753) Kapt does not support incremental compilation for stubs so we should delete source stubs before running annotation processing. --- .../gradle/internal/Kapt3KotlinGradleSubplugin.kt | 2 ++ .../jetbrains/kotlin/gradle/internal/KaptTask.kt | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt index 04d5c3fbac1..a37d162dc13 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt @@ -240,6 +240,8 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { kaptTask.pluginOptions.addClasspathEntry(it) } + kaptTask.stubsDir = getKaptStubsDir(project, sourceSetName) + kaptTask.mapClasspath { kotlinCompile.classpath } kaptTask.destinationDir = sourcesOutputDir kaptTask.classesDir = classesOutputDir diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KaptTask.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KaptTask.kt index 79e49c611f4..b93c51cec51 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KaptTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/KaptTask.kt @@ -39,15 +39,17 @@ open class KaptTask : AbstractCompile() { } lateinit var classesDir: File + lateinit var stubsDir: File @TaskAction override fun compile() { /** Delete everything inside the [destinationDir] */ - destinationDir.deleteRecursively() - destinationDir.mkdirs() + destinationDir.clearDirectory() - classesDir.deleteRecursively() - classesDir.mkdirs() + classesDir.clearDirectory() + + // Kapt3 doesn't support incremental compilation so we should delete the existing stubs + stubsDir.clearDirectory() val sourceRoots = SourceRoots.ForJvm.create(getSource(), rawSourceRoots) @@ -69,4 +71,9 @@ open class KaptTask : AbstractCompile() { val exitCode = compilerRunner.runJvmCompiler(sourceRoots.kotlinSourceFiles, sourceRoots.javaSourceRoots, args, environment) throwGradleExceptionIfError(exitCode) } + + private fun File.clearDirectory() { + deleteRecursively() + mkdirs() + } } \ No newline at end of file