[stdlib-mpp] Add dependency constraint on kotlin-stdlib-common for...

...other variants where it can be expected. Such as:

* commonMainMetadataElements (legacy metadata)
* metadataElements (klib metadata)
* nativeApiElements

This would prevent from leaking kotlin-stdlib-common dependencies of
older Kotlin versions. So every KGP configuration where
stdlib dependencies is configured automatically will enforce dependency
constraints on kotlin-stdlib-common.

^KT-61053 Verification Pending
This commit is contained in:
Anton Lakotka
2023-08-08 14:36:54 +02:00
committed by Space Team
parent b725cd3e6c
commit 7c5dd7c451
+10 -4
View File
@@ -1,14 +1,14 @@
@file:Suppress("UNUSED_VARIABLE", "NAME_SHADOWING")
import org.gradle.api.internal.component.SoftwareComponentInternal
import org.gradle.api.internal.component.UsageContext
import java.nio.file.*
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
import org.jetbrains.kotlin.gradle.tasks.UsesKotlinJavaToolchain
import plugins.configureDefaultPublishing
import org.gradle.jvm.tasks.Jar
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
import org.jetbrains.kotlin.gradle.tasks.UsesKotlinJavaToolchain
import plugins.configureDefaultPublishing
import plugins.configureKotlinPomAttributes
import java.nio.file.*
plugins {
id("kotlin-multiplatform")
@@ -461,10 +461,16 @@ kotlin {
dependencies {
val jvmMainImplementation by configurations.getting
val commonMainMetadataElementsWithClassifier by configurations.creating
val metadataApiElements by configurations.getting
val nativeApiElements by configurations.creating
constraints {
// there is no dependency anymore from kotlin-stdlib to kotlin-stdlib-common,
// but use this constraint to align it if another library brings it transitively
jvmMainImplementation(project(":kotlin-stdlib-common"))
commonMainMetadataElementsWithClassifier(project(":kotlin-stdlib-common"))
metadataApiElements(project(":kotlin-stdlib-common"))
nativeApiElements(project(":kotlin-stdlib-common"))
// to avoid split package and duplicate classes on classpath after moving them from these artifacts in 1.8.0
jvmMainImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0")
jvmMainImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0")