42 lines
2.1 KiB
Groovy
42 lines
2.1 KiB
Groovy
/*
|
|
* Copyright 2014-2020 JetBrains s.r.o and contributors. 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 ->
|
|
afterEvaluate {
|
|
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"])
|
|
}
|
|
}
|
|
} |