From f0199d7277a72d3f532e59f51e6f89d003b6c319 Mon Sep 17 00:00:00 2001 From: Ivan Gavrilovic Date: Wed, 28 Apr 2021 12:17:49 +0100 Subject: [PATCH] [Gradle] Simplify Parcelize Gradle plugin Do not iterate over all configurations, just add the dependency to the compile and runtime classpath. --- .../android/internal/ParcelizeSubplugin.kt | 37 +++++-------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt index 8dcbaade293..aa569e08276 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt @@ -16,12 +16,16 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation // Use apply plugin: 'kotlin-parcelize' to enable Android Extensions in an Android project. class ParcelizeSubplugin : KotlinCompilerPluginSupportPlugin { override fun apply(target: Project) { - addParcelizeRuntime(target) - target.afterEvaluate { - if (target.plugins.hasPlugin(AndroidSubplugin::class.java)) { - throw GradleException("${target.path}: 'kotlin-parcelize' can't be applied together with 'kotlin-android-extensions'") - } + target.plugins.withType(AndroidSubplugin::class.java) { + throw GradleException("${target.path}: 'kotlin-parcelize' can't be applied together with 'kotlin-android-extensions'") + } + + val kotlinPluginVersion = target.getKotlinPluginVersion() + val dependency = target.dependencies.create("org.jetbrains.kotlin:kotlin-parcelize-runtime:$kotlinPluginVersion") + target.forEachVariant { + it.runtimeConfiguration.dependencies.add(dependency) + it.compileConfiguration.dependencies.add(dependency) } } @@ -44,27 +48,4 @@ class ParcelizeSubplugin : KotlinCompilerPluginSupportPlugin { override fun getCompilerPluginId() = "org.jetbrains.kotlin.parcelize" override fun getPluginArtifact(): SubpluginArtifact = JetBrainsSubpluginArtifact(artifactId = "kotlin-parcelize-compiler") - - private fun addParcelizeRuntime(project: Project) { - val kotlinPluginVersion = project.getKotlinPluginVersion() - - project.configurations.all { configuration -> - val name = configuration.name - if (name != "implementation" && name != "compile") return@all - - androidPluginVersion ?: return@all - val requiredConfigurationName = when { - compareVersionNumbers(androidPluginVersion, "2.5") > 0 -> "implementation" - else -> "compile" - } - - if (name != requiredConfigurationName) return@all - - configuration.dependencies.add( - project.dependencies.create( - "org.jetbrains.kotlin:kotlin-parcelize-runtime:$kotlinPluginVersion" - ) - ) - } - } }