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+.
This commit is contained in:
Yan Zhulanow
2017-07-24 20:45:54 +03:00
parent 725f51056f
commit 826672ea1b
2 changed files with 7 additions and 2 deletions
@@ -110,6 +110,7 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
val javaCompile: AbstractCompile,
val kaptVariantData: KaptVariantData<*>?,
val sourceSetName: String,
val javaSourceSet: SourceSet?,
val kaptExtension: KaptExtension,
val kaptClasspath: MutableList<File>) {
val sourcesOutputDir = getKaptGeneratedDir(project, sourceSetName)
@@ -168,7 +169,7 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
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<KotlinCompile> {
kaptTask.destinationDir = sourcesOutputDir
kaptTask.classesDir = classesOutputDir
javaSourceSet?.output?.apply {
tryAddClassesDir { project.files(classesOutputDir).builtBy(kaptTask) }
}
kotlinCompile.source(sourcesOutputDir, kotlinSourcesOutputDir)
if (kaptVariantData != null) {
@@ -193,7 +193,7 @@ internal class Kotlin2JvmSourceSetProcessor(
}
}
private fun SourceSetOutput.tryAddClassesDir(
internal fun SourceSetOutput.tryAddClassesDir(
classesDirProvider: () -> FileCollection
): Boolean {
val getClassesDirs = ReflectionUtil.findMethod(