diff --git a/build-logic/src/main/kotlin/PklPublishing.kt b/build-logic/src/main/kotlin/PklPublishing.kt index fe69b47c0..86a7aa726 100644 --- a/build-logic/src/main/kotlin/PklPublishing.kt +++ b/build-logic/src/main/kotlin/PklPublishing.kt @@ -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().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("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() diff --git a/pkl-gradle/pkl-gradle.gradle.kts b/pkl-gradle/pkl-gradle.gradle.kts index ac6a53b96..325ad83b1 100644 --- a/pkl-gradle/pkl-gradle.gradle.kts +++ b/pkl-gradle/pkl-gradle.gradle.kts @@ -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.