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 d963ab78e80..869e16a7015 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 @@ -45,9 +45,20 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { companion object { private val VERBOSE_OPTION_NAME = "kapt.verbose" + val MAIN_KAPT_CONFIGURATION_NAME = "kapt" + fun getKaptConfigurationName(sourceSetName: String): String { - return if (sourceSetName != "main") "kapt${sourceSetName.capitalize()}" else "kapt" + return if (sourceSetName != "main") + "$MAIN_KAPT_CONFIGURATION_NAME${sourceSetName.capitalize()}" + else + MAIN_KAPT_CONFIGURATION_NAME } + + fun Project.findKaptConfiguration(sourceSetName: String): Configuration? { + return project.configurations.findByName(getKaptConfigurationName(sourceSetName)) + } + + fun findMainKaptConfiguration(project: Project) = project.findKaptConfiguration(MAIN_KAPT_CONFIGURATION_NAME) } private val kotlinToKaptTasksMap = mutableMapOf() @@ -64,10 +75,6 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { return dir } - private fun Project.findKaptConfiguration(sourceSetName: String): Configuration? { - return project.configurations.findByName(getKaptConfigurationName(sourceSetName)) - } - private class Kapt3SubpluginContext( val project: Project, val kotlinCompile: KotlinCompile, 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 2cc96d4329c..332879ee310 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 @@ -575,8 +575,15 @@ private fun Project.createAptConfiguration(sourceSetName: String, kotlinPluginVe val aptConfigurationName = Kapt3KotlinGradleSubplugin.getKaptConfigurationName(sourceSetName) val aptConfiguration = configurations.create(aptConfigurationName) - val kotlinAnnotationProcessingDep = "org.jetbrains.kotlin:kotlin-annotation-processing:$kotlinPluginVersion" - aptConfiguration.dependencies.add(dependencies.create(kotlinAnnotationProcessingDep)) + + // Add base kotlin-annotation-processing artifact for the main kapt configuration, + // All other configurations (such as kaptTest) should extend the main one + if (aptConfiguration.name == Kapt3KotlinGradleSubplugin.MAIN_KAPT_CONFIGURATION_NAME) { + val kotlinAnnotationProcessingDep = "org.jetbrains.kotlin:kotlin-annotation-processing:$kotlinPluginVersion" + aptConfiguration.dependencies.add(dependencies.create(kotlinAnnotationProcessingDep)) + } else { + Kapt3KotlinGradleSubplugin.findMainKaptConfiguration(this)?.let { aptConfiguration.extendsFrom(it) } + } return aptConfiguration }