From 826672ea1bd1823c508e306ec240cbb2e68f4912 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Mon, 24 Jul 2017 20:45:54 +0300 Subject: [PATCH] Kapt: Register kapt classes output directory as Java classes directory (KT-19211) This is relevant to pure (non-Android) Java projects and Gradle 4.0+. --- .../kotlin/gradle/internal/Kapt3KotlinGradleSubplugin.kt | 7 ++++++- .../org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 2 +- 2 files changed, 7 insertions(+), 2 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 505e4f35a92..02c4b603db4 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 @@ -110,6 +110,7 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { val javaCompile: AbstractCompile, val kaptVariantData: KaptVariantData<*>?, val sourceSetName: String, + val javaSourceSet: SourceSet?, val kaptExtension: KaptExtension, val kaptClasspath: MutableList) { val sourcesOutputDir = getKaptGeneratedDir(project, sourceSetName) @@ -168,7 +169,7 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { val kaptExtension = project.extensions.getByType(KaptExtension::class.java) val context = Kapt3SubpluginContext(project, kotlinCompile, javaCompile, - kaptVariantData, sourceSetName, kaptExtension, kaptClasspath) + kaptVariantData, sourceSetName, javaSourceSet, kaptExtension, kaptClasspath) val kaptGenerateStubsTask = context.createKaptGenerateStubsTask() val kaptTask = context.createKaptKotlinTask() @@ -283,6 +284,10 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { kaptTask.destinationDir = sourcesOutputDir kaptTask.classesDir = classesOutputDir + javaSourceSet?.output?.apply { + tryAddClassesDir { project.files(classesOutputDir).builtBy(kaptTask) } + } + kotlinCompile.source(sourcesOutputDir, kotlinSourcesOutputDir) if (kaptVariantData != null) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 3e76ff82514..a2db988ac37 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -193,7 +193,7 @@ internal class Kotlin2JvmSourceSetProcessor( } } -private fun SourceSetOutput.tryAddClassesDir( +internal fun SourceSetOutput.tryAddClassesDir( classesDirProvider: () -> FileCollection ): Boolean { val getClassesDirs = ReflectionUtil.findMethod(