meldestelle/client/composeApp/build.gradle.kts
2025-09-23 11:36:12 +02:00

112 lines
3.5 KiB
Plaintext

import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.composeMultiplatform)
alias(libs.plugins.composeCompiler)
alias(libs.plugins.composeHotReload)
}
// Project version configuration
version = "1.0.0"
group = "at.mocode"
kotlin {
jvm()
js {
browser()
binaries.executable()
}
@OptIn(ExperimentalWasmDsl::class)
wasmJs {
browser()
binaries.executable()
}
sourceSets {
commonMain.dependencies {
// Core Compose Dependencies - minimiert für kleinere Bundle-Größe
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
// UiToolingPreview nur für Development, nicht für Production WASM
// implementation(compose.components.uiToolingPreview)
implementation(compose.components.uiToolingPreview)
implementation(libs.androidx.lifecycle.viewmodelCompose)
implementation(libs.androidx.lifecycle.runtimeCompose)
// HTTP client dependencies for ping-service - optimiert
implementation(libs.ktor.client.core)
implementation(libs.ktor.client.contentNegotiation)
implementation(libs.ktor.client.serialization.kotlinx.json)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.json)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
jvmMain.dependencies {
implementation(compose.desktop.currentOs)
implementation(libs.kotlinx.coroutines.swing)
implementation(libs.ktor.client.cio)
}
jsMain.dependencies {
implementation(libs.ktor.client.js)
}
wasmJsMain.dependencies {
implementation(libs.ktor.client.js)
}
}
}
compose.desktop {
application {
mainClass = "at.mocode.MainKt"
nativeDistributions {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
packageName = "Meldestelle"
packageVersion = "1.0.0"
// Application metadata
description = "Pferdesport Meldestelle System - Client Application"
copyright = "© 2025 Meldestelle Project"
vendor = "at.mocode"
// Platform-specific configurations
linux {
iconFile.set(project.file("src/commonMain/resources/icon.png"))
packageName = "meldestelle"
debMaintainer = "stefan@mocode.at"
menuGroup = "Office"
}
windows {
iconFile.set(project.file("src/commonMain/resources/icon.ico"))
menuGroup = "Meldestelle"
upgradeUuid = "61DAB35E-17CB-43B8-8A72-39876CF0E021"
}
macOS {
iconFile.set(project.file("src/commonMain/resources/icon.icns"))
bundleID = "at.mocode.meldestelle"
packageBuildVersion = "1.0.0"
packageVersion = "1.0.0"
}
}
buildTypes.release.proguard {
configurationFiles.from(project.file("compose-desktop.pro"))
}
}
}