From cc684cce3d76de739c2f14180701f4e7c0fb66a4 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Mon, 16 Jan 2023 14:47:02 +0100 Subject: [PATCH] [Gradle] Ensure deprecated *DependenciesMetadata configurations carry necessary dependencies ^KT-55929 Verification Pending --- .../KotlinMetadataTargetConfigurator.kt | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index 6a9a1f549cc..493e31be131 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -364,8 +364,27 @@ class KotlinMetadataTargetConfigurator : } ) - if (sourceSet is DefaultKotlinSourceSet) + @Suppress("DEPRECATION") + if (sourceSet is DefaultKotlinSourceSet) { sourceSet.compileDependenciesTransformation = granularMetadataTransformation + + /* + Older IDEs still rely on resolving the metadata configurations explicitly. + Dependencies will be coming from extending the newer 'resolvableMetadataConfiguration'. + + the intransitiveMetadataConfigurationName will not extend this mechanism, since it only + relies on dependencies being added explicitly by the Kotlin Gradle Plugin + */ + listOf( + sourceSet.apiMetadataConfigurationName, + sourceSet.implementationMetadataConfigurationName, + sourceSet.compileOnlyMetadataConfigurationName + ).forEach { configurationName -> + val configuration = project.configurations.getByName(configurationName) + configuration.extendsFrom(sourceSet.resolvableMetadataConfiguration) + granularMetadataTransformation.applyToConfiguration(configuration) + } + } } /** Ensure that the [configuration] excludes the dependencies that are classified by this [GranularMetadataTransformation] as