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