Skip to content

Commit 060595a

Browse files
committed
build: fix MavenCentralPublishConventionPlugin
1 parent 9a42551 commit 060595a

File tree

1 file changed

+26
-16
lines changed

1 file changed

+26
-16
lines changed

gradle/build-logic/convention/src/main/kotlin/de/charlex/convention/MavenCentralPublishConventionPlugin.kt

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ import org.gradle.plugins.signing.Sign
1616
import org.gradle.plugins.signing.SigningExtension
1717
import org.jetbrains.compose.internal.utils.getLocalProperty
1818
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
19+
import groovy.util.Node
1920
import javax.inject.Inject
2021

2122

2223
class MavenCentralPublishConventionPlugin : Plugin<Project> {
2324
override fun apply(target: Project) = with(target) {
24-
val extension = target.extensions.create(
25+
val extension = extensions.create(
2526
"mavenPublishConfig",
2627
MavenPublishExtension::class.java
2728
)
@@ -46,32 +47,41 @@ class MavenCentralPublishConventionPlugin : Plugin<Project> {
4647
}
4748

4849
extensions.configure<PublishingExtension> {
49-
publications.withType<MavenPublication> {
50+
publications.withType<MavenPublication>().configureEach {
5051
artifact(javadocJar)
5152
pom {
52-
name.set(extension.name ?: project.name)
53-
description.set(extension.description ?: project.description)
54-
url.set(extension.url ?: "https://github.com/ch4rl3x/${project.name}")
53+
name.set(project.provider { extension.name ?: project.name })
54+
description.set(project.provider { extension.description ?: project.description })
55+
url.set(project.provider { extension.url ?: "https://github.com/ch4rl3x/${project.name}" })
5556

5657
licenses {
5758
license {
5859
name.set("Apache-2.0 License")
5960
url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
6061
}
61-
developers {
62+
}
63+
64+
scm {
65+
connection.set(project.provider { extension.scm.connection })
66+
developerConnection.set(project.provider { extension.scm.developerConnection })
67+
url.set(project.provider { extension.scm.url })
68+
}
69+
70+
withXml {
71+
if (extension.developers.isNotEmpty()) {
72+
val root = asNode()
73+
// Prüfen ob bereits ein developers-Knoten existiert
74+
val existing = root.children().firstOrNull { child ->
75+
child is Node && child.name() == "developers"
76+
} as Node?
77+
val devsNode = existing ?: root.appendNode("developers")
6278
extension.developers.forEach { dev ->
63-
developer {
64-
id.set(dev.id)
65-
name.set(dev.name)
66-
email.set(dev.email)
67-
}
79+
val devNode = devsNode.appendNode("developer")
80+
dev.id?.let { devNode.appendNode("id", it) }
81+
dev.name?.let { devNode.appendNode("name", it) }
82+
dev.email?.let { devNode.appendNode("email", it) }
6883
}
6984
}
70-
scm {
71-
connection.set(extension.scm.connection)
72-
developerConnection.set(extension.scm.developerConnection)
73-
url.set(extension.scm.url)
74-
}
7585
}
7686
}
7787
}

0 commit comments

Comments
 (0)