Avoid duplicate pkl-gradle publication (#1777)

The java-gradle-plugin already creates the pluginMaven publication. Applying the library publishing convention creates another publication with the same coordinates, causing an overwrite warning during Sonatype publishing.

Configure the shared POM metadata, validation, signing, and archive artifacts directly so pkl-gradle retains the convention behavior without creating the duplicate library publication.

Fixes #1742
This commit is contained in:
Rushikesh
2026-07-29 22:26:51 +00:00
committed by GitHub
parent 50a09f59dc
commit 871041e655
2 changed files with 26 additions and 11 deletions
+15 -10
View File
@@ -61,26 +61,31 @@ fun Project.configurePklPomMetadata() {
}
}
/** Configures POM validation task to check for unresolved versions and snapshots in releases. */
fun Project.configurePomValidation() {
/**
* Configures POM validation for [publicationName] to check for unresolved versions and snapshots in
* releases.
*/
fun Project.configurePomValidation(publicationName: String = "library") {
val generatePomTaskName =
"generatePomFileFor${publicationName.replaceFirstChar { it.uppercase() }}Publication"
val generatePomTasks =
tasks.withType<GenerateMavenPom>().matching { it.name == generatePomTaskName }
val pomFiles = providers.provider { generatePomTasks.map { it.destination } }
val validatePom =
tasks.register("validatePom") {
if (tasks.findByName("generatePomFileForLibraryPublication") == null) {
return@register
}
val generatePomFileForLibraryPublication =
tasks.named<GenerateMavenPom>("generatePomFileForLibraryPublication")
val outputFile =
layout.buildDirectory.file("validatePom") // dummy output to satisfy up-to-date check
dependsOn(generatePomFileForLibraryPublication)
inputs.file(generatePomFileForLibraryPublication.get().destination)
dependsOn(generatePomTasks)
inputs.files(pomFiles)
outputs.file(outputFile)
onlyIf { pomFiles.get().isNotEmpty() }
doLast {
outputFile.get().asFile.delete()
val pomFile = generatePomFileForLibraryPublication.get().destination
val pomFile = pomFiles.get().single()
assert(pomFile.exists())
val text = pomFile.readText()
+11 -1
View File
@@ -20,10 +20,20 @@ plugins {
id("pklJSpecify")
`java-gradle-plugin`
`maven-publish`
id("pklPublishLibrary")
signing
}
configurePklPomMetadata()
configurePomValidation("pluginMaven")
configurePklSigning()
artifacts {
tasks.findByName("javadocJar")?.let { archives(it) }
tasks.findByName("sourcesJar")?.let { archives(it) }
}
dependencies {
// Declare a `compileOnly` dependency on `projects.pklTools`
// to ensure correct code navigation in IntelliJ.