Kapt3: Use annotation processor options from variant data options. This fixes DataBinding on Android Gradle plugin 2.3 (KT-14816)
This commit is contained in:
committed by
Yan Zhulanow
parent
40ef487129
commit
d726d0de88
+9
-1
@@ -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<KotlinCompile> {
|
||||
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")
|
||||
}
|
||||
|
||||
|
||||
+18
@@ -94,6 +94,24 @@ class AndroidGradleWrapper {
|
||||
return extension.productFlavors.iterator().collect { extension.sourceSets.findByName(it.name) }
|
||||
}
|
||||
|
||||
@Nullable
|
||||
static Map<String, String> 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<TestVariant> getTestVariants(BaseExtension extension) {
|
||||
if (extension.getMetaClass().getMetaMethod("getTestVariants")) {
|
||||
|
||||
Reference in New Issue
Block a user