|
| 1 | +import groovy.util.Node |
| 2 | +import groovy.util.NodeList |
| 3 | + |
| 4 | +plugins { |
| 5 | + `maven-publish` |
| 6 | +} |
| 7 | + |
| 8 | +publishing { |
| 9 | + publications { |
| 10 | + withType<MavenPublication>().configureEach { |
| 11 | + pom { |
| 12 | + url.set("https://github.com/ephemient/kotlinx-serialization-contrib") |
| 13 | + description.convention(project.description) |
| 14 | + } |
| 15 | + } |
| 16 | + |
| 17 | + (findByName("kotlinMultiplatform") as? MavenPublication ?: create<MavenPublication>("maven")).apply { |
| 18 | + plugins.withType(JavaPlugin::class) { |
| 19 | + extensions.configure<JavaPluginExtension>("java") { |
| 20 | + withSourcesJar() |
| 21 | + } |
| 22 | + from(components["java"]) |
| 23 | + } |
| 24 | + |
| 25 | + plugins.withId("org.jetbrains.dokka") { |
| 26 | + val dokkaJar by tasks.registering(Jar::class) { |
| 27 | + description = "Assembles a jar archive containing the Dokka HTML." |
| 28 | + group = BasePlugin.BUILD_GROUP |
| 29 | + from(tasks.named("dokkaHtml")) |
| 30 | + archiveClassifier.set("dokka") |
| 31 | + } |
| 32 | + tasks.named("assemble") { dependsOn(dokkaJar) } |
| 33 | + artifact(dokkaJar) |
| 34 | + } |
| 35 | + |
| 36 | + if (name == "kotlinMultiplatform") { |
| 37 | + afterEvaluate { |
| 38 | + val jvm = findByName("jvm") as? MavenPublication ?: return@afterEvaluate |
| 39 | + // Gradle/Kotlin metadata consumers will pick the right platform out of the box, |
| 40 | + // but POM consumers won't; force them to JVM. |
| 41 | + pom.withXml { |
| 42 | + val root = asNode() |
| 43 | + val dependencies = ((root["dependencies"] as NodeList).firstOrNull() as Node?)?.apply { |
| 44 | + for (child in children().toList()) remove(child as Node) |
| 45 | + } ?: root.appendNode("dependencies") |
| 46 | + dependencies.appendNode("dependency").apply { |
| 47 | + appendNode("groupId", jvm.groupId) |
| 48 | + appendNode("artifactId", jvm.artifactId) |
| 49 | + appendNode("version", jvm.version) |
| 50 | + appendNode("scope", "compile") |
| 51 | + } |
| 52 | + } |
| 53 | + } |
| 54 | + } |
| 55 | + } |
| 56 | + } |
| 57 | + |
| 58 | + repositories { |
| 59 | + maven { |
| 60 | + name = "GitHubPackages" |
| 61 | + url = uri("https://maven.pkg.github.com/ephemient/kotlinx-serialization-contrib") |
| 62 | + credentials(PasswordCredentials::class) |
| 63 | + } |
| 64 | + } |
| 65 | +} |
0 commit comments