mirror of
https://github.com/AdrianKuta/Tree-Data-Structure.git
synced 2025-10-16 18:22:30 +02:00
116 lines
3.5 KiB
Plaintext
116 lines
3.5 KiB
Plaintext
import org.jetbrains.kotlin.konan.properties.Properties
|
|
|
|
plugins {
|
|
kotlin("multiplatform") version "1.9.20"
|
|
id("org.jetbrains.dokka") version "1.9.20"
|
|
id("com.vanniktech.maven.publish") version "0.34.0"
|
|
signing
|
|
}
|
|
|
|
val PUBLISH_GROUP_ID = "com.github.adriankuta"
|
|
val PUBLISH_ARTIFACT_ID = "tree-structure" // base artifact; KMP will add -jvm, -ios*, etc.
|
|
val PUBLISH_VERSION = "3.1.2"
|
|
|
|
val snapshot: String? by project
|
|
|
|
group = PUBLISH_GROUP_ID
|
|
version = if (snapshot.toBoolean()) "$PUBLISH_VERSION-SNAPSHOT" else PUBLISH_VERSION
|
|
|
|
mavenPublishing {
|
|
// Central Portal + auto release when we call publishAndReleaseToMavenCentral
|
|
publishToMavenCentral(automaticRelease = false)
|
|
signAllPublications()
|
|
|
|
coordinates(PUBLISH_GROUP_ID, PUBLISH_ARTIFACT_ID, version.toString())
|
|
|
|
pom {
|
|
name.set("Tree Data Structure")
|
|
description.set("Simple implementation to store object in tree structure.")
|
|
url.set("https://github.com/AdrianKuta/Tree-Data-Structure")
|
|
|
|
licenses {
|
|
license {
|
|
name.set("MIT License")
|
|
url.set("https://opensource.org/licenses/MIT")
|
|
distribution.set("repo")
|
|
}
|
|
}
|
|
developers {
|
|
developer {
|
|
id.set("AdrianKuta")
|
|
name.set("Adrian Kuta")
|
|
email.set("adrian.kuta93@gmail.com")
|
|
}
|
|
}
|
|
scm {
|
|
url.set("https://github.com/AdrianKuta/Tree-Data-Structure")
|
|
connection.set("scm:git:https://github.com/AdrianKuta/Tree-Data-Structure.git")
|
|
developerConnection.set("scm:git:ssh://git@github.com/AdrianKuta/Tree-Data-Structure.git")
|
|
}
|
|
}
|
|
}
|
|
|
|
// No legacy publishing {} block or s01 repos — Central Portal handles it.
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
java {
|
|
toolchain {
|
|
languageVersion.set(JavaLanguageVersion.of(21))
|
|
}
|
|
}
|
|
kotlin {
|
|
jvmToolchain(21);
|
|
jvm {
|
|
compilations.all {
|
|
kotlinOptions {
|
|
jvmTarget = "21" // <- was "1.8"
|
|
}
|
|
}
|
|
}
|
|
|
|
// JS targets (IR) for publishing
|
|
js(IR) {
|
|
browser()
|
|
nodejs()
|
|
}
|
|
|
|
// iOS targets
|
|
iosX64()
|
|
iosArm64()
|
|
iosSimulatorArm64()
|
|
|
|
// Native host target
|
|
val hostOs = System.getProperty("os.name")
|
|
val isMingwX64 = hostOs.startsWith("Windows")
|
|
val nativeTarget = when {
|
|
hostOs == "Mac OS X" -> macosX64("native")
|
|
hostOs == "Linux" -> linuxX64("native")
|
|
isMingwX64 -> mingwX64("native")
|
|
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
|
|
}
|
|
|
|
sourceSets {
|
|
val commonMain by getting
|
|
val commonTest by getting { dependencies { implementation(kotlin("test")) } }
|
|
val jvmMain by getting { dependencies { implementation(kotlin("script-runtime")) } }
|
|
val jvmTest by getting
|
|
val jsMain by getting
|
|
val jsTest by getting
|
|
val nativeMain by getting
|
|
val nativeTest by getting
|
|
|
|
// Shared iOS source sets
|
|
val iosMain by creating { dependsOn(commonMain) }
|
|
val iosTest by creating { dependsOn(commonTest) }
|
|
val iosX64Main by getting { dependsOn(iosMain) }
|
|
val iosArm64Main by getting { dependsOn(iosMain) }
|
|
val iosSimulatorArm64Main by getting { dependsOn(iosMain) }
|
|
val iosX64Test by getting { dependsOn(iosTest) }
|
|
val iosArm64Test by getting { dependsOn(iosTest) }
|
|
val iosSimulatorArm64Test by getting { dependsOn(iosTest) }
|
|
}
|
|
}
|