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 javaCompile: AbstractCompile,
val kaptVariantData: KaptVariantData<*>?, val kaptVariantData: KaptVariantData<*>?,
val sourceSetName: String, val sourceSetName: String,
val javaSourceSet: SourceSet?,
val kaptExtension: KaptExtension, val kaptExtension: KaptExtension,
val kaptClasspath: MutableList<File>) { val kaptClasspath: MutableList<File>) {
val sourcesOutputDir = getKaptGeneratedDir(project, sourceSetName) val sourcesOutputDir = getKaptGeneratedDir(project, sourceSetName)
@@ -168,7 +169,7 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
val kaptExtension = project.extensions.getByType(KaptExtension::class.java) val kaptExtension = project.extensions.getByType(KaptExtension::class.java)
val context = Kapt3SubpluginContext(project, kotlinCompile, javaCompile, val context = Kapt3SubpluginContext(project, kotlinCompile, javaCompile,
kaptVariantData, sourceSetName, kaptExtension, kaptClasspath) kaptVariantData, sourceSetName, javaSourceSet, kaptExtension, kaptClasspath)
val kaptGenerateStubsTask = context.createKaptGenerateStubsTask() val kaptGenerateStubsTask = context.createKaptGenerateStubsTask()
val kaptTask = context.createKaptKotlinTask() val kaptTask = context.createKaptKotlinTask()
@@ -283,6 +284,10 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
kaptTask.destinationDir = sourcesOutputDir kaptTask.destinationDir = sourcesOutputDir
kaptTask.classesDir = classesOutputDir kaptTask.classesDir = classesOutputDir
javaSourceSet?.output?.apply {
tryAddClassesDir { project.files(classesOutputDir).builtBy(kaptTask) }
}
kotlinCompile.source(sourcesOutputDir, kotlinSourcesOutputDir) kotlinCompile.source(sourcesOutputDir, kotlinSourcesOutputDir)
if (kaptVariantData != null) { if (kaptVariantData != null) {
@@ -193,7 +193,7 @@ internal class Kotlin2JvmSourceSetProcessor(
} }
} }
private fun SourceSetOutput.tryAddClassesDir( internal fun SourceSetOutput.tryAddClassesDir(
classesDirProvider: () -> FileCollection classesDirProvider: () -> FileCollection
): Boolean { ): Boolean {
val getClassesDirs = ReflectionUtil.findMethod( val getClassesDirs = ReflectionUtil.findMethod(