diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index d96b8eaf446..dc5b9558885 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.konan.target.HostManager import org.junit.Assert import org.junit.Test +import java.io.File import java.lang.StringBuilder import java.util.jar.JarFile import java.util.zip.ZipFile @@ -1272,8 +1273,6 @@ class NewMultiplatformIT : BaseGradleIT() { "42" ) if (withMetadata) { - // Check that the external dependency that was resolved with metadata is written to the POM as the artifactId it - // resolved to: assertFileContains( "repo/com/exampleapp/sample-app-jvm8/1.0/sample-app-jvm8-1.0.pom", "com.external.dependency", @@ -1287,7 +1286,39 @@ class NewMultiplatformIT : BaseGradleIT() { assertTrue { "\"group\":\"com.example\",\"module\":\"sample-lib-multiplatform\"" in moduleMetadata } assertTrue { "\"group\":\"com.external.dependency\",\"module\":\"external\"" in moduleMetadata } } - assertFileExists("repo/foo/bar/42/bar-42.jar") + } + + // Check that a user can disable rewriting of MPP dependencies in the POMs: + build("publish", "-Pkotlin.mpp.keepMppDependenciesIntactInPoms=true") { + assertSuccessful() + assertFileContains( + "repo/com/exampleapp/sample-app-nodejs/1.0/sample-app-nodejs-1.0.pom", + "com.example", + if (withMetadata) + "sample-lib-multiplatform" + else + "sample-lib" + , + "1.0" + ) + assertFileContains( + "repo/com/exampleapp/sample-app-jvm8/1.0/sample-app-jvm8-1.0.pom", + "com.example", + if (withMetadata) + "sample-lib-multiplatform" + else + "sample-lib" + , + "1.0" + ) + if (withMetadata) { + assertFileContains( + "repo/com/exampleapp/sample-app-jvm8/1.0/sample-app-jvm8-1.0.pom", + "com.external.dependency", + "external", + "1.2.3" + ) + } } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt index 66f851d0c8e..890e60f0e1a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.gradle.plugin import org.gradle.api.Project import org.jetbrains.kotlin.gradle.dsl.Coroutines -import org.jetbrains.kotlin.gradle.report.BuildReportMode import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @@ -80,6 +79,9 @@ internal class PropertiesProvider(private val project: Project) { val useFallbackCompilerSearch: Boolean? get() = booleanProperty("kotlin.useFallbackCompilerSearch") + val keepMppDependenciesIntactInPoms: Boolean? + get() = booleanProperty("kotlin.mpp.keepMppDependenciesIntactInPoms") + /** * Enables parallel tasks execution within a project with Workers API. * Does not enable using actual worker proccesses diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index e5ec3efd0c6..8776190c9ec 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -205,7 +205,10 @@ class KotlinMultiplatformPlugin( (this as MavenPublicationInternal).publishWithOriginalFileName() artifactId = variant.defaultArtifactId - pom.withXml { xml -> project.rewritePomMppDependenciesToActualTargetModules(xml, variant) } + pom.withXml { xml -> + if (PropertiesProvider(project).keepMppDependenciesIntactInPoms != true) + project.rewritePomMppDependenciesToActualTargetModules(xml, variant) + } } (variant as? KotlinTargetComponentWithPublication)?.publicationDelegate = variantPublication