|
| 1 | +@file:Suppress("DSL_SCOPE_VIOLATION") |
| 2 | + |
| 3 | +import com.palantir.gradle.gitversion.VersionDetails |
| 4 | +import groovy.lang.Closure |
| 5 | +import groovy.util.Node |
| 6 | +import groovy.util.NodeList |
| 7 | +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName |
| 8 | + |
| 9 | +plugins { |
| 10 | + kotlin("jvm") |
| 11 | + id("com.palantir.git-version") |
| 12 | + `maven-publish` |
| 13 | + `java-library` |
| 14 | +} |
| 15 | + |
| 16 | +val modId: String by extra |
| 17 | +val modName: String by extra |
| 18 | +val modGroup: String by extra |
| 19 | +val versionDetails: Closure<VersionDetails> by extra |
| 20 | +val gitDetails = versionDetails() |
| 21 | +group = modGroup |
| 22 | + |
| 23 | +var versionOverride: String? = System.getenv("VERSION") ?: null |
| 24 | +var identifiedVersion = runCatching { |
| 25 | + versionOverride ?: if (System.getenv("CI") != null) gitDetails.lastTag else gitDetails.version |
| 26 | +}.getOrElse { |
| 27 | + "unknown".also { |
| 28 | + versionOverride = it |
| 29 | + } |
| 30 | +} |
| 31 | + |
| 32 | +version = identifiedVersion |
| 33 | +val modVersion = identifiedVersion |
| 34 | + |
| 35 | +java { |
| 36 | + sourceCompatibility = JavaVersion.VERSION_1_8 |
| 37 | + targetCompatibility = JavaVersion.VERSION_1_8 |
| 38 | +} |
| 39 | + |
| 40 | +archivesName.set(modId) |
| 41 | + |
| 42 | +tasks.withType<GenerateModuleMetadata> { |
| 43 | + enabled = false |
| 44 | + mustRunAfter("reobf") |
| 45 | +} |
| 46 | + |
| 47 | +configure<PublishingExtension> { |
| 48 | + publications { |
| 49 | + register("mavenJava", MavenPublication::class) { |
| 50 | + from(components["java"]) |
| 51 | + pom.withXml { |
| 52 | + removeRuntimeDependencies(asNode()) |
| 53 | + } |
| 54 | + val devJar by tasks.registering(Jar::class) { |
| 55 | + from(sourceSets["main"].output) |
| 56 | + archiveClassifier.set("dev") |
| 57 | + } |
| 58 | + artifact(devJar.get()) |
| 59 | + groupId = "space.impact" |
| 60 | + artifactId = modId |
| 61 | + version = identifiedVersion |
| 62 | + } |
| 63 | + } |
| 64 | + repositories { |
| 65 | + maven { |
| 66 | + url = uri("https://maven.accident.space/repository/maven-releases/") |
| 67 | + credentials { |
| 68 | + username = System.getenv("MAVEN_USER") ?: "NONE" |
| 69 | + password = System.getenv("MAVEN_PASSWORD") ?: "NONE" |
| 70 | + } |
| 71 | + } |
| 72 | + } |
| 73 | +} |
| 74 | + |
| 75 | +//hack https://youtrack.jetbrains.com/issue/KT-28355 |
| 76 | +fun removeRuntimeDependencies(pomNode: Node) { |
| 77 | + val dependencyNodes: NodeList = pomNode.get("dependencies") as NodeList |
| 78 | + val dependencies = dependencyNodes.lastOrNull() as? Node |
| 79 | + val removeCandidate = arrayListOf<Node>() |
| 80 | + dependencies?.children()?.forEach { dependency -> |
| 81 | + (dependency as? Node)?.children() |
| 82 | + ?.mapNotNull { it as? Node } |
| 83 | + ?.filter { (it.value() as? NodeList)?.lastOrNull() == "runtime" || it.value() == "org.jetbrains.kotlin" } |
| 84 | + ?.forEach { removeCandidate += it.parent() } |
| 85 | + } |
| 86 | + removeCandidate.forEach { |
| 87 | + it.parent().remove(it) |
| 88 | + } |
| 89 | +} |
0 commit comments