@@ -16,12 +16,13 @@ import org.gradle.plugins.signing.Sign
1616import org.gradle.plugins.signing.SigningExtension
1717import org.jetbrains.compose.internal.utils.getLocalProperty
1818import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
19+ import groovy.util.Node
1920import javax.inject.Inject
2021
2122
2223class 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