blob: 8036bea0303e6c58f1d95754962b597ec1f8e9ca [file] [log] [blame]
/*
* Copyright 2016-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
/** Publish the platform JAR and POM so that consumers who depend on this module and can't read Gradle module
metadata can still get the platform artifact and transitive dependencies from the POM: */
project.ext.publishPlatformArtifactsInRootModule = { MavenPublication platformPublication ->
XmlProvider platformXml = null
platformPublication.pom.withXml { platformXml = it }
publishing.publications.kotlinMultiplatform {
pom.withXml {
Node root = asNode()
// Remove the original content and add the content from the platform POM:
root.children().toList().each { root.remove(it as Node) }
platformXml.asNode().children().each { root.append(it as Node) }
// Adjust the self artifact ID, as it should match the root module's coordinates:
((root.get("artifactId") as NodeList).get(0) as Node).setValue(artifactId)
// Set packaging to POM to indicate that there's no artifact:
root.appendNode("packaging", "pom")
// Remove the original platform dependencies and add a single dependency on the platform module:
Node dependencies = (root.get("dependencies") as NodeList).get(0) as Node
dependencies.children().toList().each { dependencies.remove(it as Node) }
Node singleDependency = dependencies.appendNode("dependency")
singleDependency.appendNode("groupId", platformPublication.groupId)
singleDependency.appendNode("artifactId", platformPublication.artifactId)
singleDependency.appendNode("version", platformPublication.version)
singleDependency.appendNode("scope", "compile")
}
}
tasks.matching { it.name == "generatePomFileForKotlinMultiplatformPublication" }.configureEach {
dependsOn(tasks["generatePomFileFor${platformPublication.name.capitalize()}Publication"])
}
}