1+ @file:OptIn(ExperimentalKotlinGradlePluginApi ::class )
2+
13import org.jetbrains.dokka.gradle.engine.parameters.VisibilityModifier
4+ import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
25import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
6+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
37import org.jreleaser.model.Active
48
59plugins {
6- alias(libs.plugins.kotlin.jvm )
10+ alias(libs.plugins.kotlin.multiplatform )
711 alias(libs.plugins.kotlin.serialization)
812 alias(libs.plugins.dokka)
913 alias(libs.plugins.jreleaser)
14+ alias(libs.plugins.atomicfu)
1015 `maven- publish`
1116}
1217
1318group = " io.modelcontextprotocol"
1419version = " 0.2.0"
1520
16- repositories {
17- mavenCentral()
18- }
19-
20- dependencies {
21- api(libs.kotlinx.serialization.json)
22- api(libs.ktor.client.cio)
23- api(libs.ktor.server.cio)
24- api(libs.ktor.server.sse)
25- api(libs.ktor.server.websockets)
26-
27- implementation(libs.kotlin.logging)
28-
29- testImplementation(libs.kotlin.test)
30- testImplementation(libs.mockk)
31- testImplementation(libs.ktor.server.test.host)
32- testImplementation(libs.kotlinx.coroutines.test)
33- testImplementation(libs.kotlinx.coroutines.debug)
34- }
35-
36- val sources = tasks.create<Jar >(" sourcesJar" ) {
37- from(sourceSets[" main" ].allSource)
38- archiveClassifier.set(" sources" )
21+ val mainSourcesJar = tasks.register<Jar >(" mainSourcesJar" ) {
22+ archiveClassifier = " sources"
23+ from(kotlin.sourceSets.getByName(" commonMain" ).kotlin)
3924}
4025
4126publishing {
42- publications {
43- create<MavenPublication >(" maven" ) {
44- groupId = project.group.toString()
45- artifactId = project.name
46- version = project.version.toString()
47-
48- from(components[" java" ])
49- }
50- }
51-
5227 val javadocJar = configureEmptyJavadocArtifact()
5328
5429 publications.withType(MavenPublication ::class ).all {
5530 pom.configureMavenCentralMetadata()
5631 signPublicationIfKeyPresent()
5732 artifact(javadocJar)
58- artifact(sources)
5933 }
6034
6135 repositories {
@@ -164,17 +138,7 @@ infix fun <T> Property<T>.by(value: T) {
164138 set(value)
165139}
166140
167- tasks.create<Jar >(" localJar" ) {
168- dependsOn(tasks.jar)
169-
170- archiveFileName = " kotlin-sdk.jar"
171- duplicatesStrategy = DuplicatesStrategy .EXCLUDE
172- from(configurations.runtimeClasspath.map {
173- it.map { if (it.isDirectory) it else zipTree(it) }
174- })
175- }
176-
177- tasks.test {
141+ tasks.withType<Test >().configureEach {
178142 useJUnitPlatform()
179143}
180144
@@ -205,7 +169,7 @@ abstract class GenerateLibVersionTask @Inject constructor(
205169dokka {
206170 moduleName.set(" MCP Kotlin SDK" )
207171
208- dokkaSourceSets.main {
172+ dokkaSourceSets.configureEach {
209173 sourceLink {
210174 localDirectory.set(file(" src/main/kotlin" ))
211175 remoteUrl(" https://github.com/modelcontextprotocol/kotlin-sdk" )
@@ -224,13 +188,43 @@ val generateLibVersionTask =
224188 tasks.register<GenerateLibVersionTask >(" generateLibVersion" , version.toString(), sourcesDir)
225189
226190kotlin {
191+ jvm {
192+ compilerOptions {
193+ jvmTarget = JvmTarget .JVM_17
194+ }
195+ }
196+
227197 explicitApi = ExplicitApiMode .Strict
228198
229199 jvmToolchain(21 )
230200
231201 sourceSets {
232- main {
202+ commonMain {
233203 kotlin.srcDir(generateLibVersionTask.map { it.sourcesDir })
204+ dependencies {
205+ api(libs.kotlinx.serialization.json)
206+ api(libs.ktor.client.cio)
207+ api(libs.ktor.server.cio)
208+ api(libs.ktor.server.sse)
209+ api(libs.ktor.server.websockets)
210+
211+ implementation(libs.kotlin.logging)
212+ }
213+ }
214+
215+ commonTest {
216+ dependencies {
217+ implementation(libs.kotlin.test)
218+ implementation(libs.ktor.server.test.host)
219+ implementation(libs.kotlinx.coroutines.test)
220+ implementation(libs.kotlinx.coroutines.debug)
221+ }
222+ }
223+
224+ jvmTest {
225+ dependencies {
226+ implementation(libs.mockk)
227+ }
234228 }
235229 }
236230}
0 commit comments