import org.jetbrains.compose.desktop.application.dsl.TargetFormat // Minimal desktop shell: single welcome window (Compose Multiplatform). plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.kotlin.compose) alias(libs.plugins.compose.multiplatform) } group = "net.kukuri" version = "0.1.0" kotlin { jvm() sourceSets { jvmMain.dependencies { implementation(compose.desktop.currentOs) implementation(project(":modules:orgflow-ui")) } jvmTest.dependencies { implementation(libs.kotlin.test) implementation(libs.coroutines.test) } } } compose.desktop { application { mainClass = "jp.orgflow.app.desktop.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "kukuri" packageVersion = "1.0.0" } } } val skikoWindowsX64 by configurations.creating val skikoMacosArm64 by configurations.creating val skikoMacosX64 by configurations.creating dependencies { skikoWindowsX64("org.jetbrains.skiko:skiko-awt-runtime-windows-x64:0.9.4.2") skikoMacosArm64("org.jetbrains.skiko:skiko-awt-runtime-macos-arm64:0.9.4.2") skikoMacosX64("org.jetbrains.skiko:skiko-awt-runtime-macos-x64:0.9.4.2") } val desktopFatJar = tasks.register("desktopFatJar") { group = "deployment" dependsOn(tasks.named("jvmJar")) archiveFileName.set("desktop-jvm-${project.version}.jar") destinationDirectory.set(layout.buildDirectory.dir("app")) duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { attributes["Main-Class"] = "jp.orgflow.app.desktop.MainKt" } from(zipTree(tasks.named("jvmJar").get().archiveFile)) from( kotlin.targets.findByName("jvm")!! .compilations.getByName("main").runtimeDependencyFiles!!.files.map { if (it.isDirectory) it else zipTree(it) }, ) { exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "module-info.class") } from( listOf(skikoWindowsX64, skikoMacosArm64, skikoMacosX64).map { cfg -> cfg.map { if (it.isDirectory) it else zipTree(it) } }, ) { exclude("META-INF/**") } }