diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlatformType.kt b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlatformType.kt index ab6bae3d678..0bfb56dd2bd 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlatformType.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlatformType.kt @@ -32,10 +32,12 @@ enum class KotlinPlatformType: Named, Serializable { if (candidateValues == setOf(androidJvm, jvm)) closestMatch(androidJvm) - if (common in candidateValues) + if (common in candidateValues && jvm !in candidateValues && androidJvm !in candidateValues) { // then the consumer requests common or requests no platform-specific artifacts, - // so common is the best match, KT-26834 + // so common is the best match, KT-26834; apply this rule only when no JVM variant is available, + // as doing otherwise would conflict with Gradle java's disambiguation rules and lead to KT-32239 closestMatch(common) + } } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt index 889629f2c33..0066f2d5cde 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/VariantAwareDependenciesIT.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.util.* import org.junit.Test +import kotlin.test.assertTrue class VariantAwareDependenciesIT : BaseGradleIT() { private val gradleVersion = GradleVersionRequired.FOR_MPP_SUPPORT @@ -315,6 +316,27 @@ class VariantAwareDependenciesIT : BaseGradleIT() { } } + @Test + fun testResolveDependencyOnMppInCustomConfiguration() = with(Project("simpleProject", GradleVersionRequired.FOR_MPP_SUPPORT)) { + setupWorkingDir() + + gradleBuildScript().appendText( + "\n" + """ + configurations.create("custom") + repositories.maven { setUrl("https://dl.bintray.com/kotlin/kotlin-dev") } + dependencies { custom("org.jetbrains.kotlinx:kotlinx-cli:0.2.0-dev-7") } + tasks.register("resolveCustom") { doLast { println("###" + configurations.custom.toList()) } } + """.trimIndent() + ) + + build("resolveCustom") { + assertSuccessful() + val printedLine = output.lines().single { "###" in it }.substringAfter("###") + val items = printedLine.removeSurrounding("[", "]").split(", ") + assertTrue(items.toString()) { items.any { "kotlinx-cli-jvm" in it } } + } + } + } internal fun BaseGradleIT.Project.embedProject(other: BaseGradleIT.Project, renameTo: String? = null) {