| /* |
| * 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. |
| * |
| * See the full rationale here https://youtrack.jetbrains.com/issue/KMM-237#focus=streamItem-27-4115233.0-0 |
| */ |
| project.ext.publishPlatformArtifactsInRootModule = { platformPublication -> |
| def platformPomBuilder = null |
| |
| platformPublication.pom.withXml { platformPomBuilder = asString() } |
| |
| publishing.publications.kotlinMultiplatform { |
| platformPublication.artifacts.forEach { |
| artifact(it) |
| } |
| |
| pom.withXml { |
| def pomStringBuilder = asString() |
| pomStringBuilder.setLength(0) |
| // The platform POM needs its artifact ID replaced with the artifact ID of the root module: |
| def platformPomString = platformPomBuilder.toString() |
| platformPomString.eachLine { line -> |
| if (!line.contains("<!--")) { // Remove the Gradle module metadata marker as it will be added anew |
| pomStringBuilder.append(line.replace(platformPublication.artifactId, artifactId)) |
| pomStringBuilder.append("\n") |
| } |
| } |
| } |
| } |
| |
| tasks.matching { it.name == "generatePomFileForKotlinMultiplatformPublication"}.configureEach { |
| dependsOn(tasks["generatePomFileFor${platformPublication.name.capitalize()}Publication"]) |
| } |
| } |