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.AbstractCompile
|
||||||
import org.gradle.api.tasks.compile.JavaCompile
|
import org.gradle.api.tasks.compile.JavaCompile
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -147,7 +148,14 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin<KotlinCompile> {
|
|||||||
project.extensions.findByName("android") as? BaseExtension
|
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")
|
pluginOptions += SubpluginOption("apoption", "$key:$value")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+18
@@ -94,6 +94,24 @@ class AndroidGradleWrapper {
|
|||||||
return extension.productFlavors.iterator().collect { extension.sourceSets.findByName(it.name) }
|
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
|
@NotNull
|
||||||
static DefaultDomainObjectSet<TestVariant> getTestVariants(BaseExtension extension) {
|
static DefaultDomainObjectSet<TestVariant> getTestVariants(BaseExtension extension) {
|
||||||
if (extension.getMetaClass().getMetaMethod("getTestVariants")) {
|
if (extension.getMetaClass().getMetaMethod("getTestVariants")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user