From 3ecac1bbd305995d33bedce5ea531fa6b2e9da6d Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 8 Dec 2016 19:29:12 +0300 Subject: [PATCH] Kapt3: Make 'kaptTest' configuration extend 'kapt' (KT-10190) --- .../internal/Kapt3KotlinGradleSubplugin.kt | 17 ++++++++++++----- .../kotlin/gradle/plugin/KotlinPlugin.kt | 11 +++++++++-- 2 files changed, 21 insertions(+), 7 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 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 }