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 171a0704e22..d963ab78e80 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 @@ -27,6 +27,7 @@ import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.compile.JavaCompile import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.io.File @@ -147,7 +148,14 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin { project.extensions.findByName("android") as? BaseExtension } - for ((key, value) in kaptExtension.getAdditionalArguments(project, variantData, androidPlugin)) { + val androidOptions = if (variantData != null) + AndroidGradleWrapper.getAnnotationProcessorOptionsFromAndroidVariant(variantData) ?: emptyMap() + else + emptyMap() + + val apOptions = kaptExtension.getAdditionalArguments(project, variantData, androidPlugin) + androidOptions + + for ((key, value) in apOptions) { pluginOptions += SubpluginOption("apoption", "$key:$value") } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy index 104dba1cd42..339a02005cc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy @@ -94,6 +94,24 @@ class AndroidGradleWrapper { return extension.productFlavors.iterator().collect { extension.sourceSets.findByName(it.name) } } + @Nullable + static Map getAnnotationProcessorOptionsFromAndroidVariant(@Nullable Object variantData) { + if (!(variantData instanceof BaseVariantData)) { + throw new IllegalArgumentException("BaseVariantData instance expected") + } + + def variantConfiguration = variantData.variantConfiguration + if (variantConfiguration.getMetaClass().getMetaMethod("getJavaCompileOptions")) { + def javaCompileOptions = variantConfiguration.getJavaCompileOptions() + + if (javaCompileOptions.getMetaClass().getMetaMethod("getAnnotationProcessorOptions")) { + return javaCompileOptions.getAnnotationProcessorOptions().getArguments() + } + } + + return null + } + @NotNull static DefaultDomainObjectSet getTestVariants(BaseExtension extension) { if (extension.getMetaClass().getMetaMethod("getTestVariants")) {