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 8354db602e6..dd9c0a93c8b 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 @@ -90,6 +90,23 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { } fun findMainKaptConfiguration(project: Project) = project.findKaptConfiguration(MAIN_KAPT_CONFIGURATION_NAME) + + fun createAptConfigurationIfNeeded(project: Project, sourceSetName: String): Configuration { + val configurationName = Kapt3KotlinGradleSubplugin.getKaptConfigurationName(sourceSetName) + + project.configurations.findByName(configurationName)?.let { return it } + val aptConfiguration = project.configurations.create(configurationName) + + if (aptConfiguration.name != Kapt3KotlinGradleSubplugin.MAIN_KAPT_CONFIGURATION_NAME) { + // The main configuration can be created after the current one. We should handle this case + val mainConfiguration = findMainKaptConfiguration(project) + ?: createAptConfigurationIfNeeded(project, SourceSet.MAIN_SOURCE_SET_NAME) + + aptConfiguration.extendsFrom(mainConfiguration) + } + + return aptConfiguration + } } private val kotlinToKaptGenerateStubsTasksMap = mutableMapOf() @@ -161,8 +178,6 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { javaSourceSet.name } - createAptConfigurationIfNeeded(project, sourceSetName) - val kaptExtension = project.extensions.getByType(KaptExtension::class.java) val nonEmptyKaptConfigurations = kaptConfigurations.filter { configuration -> @@ -189,23 +204,6 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { return emptyList() } - private fun createAptConfigurationIfNeeded(project: Project, sourceSetName: String): Configuration { - val configurationName = Kapt3KotlinGradleSubplugin.getKaptConfigurationName(sourceSetName) - - project.configurations.findByName(configurationName)?.let { return it } - val aptConfiguration = project.configurations.create(configurationName) - - if (aptConfiguration.name != Kapt3KotlinGradleSubplugin.MAIN_KAPT_CONFIGURATION_NAME) { - // The main configuration can be created after the current one. We should handle this case - val mainConfiguration = findMainKaptConfiguration(project) - ?: createAptConfigurationIfNeeded(project, SourceSet.MAIN_SOURCE_SET_NAME) - - aptConfiguration.extendsFrom(mainConfiguration) - } - - return aptConfiguration - } - override fun getSubpluginKotlinTasks(project: Project, kotlinCompile: KotlinCompile): List { val kaptGenerateStubsTask = kotlinToKaptGenerateStubsTasksMap[kotlinCompile] return if (kaptGenerateStubsTask == null) emptyList() else listOf(kaptGenerateStubsTask) 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 7341823d2e2..cf466b54050 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 @@ -144,6 +144,7 @@ internal class Kotlin2JvmSourceSetProcessor( override fun doTargetSpecificProcessing() { kotlinSourceSet.kotlin.source(sourceSet.java) + Kapt3KotlinGradleSubplugin.createAptConfigurationIfNeeded(project, sourceSet.name) project.afterEvaluate { project -> if (project != null) { @@ -503,6 +504,7 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationT val kotlinSourceSet = kotlinConfigurationTools.kotlinSourceSetProvider.create(sourceSet.name) kotlinSourceSet.kotlin.srcDir(project.file(project.file("src/${sourceSet.name}/kotlin"))) sourceSet.addConvention(KOTLIN_DSL_NAME, kotlinSourceSet) + Kapt3KotlinGradleSubplugin.createAptConfigurationIfNeeded(project, sourceSet.name) } val kotlinOptions = KotlinJvmOptionsImpl()