diff --git a/build.gradle.kts b/build.gradle.kts index f76c5513..6a997a70 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,14 +1,9 @@ -@file:OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalWasmDsl::class) +@file:OptIn(ExperimentalWasmDsl::class) import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier -import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget -import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jreleaser.model.Active plugins { @@ -18,20 +13,18 @@ plugins { alias(libs.plugins.dokka) alias(libs.plugins.jreleaser) `maven-publish` + signing alias(libs.plugins.kotlinx.binary.compatibility.validator) } group = "io.modelcontextprotocol" version = "0.6.0" -val mainSourcesJar = tasks.register("mainSourcesJar") { - archiveClassifier = "sources" - from(kotlin.sourceSets.getByName("commonMain").kotlin) +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") } publishing { - val javadocJar = configureEmptyJavadocArtifact() - publications.withType(MavenPublication::class).all { if (name.contains("jvm", ignoreCase = true)) { artifact(javadocJar) @@ -67,19 +60,29 @@ jreleaser { maxRetries = 240 stagingRepository(layout.buildDirectory.dir("staging-deploy").get().asFile.path) // workaround: https://github.com/jreleaser/jreleaser/issues/1784 - kotlin.targets.forEach { target -> - if (target !is KotlinJvmTarget && target !is KotlinAndroidTarget && target !is KotlinMetadataTarget) { - val klibArtifactId = if (target.platformType == KotlinPlatformType.wasm) { - "${name}-wasm-${target.name.lowercase().substringAfter("wasm")}" - } else { - "${name}-${target.name.lowercase()}" - } - artifactOverride { - artifactId = klibArtifactId - jar = false - verifyPom = false - sourceJar = false - javadocJar = false + afterEvaluate { + publishing.publications.forEach { publication -> + if (publication is MavenPublication) { + val pubName = publication.name + + if (!pubName.contains("jvm", ignoreCase = true) + && !pubName.contains("metadata", ignoreCase = true) + && !pubName.contains("kotlinMultiplatform", ignoreCase = true) + ) { + + artifactOverride { + artifactId = when { + pubName.contains("wasm", ignoreCase = true) -> + "${project.name}-wasm-${pubName.lowercase().substringAfter("wasm")}" + + else -> "${project.name}-${pubName.lowercase()}" + } + jar = false + verifyPom = false + sourceJar = false + javadocJar = false + } + } } } } @@ -133,15 +136,6 @@ fun MavenPom.configureMavenCentralMetadata() { } } -fun configureEmptyJavadocArtifact(): org.gradle.jvm.tasks.Jar { - val javadocJar by project.tasks.creating(Jar::class) { - archiveClassifier.set("javadoc") - // contents are deliberately left empty - // https://central.sonatype.org/publish/requirements/#supply-javadoc-and-sources - } - return javadocJar -} - fun MavenPublication.signPublicationIfKeyPresent() { val keyId = project.getSensitiveProperty("SIGNING_KEY_ID") val signingKey = project.getSensitiveProperty("SIGNING_KEY_PRIVATE") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 46013a07..1227aab6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ coroutines = "1.10.2" ktor = "3.2.1" mockk = "1.14.4" logging = "7.0.7" -jreleaser = "1.17.0" +jreleaser = "1.19.0" binaryCompatibilityValidatorPlugin = "0.18.0" slf4j = "2.0.17" kotest = "5.9.1" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f853b1..d4081da4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME