fix deploy for klibs (#153)

* fix deploy for klibs

- update gradle wrapper
- upgrade jreleaser to 1.19.0
- remove unused code in build.gradle

* remove unnecessary check for js

* exclude kotlinMultiplatform from publication overrides
This commit is contained in:
Pavel Gorgulov 2025-07-17 05:53:46 +02:00 • committed by GitHub
commit 058bba110f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 35 deletions

View file

@ -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.dokka.gradle.engine.parameters.VisibilityModifier
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
import org.jetbrains.kotlin.gradle.dsl.JvmTarget 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 import org.jreleaser.model.Active
plugins { plugins {
@ -18,20 +13,18 @@ plugins {
alias(libs.plugins.dokka) alias(libs.plugins.dokka)
alias(libs.plugins.jreleaser) alias(libs.plugins.jreleaser)
`maven-publish` `maven-publish`
signing
alias(libs.plugins.kotlinx.binary.compatibility.validator) alias(libs.plugins.kotlinx.binary.compatibility.validator)
} }
group = "io.modelcontextprotocol" group = "io.modelcontextprotocol"
version = "0.6.0" version = "0.6.0"
val mainSourcesJar = tasks.register<Jar>("mainSourcesJar") { val javadocJar by tasks.registering(Jar::class) {
archiveClassifier = "sources" archiveClassifier.set("javadoc")
from(kotlin.sourceSets.getByName("commonMain").kotlin)
} }
publishing { publishing {
val javadocJar = configureEmptyJavadocArtifact()
publications.withType(MavenPublication::class).all { publications.withType(MavenPublication::class).all {
if (name.contains("jvm", ignoreCase = true)) { if (name.contains("jvm", ignoreCase = true)) {
artifact(javadocJar) artifact(javadocJar)
@ -67,19 +60,29 @@ jreleaser {
maxRetries = 240 maxRetries = 240
stagingRepository(layout.buildDirectory.dir("staging-deploy").get().asFile.path) stagingRepository(layout.buildDirectory.dir("staging-deploy").get().asFile.path)
// workaround: https://github.com/jreleaser/jreleaser/issues/1784 // workaround: https://github.com/jreleaser/jreleaser/issues/1784
kotlin.targets.forEach { target -> afterEvaluate {
if (target !is KotlinJvmTarget && target !is KotlinAndroidTarget && target !is KotlinMetadataTarget) { publishing.publications.forEach { publication ->
val klibArtifactId = if (target.platformType == KotlinPlatformType.wasm) { if (publication is MavenPublication) {
"${name}-wasm-${target.name.lowercase().substringAfter("wasm")}" val pubName = publication.name
} else {
"${name}-${target.name.lowercase()}" if (!pubName.contains("jvm", ignoreCase = true)
} && !pubName.contains("metadata", ignoreCase = true)
artifactOverride { && !pubName.contains("kotlinMultiplatform", ignoreCase = true)
artifactId = klibArtifactId ) {
jar = false
verifyPom = false artifactOverride {
sourceJar = false artifactId = when {
javadocJar = false 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() { fun MavenPublication.signPublicationIfKeyPresent() {
val keyId = project.getSensitiveProperty("SIGNING_KEY_ID") val keyId = project.getSensitiveProperty("SIGNING_KEY_ID")
val signingKey = project.getSensitiveProperty("SIGNING_KEY_PRIVATE") val signingKey = project.getSensitiveProperty("SIGNING_KEY_PRIVATE")

View file

@ -11,7 +11,7 @@ coroutines = "1.10.2"
ktor = "3.2.1" ktor = "3.2.1"
mockk = "1.14.4" mockk = "1.14.4"
logging = "7.0.7" logging = "7.0.7"
jreleaser = "1.17.0" jreleaser = "1.19.0"
binaryCompatibilityValidatorPlugin = "0.18.0" binaryCompatibilityValidatorPlugin = "0.18.0"
slf4j = "2.0.17" slf4j = "2.0.17"
kotest = "5.9.1" kotest = "5.9.1"

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME