From 297aa17b6ea7c25f65e05f007ca9fe9909219960 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 22 Feb 2021 11:43:02 +0100 Subject: [PATCH] Fix Jvm target tries to use removed configuration. KT-44949 In Progress KT-44957 Fixed --- .../gradle/targets/jvm/KotlinJvmTarget.kt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt index 67383ff6eb2..6bcdeb6e9c7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt @@ -15,6 +15,7 @@ import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.testing.Test import org.gradle.jvm.tasks.Jar +import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmCompilation @@ -151,8 +152,12 @@ open class KotlinJvmTarget @Inject constructor( // Add the Java source set dependencies to the Kotlin compilation compile & runtime configurations: + val compileConfigurationName = if (areRuntimeOrCompileConfigurationsAvailable()) { + javaSourceSet.compileConfigurationName.takeIf { project.configurations.findByName(it) != null } + } else null + listOfNotNull( - javaSourceSet.compileConfigurationName.takeIf { project.configurations.findByName(it) != null }, + compileConfigurationName, javaSourceSet.compileOnlyConfigurationName, javaSourceSet.apiConfigurationName.takeIf { project.configurations.findByName(it) != null }, javaSourceSet.implementationConfigurationName @@ -160,8 +165,12 @@ open class KotlinJvmTarget @Inject constructor( project.addExtendsFromRelation(compilation.compileDependencyConfigurationName, configurationName) } + val runtimeConfigurationName = if (areRuntimeOrCompileConfigurationsAvailable()) { + javaSourceSet.runtimeConfigurationName.takeIf { project.configurations.findByName(it) != null } + } else null + listOfNotNull( - javaSourceSet.runtimeConfigurationName.takeIf { project.configurations.findByName(it) != null }, + runtimeConfigurationName, javaSourceSet.runtimeOnlyConfigurationName, javaSourceSet.apiConfigurationName.takeIf { project.configurations.findByName(it) != null }, javaSourceSet.implementationConfigurationName @@ -169,5 +178,11 @@ open class KotlinJvmTarget @Inject constructor( project.addExtendsFromRelation(compilation.runtimeDependencyConfigurationName, configurationName) } } + + /** + * Check if "compile" and "runtime" configurations are still available in current Gradle version. + */ + private fun areRuntimeOrCompileConfigurationsAvailable(): Boolean = + GradleVersion.version(project.gradle.gradleVersion) <= GradleVersion.version("6.8.3") }