meldestelle/frontend/shared/build.gradle.kts
Stefan Mogeritsch ac5717c912 refactor(build): remove docker-compose hardcoded file, update compose dependencies, and resolve library conflicts
Deleted the unused `compose.hardcoded.yaml` file. Updated Gradle build scripts to resolve issues with Jackson and Resilience4j library bundles by explicitly specifying direct dependencies. Removed the `sqldelight` plugin and related dependencies from `local-db` module. Consolidated `docker-compose.yaml` to standardize restart policies. Adjusted `.env` to include cautions for sensitive data and rechecked Java version comments.
2026-01-08 16:46:40 +01:00

123 lines
3.6 KiB
Plaintext

@file:OptIn(ExperimentalKotlinGradlePluginApi::class, ExperimentalWasmDsl::class)
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinJsCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
/**
* Shared Module: Gemeinsame Libraries und Utilities für alle Client-Features
* KEINE EXECUTABLE - ist eine Library für andere Module
*/
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.kotlinSerialization)
alias(libs.plugins.composeMultiplatform)
alias(libs.plugins.composeCompiler)
}
kotlin {
// Toolchain is now handled centrally in the root build.gradle.kts
val enableWasm = providers.gradleProperty("enableWasm").orNull == "true"
// JVM Target für Desktop
jvm()
// JavaScript Target für Web
js {
browser {
testTask {
enabled = false
}
}
// ...
}
// WASM, nur wenn explizit aktiviert
if (enableWasm) {
@OptIn(ExperimentalWasmDsl::class)
wasmJs { browser() }
}
sourceSets {
commonMain.dependencies {
api(projects.core.coreUtils)
api(projects.core.coreDomain)
api(project(":frontend:core:domain"))
// Kotlinx core dependencies (coroutines, serialization, datetime)
// KORREKTUR: Zugriff auf Bundle korrigiert.
// In libs.versions.toml: [bundles] kotlinx-core = [...]
// Gradle Accessor: libs.bundles.kotlinx.core
// Falls das fehlschlägt, listen wir die Libs einzeln auf, um den Build zu fixen.
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
// HTTP Client
implementation(libs.ktor.client.core)
implementation(libs.ktor.client.contentNegotiation)
implementation(libs.ktor.client.serialization.kotlinx.json)
implementation(libs.ktor.client.logging)
implementation(libs.ktor.client.auth)
// Dependency Injection (Koin)
implementation(libs.koin.core)
implementation(libs.koin.compose)
implementation(libs.koin.compose.viewmodel)
// Network module (provides DI `apiClient`)
implementation(projects.frontend.core.network)
// Compose für shared UI components (common)
// KORREKTUR: Verwendung der korrekten Compose-Dependencies ohne Deprecation-Warnung
implementation("org.jetbrains.compose.runtime:runtime:1.10.0-rc02")
implementation("org.jetbrains.compose.foundation:foundation:1.10.0-rc02")
implementation("org.jetbrains.compose.material3:material3:1.9.0-beta03")
}
commonTest.dependencies {
implementation(libs.kotlin.test)
implementation(libs.kotlinx.coroutines.test)
}
jvmMain.dependencies {
implementation(libs.ktor.client.cio)
}
jsMain.dependencies {
implementation(libs.ktor.client.js)
}
// WASM SourceSet, nur wenn aktiviert
if (enableWasm) {
val wasmJsMain = getByName("wasmJsMain")
wasmJsMain.dependencies {
implementation(libs.ktor.client.js) // WASM verwendet JS-Clients
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
}
}
}
}
// KMP Compile-Optionen
tasks.withType<KotlinCompile> {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_25)
freeCompilerArgs.addAll(
"-opt-in=kotlin.RequiresOptIn"
)
}
}
tasks.withType<KotlinJsCompile>().configureEach {
compilerOptions {
target = "es2015"
}
}