diff --git a/build.gradle.kts b/build.gradle.kts index e8e8366b..6b134de6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,6 @@ plugins { } subprojects { - // Wende gemeinsame Einstellungen an tasks.withType().configureEach { compilerOptions { diff --git a/clients/app/build.gradle.kts b/clients/app/build.gradle.kts index 11ae438e..565aa52f 100644 --- a/clients/app/build.gradle.kts +++ b/clients/app/build.gradle.kts @@ -18,7 +18,6 @@ group = "at.mocode.clients" version = "1.0.0" kotlin { - val enableWasm = providers.gradleProperty("enableWasm").orNull == "true" jvmToolchain(21) @@ -33,21 +32,6 @@ kotlin { js(IR) { outputModuleName = "web-app" browser { - webpackTask { - mainOutputFileName = "web-app.js" - output.libraryTarget = "commonjs2" - } - - // Development Server konfigurieren - runTask { - mainOutputFileName.set("web-app.js") - } - - // Browser-Tests komplett deaktivieren (Configuration Cache kompatibel) - testTask { - enabled = false - } - commonWebpackConfig { cssSupport { enabled = true } // Webpack-Mode abhängig von Build-Typ @@ -56,7 +40,18 @@ kotlin { else KotlinWebpackConfig.Mode.DEVELOPMENT } - + webpackTask { + mainOutputFileName = "web-app.js" + output.libraryTarget = "commonjs2" + } + // Development Server konfigurieren + runTask { + mainOutputFileName.set("web-app.js") + } + // Browser-Tests komplett deaktivieren (Configuration Cache kompatibel) + testTask { + enabled = false + } } binaries.executable() } @@ -72,21 +67,17 @@ kotlin { applyDefaultHierarchyTemplate() sourceSets { - commonMain.dependencies { // Feature modules implementation(project(":clients:ping-feature")) - // Shared modules implementation(project(":clients:shared:common-ui")) implementation(project(":clients:shared:navigation")) - // Compose dependencies implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material3) implementation(compose.ui) - // ViewModel lifecycle implementation(libs.androidx.lifecycle.viewmodelCompose) } @@ -95,19 +86,14 @@ kotlin { implementation(libs.kotlinx.coroutines.swing) implementation(libs.kotlinx.coroutines.core) } - jsMain.dependencies { implementation(npm("html-webpack-plugin", "5.6.4")) } - if (enableWasm) { - val wasmJsMain by getting { - dependencies { - implementation(npm("html-webpack-plugin", "5.6.4")) - } + wasmJsMain.dependencies { + implementation(npm("html-webpack-plugin", "5.6.4")) } } - commonTest.dependencies { implementation(libs.kotlin.test) } @@ -124,7 +110,6 @@ tasks.withType { } } - // Configure duplicate handling strategy for distribution tasks tasks.withType { duplicatesStrategy = DuplicatesStrategy.EXCLUDE @@ -138,6 +123,7 @@ tasks.withType { tasks.withType { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } + tasks.withType { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } diff --git a/clients/ping-feature/build.gradle.kts b/clients/ping-feature/build.gradle.kts index 98b04ad2..0a1dd7f6 100644 --- a/clients/ping-feature/build.gradle.kts +++ b/clients/ping-feature/build.gradle.kts @@ -15,7 +15,11 @@ version = "1.0.0" kotlin { val enableWasm = providers.gradleProperty("enableWasm").orNull == "true" + + jvmToolchain(21) + jvm() + js { browser { testTask { @@ -31,50 +35,39 @@ kotlin { } } - jvmToolchain(21) - sourceSets { - commonMain { - dependencies { - // Contract from backend - implementation(projects.services.ping.pingApi) - - // UI Kit - implementation(project(":clients:shared:common-ui")) - - // Compose dependencies - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - implementation(compose.ui) - - // Ktor client for HTTP calls - implementation(libs.ktor.client.core) - implementation(libs.ktor.client.contentNegotiation) - implementation(libs.ktor.client.serialization.kotlinx.json) - - // Coroutines and serialization - implementation(libs.kotlinx.coroutines.core) - implementation(libs.kotlinx.serialization.json) - - // ViewModel lifecycle - implementation(libs.androidx.lifecycle.viewmodelCompose) - } + commonMain.dependencies { + // Contract from backend + implementation(projects.services.ping.pingApi) + // UI Kit + implementation(project(":clients:shared:common-ui")) + // Compose dependencies + implementation(compose.runtime) + implementation(compose.foundation) + implementation(compose.material3) + implementation(compose.ui) + // Ktor client for HTTP calls + implementation(libs.ktor.client.core) + implementation(libs.ktor.client.contentNegotiation) + implementation(libs.ktor.client.serialization.kotlinx.json) + // Coroutines and serialization + implementation(libs.kotlinx.coroutines.core) + implementation(libs.kotlinx.serialization.json) + // ViewModel lifecycle + implementation(libs.androidx.lifecycle.viewmodelCompose) } - commonTest { - dependencies { - implementation(libs.kotlin.test) - } + + commonTest.dependencies { + implementation(libs.kotlin.test) } - jvmMain { - dependencies { - implementation(libs.ktor.client.cio) - } + + jvmMain.dependencies { + implementation(libs.ktor.client.cio) } - jsMain { - dependencies { - implementation(libs.ktor.client.js) - } + + jsMain.dependencies { + implementation(libs.ktor.client.js) + } } } diff --git a/clients/shared/common-ui/build.gradle.kts b/clients/shared/common-ui/build.gradle.kts index 080767dd..5ff0e0bd 100644 --- a/clients/shared/common-ui/build.gradle.kts +++ b/clients/shared/common-ui/build.gradle.kts @@ -13,7 +13,11 @@ version = "1.0.0" kotlin { val enableWasm = providers.gradleProperty("enableWasm").orNull == "true" + + jvmToolchain(21) + jvm() + js { browser { testTask { @@ -29,22 +33,16 @@ kotlin { } } - jvmToolchain(21) - sourceSets { - commonMain { - dependencies { - implementation(compose.runtime) - implementation(compose.foundation) - implementation(compose.material3) - implementation(compose.ui) - implementation(compose.components.resources) - } + commonMain.dependencies { + implementation(compose.runtime) + implementation(compose.foundation) + implementation(compose.material3) + implementation(compose.ui) + implementation(compose.components.resources) } - commonTest { - dependencies { - implementation(libs.kotlin.test) - } + commonTest.dependencies { + implementation(libs.kotlin.test) } } } diff --git a/clients/shared/navigation/build.gradle.kts b/clients/shared/navigation/build.gradle.kts index f0ce6658..06442479 100644 --- a/clients/shared/navigation/build.gradle.kts +++ b/clients/shared/navigation/build.gradle.kts @@ -11,10 +11,15 @@ version = "1.0.0" kotlin { val enableWasm = providers.gradleProperty("enableWasm").orNull == "true" + + jvmToolchain(21) + jvm() + js { browser() } + if (enableWasm) { @OptIn(org.jetbrains.kotlin.gradle.ExperimentalWasmDsl::class) wasmJs { @@ -22,18 +27,12 @@ kotlin { } } - jvmToolchain(21) - sourceSets { - commonMain { - dependencies { - // No specific dependencies needed for navigation routes - } + commonMain.dependencies { + // No specific dependencies needed for navigation routes } - commonTest { - dependencies { - implementation(libs.kotlin.test) - } + commonTest.dependencies { + implementation(libs.kotlin.test) } } } diff --git a/core/core-domain/build.gradle.kts b/core/core-domain/build.gradle.kts index 54a70f2f..6ebc60d8 100644 --- a/core/core-domain/build.gradle.kts +++ b/core/core-domain/build.gradle.kts @@ -1,10 +1,11 @@ -// Core domain objects of the Shared kernel plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.kotlinSerialization) } kotlin { + jvmToolchain(21) + jvm { compilerOptions { freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime") @@ -16,51 +17,40 @@ kotlin { } sourceSets { - val commonMain by getting { - dependencies { - // Core dependencies (that aren't included in platform-dependencies) - api(libs.uuid) - // Serialization and date-time for commonMain - api(libs.kotlinx.serialization.json) - api(libs.kotlinx.datetime) - } + commonMain.dependencies { + // Core dependencies (that aren't included in platform-dependencies) + api(libs.uuid) + // Serialization and date-time for commonMain + api(libs.kotlinx.serialization.json) + api(libs.kotlinx.datetime) } - val commonTest by getting { - dependencies { - implementation(libs.kotlin.test) - } + commonTest.dependencies { + implementation(libs.kotlin.test) } - val jsMain by getting { - dependencies { - api(libs.kotlinx.coroutines.core) - } + jsMain.dependencies { + api(libs.kotlinx.coroutines.core) } - val jsTest by getting { - dependencies { - implementation(libs.kotlin.test) - } + jsTest.dependencies { + implementation(libs.kotlin.test) } - val jvmMain by getting { - dependencies { - // Fachliches Domain-Modul: keine technischen Abhängigkeiten hier hinterlegen. - // Falls in Zukunft JVM-spezifische, fachlich neutrale Ergänzungen nötig sind, - // bitte bewusst und minimal hinzufügen. - } + jvmMain.dependencies { + // Fachliches Domain-Modul: keine technischen Abhängigkeiten hier hinterlegen. + // Falls in Zukunft JVM-spezifische, fachlich neutrale Ergänzungen nötig sind, + // bitte bewusst und minimal hinzufügen. } - val jvmTest by getting { - dependencies { -// implementation(kotlin("test-junit5")) - implementation(libs.junit.jupiter.api) - implementation(libs.mockk) - implementation(projects.platform.platformTesting) - implementation(libs.bundles.testing.jvm) - } + jvmTest.dependencies { + // implementation(kotlin("test-junit5")) + implementation(libs.junit.jupiter.api) + implementation(libs.mockk) + implementation(projects.platform.platformTesting) + implementation(libs.bundles.testing.jvm) } + } } diff --git a/core/core-utils/build.gradle.kts b/core/core-utils/build.gradle.kts index a91ff8e3..6a22dc0b 100644 --- a/core/core-utils/build.gradle.kts +++ b/core/core-utils/build.gradle.kts @@ -5,6 +5,8 @@ plugins { } kotlin { + jvmToolchain(21) + // Target platforms jvm { compilerOptions { @@ -17,57 +19,41 @@ kotlin { } sourceSets { - val commonMain by getting { - dependencies { - // Dependency on core-domain module to use its types - api(projects.core.coreDomain) - - // Async support (available for all platforms) - api(libs.kotlinx.coroutines.core) - - // Utilities (multiplatform compatible) - api(libs.bignum) - } + commonMain.dependencies { + // Dependency on core-domain module to use its types + api(projects.core.coreDomain) + // Async support (available for all platforms) + api(libs.kotlinx.coroutines.core) + // Utilities (multiplatform compatible) + api(libs.bignum) } - val commonTest by getting { - dependencies { - implementation(libs.kotlin.test) - } + commonTest.dependencies { + implementation(libs.kotlin.test) } - val jvmMain by getting { - dependencies { - // JVM-specific dependencies - access to central catalog - api(projects.platform.platformDependencies) - - // Database Management (JVM-specific) - api(libs.bundles.exposed) - api(libs.bundles.flyway) - api(libs.hikari.cp) - - // Service Discovery (JVM-specific) - api(libs.spring.cloud.starter.consul.discovery) - - // Logging (JVM-specific) - api(libs.kotlin.logging.jvm) - - // Jakarta Annotation API - api(libs.jakarta.annotation.api) - - // JSON Processing - api(libs.jackson.module.kotlin) - api(libs.jackson.datatype.jsr310) - } + jvmMain.dependencies { + // JVM-specific dependencies - access to central catalog + api(projects.platform.platformDependencies) + // Database Management (JVM-specific) + api(libs.bundles.exposed) + api(libs.bundles.flyway) + api(libs.hikari.cp) + // Service Discovery (JVM-specific) + api(libs.spring.cloud.starter.consul.discovery) + // Logging (JVM-specific) + api(libs.kotlin.logging.jvm) + // Jakarta Annotation API + api(libs.jakarta.annotation.api) + // JSON Processing + api(libs.jackson.module.kotlin) + api(libs.jackson.datatype.jsr310) } - - val jvmTest by getting { - dependencies { - // Testing (JVM-specific) - implementation(projects.platform.platformTesting) - implementation(libs.bundles.testing.jvm) - runtimeOnly(libs.postgresql.driver) - } + jvmTest.dependencies { + // Testing (JVM-specific) + implementation(projects.platform.platformTesting) + implementation(libs.bundles.testing.jvm) + runtimeOnly(libs.postgresql.driver) } } } diff --git a/infrastructure/auth/auth-client/build.gradle.kts b/infrastructure/auth/auth-client/build.gradle.kts index 60da1b20..8772417b 100644 --- a/infrastructure/auth/auth-client/build.gradle.kts +++ b/infrastructure/auth/auth-client/build.gradle.kts @@ -28,24 +28,18 @@ java { dependencies { // Stellt sicher, dass alle Versionen aus der zentralen BOM kommen. implementation(platform(projects.platform.platformBom)) - // Stellt gemeinsame Abhängigkeiten wie Coroutines und Logging bereit. implementation(projects.platform.platformDependencies) - // Stellt Domänenobjekte und technische Utilities bereit. implementation(projects.core.coreUtils) - // Spring Security für OAuth2-Client-Funktionalität und JWT-Verarbeitung. implementation(libs.spring.boot.starter.oauth2.client) implementation(libs.spring.boot.starter.security) implementation(libs.spring.security.oauth2.jose) - // Bibliothek zur einfachen Handhabung von JWTs. implementation(libs.auth0.java.jwt) - // JSON-Serialization für konsistente API-Datenverarbeitung. implementation(libs.kotlinx.serialization.json) - // Stellt alle Test-Abhängigkeiten gebündelt bereit. testImplementation(projects.platform.platformTesting) } diff --git a/infrastructure/auth/auth-server/build.gradle.kts b/infrastructure/auth/auth-server/build.gradle.kts index e4ebfe34..c481a8a1 100644 --- a/infrastructure/auth/auth-server/build.gradle.kts +++ b/infrastructure/auth/auth-server/build.gradle.kts @@ -23,39 +23,28 @@ springBoot { dependencies { // Stellt sicher, dass alle Versionen aus der zentralen BOM kommen. implementation(platform(projects.platform.platformBom)) - // Stellt gemeinsame Abhängigkeiten bereit. implementation(projects.platform.platformDependencies) - // Nutzt die Client-Logik für die Kommunikation mit Keycloak. implementation(projects.infrastructure.auth.authClient) - // Spring Boot Starter für einen Web-Service. // OPTIMIERUNG: Verwendung des `spring-boot-essentials`-Bundles. implementation(libs.bundles.spring.boot.essentials) - // Spring Security für die Absicherung des Servers. implementation(libs.spring.boot.starter.security) implementation(libs.spring.boot.starter.oauth2.resource.server) - // Keycloak Admin Client zur Verwaltung von Benutzern und Realms. implementation(libs.keycloak.admin.client) - // API-Dokumentation mit OpenAPI/Swagger. implementation(libs.springdoc.openapi.starter.webmvc.ui) - // Monitoring und Metriken für Production-Readiness. implementation(libs.bundles.monitoring.client) - // JSON-Serialization für API-Responses. implementation(libs.kotlinx.serialization.json) - // Stellt alle Test-Abhängigkeiten gebündelt bereit. testImplementation(projects.platform.platformTesting) - // Testcontainers für Integration Tests testImplementation(libs.bundles.testcontainers) - // SLF4J provider for tests testImplementation(libs.logback.classic) testImplementation(libs.logback.core) diff --git a/infrastructure/cache/cache-api/build.gradle.kts b/infrastructure/cache/cache-api/build.gradle.kts index 146569e9..b2a5f3b9 100644 --- a/infrastructure/cache/cache-api/build.gradle.kts +++ b/infrastructure/cache/cache-api/build.gradle.kts @@ -27,7 +27,6 @@ dependencies { api(platform(projects.platform.platformBom)) // Stellt gemeinsame Abhängigkeiten wie Logging bereit und exportiert sie für Konsumenten der API. api(projects.platform.platformDependencies) - // Stellt Test-Abhängigkeiten bereit. testImplementation(projects.platform.platformTesting) } diff --git a/infrastructure/cache/redis-cache/build.gradle.kts b/infrastructure/cache/redis-cache/build.gradle.kts index 28db35be..fd0b6a79 100644 --- a/infrastructure/cache/redis-cache/build.gradle.kts +++ b/infrastructure/cache/redis-cache/build.gradle.kts @@ -26,14 +26,11 @@ java { dependencies { // Stellt sicher, dass alle Versionen aus der zentralen BOM kommen. api(platform(projects.platform.platformBom)) - // Implementiert die provider-agnostische Caching-API. implementation(projects.infrastructure.cache.cacheApi) - // OPTIMIERUNG: Verwendung des `redis-cache`-Bundles aus libs.versions.toml. // Dieses Bundle enthält Spring Data Redis, Lettuce und Jackson-Module. implementation(libs.bundles.redis.cache) - // Stellt alle Test-Abhängigkeiten gebündelt bereit. testImplementation(projects.platform.platformTesting) testImplementation(libs.bundles.testing.jvm) diff --git a/infrastructure/event-store/event-store-api/build.gradle.kts b/infrastructure/event-store/event-store-api/build.gradle.kts index 9e62ab13..86270534 100644 --- a/infrastructure/event-store/event-store-api/build.gradle.kts +++ b/infrastructure/event-store/event-store-api/build.gradle.kts @@ -27,17 +27,14 @@ dependencies { // === Core Dependencies === // Stellt sicher, dass alle Versionen aus der zentralen BOM kommen implementation(platform(projects.platform.platformBom)) - // Abhängigkeit zu den Core-Modulen, um auf Domänenobjekte (Events) // und technische Hilfsklassen zugreifen zu können api(projects.core.coreDomain) implementation(projects.core.coreUtils) - // === Test Dependencies === // Stellt alle Test-Abhängigkeiten gebündelt bereit testImplementation(projects.platform.platformTesting) testImplementation(libs.bundles.testing.jvm) - // Für erweiterte Test-Unterstützung bei API-Tests testImplementation(libs.kotlinx.coroutines.test) } @@ -46,7 +43,6 @@ dependencies { // Optimiert die Test-Ausführung tasks.test { useJUnitPlatform() - // Parallelisierung für bessere Performance maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1) } diff --git a/infrastructure/event-store/redis-event-store/build.gradle.kts b/infrastructure/event-store/redis-event-store/build.gradle.kts index 00364f18..bd43d2ef 100644 --- a/infrastructure/event-store/redis-event-store/build.gradle.kts +++ b/infrastructure/event-store/redis-event-store/build.gradle.kts @@ -20,31 +20,24 @@ dependencies { // === Core Dependencies === // Stellt sicher, dass alle Versionen aus der zentralen BOM kommen implementation(platform(projects.platform.platformBom)) - // Implementiert die provider-agnostische Event-Store-API api(projects.infrastructure.eventStore.eventStoreApi) - // Benötigt Zugriff auf Core-Module für Domänen-Events und Utilities implementation(projects.core.coreDomain) implementation(projects.core.coreUtils) - // === Redis & Spring Dependencies === // OPTIMIERUNG: Wiederverwendung des `redis-cache`-Bundles, da es die // gleichen Technologien (Spring Data Redis, Lettuce, Jackson) verwendet implementation(libs.bundles.redis.cache) - // Stellt Jakarta Annotations bereit (z. B. @PostConstruct), die von Spring verwendet werden implementation(libs.jakarta.annotation.api) - // Für Kotlin-spezifische Coroutines-Integration mit Spring implementation(libs.kotlinx.coroutines.reactor) - // === Test Dependencies === // Fügt JUnit, Mockk, AssertJ etc. für die Tests hinzu testImplementation(projects.platform.platformTesting) testImplementation(libs.bundles.testing.jvm) testImplementation(libs.bundles.testcontainers) - // Zusätzliche Test-Dependencies für erweiterte Event-Store-Tests testImplementation(libs.kotlinx.serialization.json) testImplementation(libs.reactor.test) @@ -65,10 +58,8 @@ tasks.jar { // Optimiert die Test-Ausführung tasks.test { useJUnitPlatform() - // Verbesserte Test-Performance für Testcontainer systemProperty("testcontainers.reuse.enable", "true") - // Parallelisierung für bessere Performance maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1) } diff --git a/infrastructure/gateway/build.gradle.kts b/infrastructure/gateway/build.gradle.kts index bc77be13..9d04c68a 100644 --- a/infrastructure/gateway/build.gradle.kts +++ b/infrastructure/gateway/build.gradle.kts @@ -31,7 +31,6 @@ dependencies { implementation(projects.core.coreUtils) // Stellt gemeinsame Abhängigkeiten bereit. implementation(projects.platform.platformDependencies) - // Stellt die Spring Cloud Gateway und Consul Discovery Abhängigkeiten bereit implementation(libs.bundles.spring.cloud.gateway) // Circuit Breaker (Resilience4j) für Gateway Filter - optimiert mit libs reference @@ -44,21 +43,17 @@ dependencies { implementation(libs.spring.boot.starter.webflux) // Spring Security (WebFlux) – benötigt für SecurityWebFilterChain-Konfiguration implementation(libs.spring.boot.starter.security) - // Bindet die wiederverwendbare Logik zur JWT-Validierung ein. implementation(projects.infrastructure.auth.authClient) - // Bindet die wiederverwendbare Logik für Metriken und Tracing ein. implementation(projects.infrastructure.monitoring.monitoringClient) // Explizite Actuator-Abhängigkeit für Health Indicators (benötigt für GatewayHealthIndicator) // Obwohl bereits im monitoring-client Bundle, wird durch 'implementation' nicht transitiv verfügbar implementation(libs.spring.boot.starter.actuator) - // Logback-Abhängigkeiten - Versionen werden von Spring Boot BOM verwaltet implementation("ch.qos.logback:logback-classic") implementation("ch.qos.logback:logback-core") implementation("org.slf4j:slf4j-api") - // Stellt alle Test-Abhängigkeiten gebündelt bereit. testImplementation(projects.platform.platformTesting) testImplementation(libs.bundles.testing.jvm) @@ -67,7 +62,6 @@ dependencies { testImplementation("ch.qos.logback:logback-core") testImplementation("org.slf4j:slf4j-api") // Redundante Security-Abhängigkeit im Testkontext entfernt (bereits durch platform-testing abgedeckt) - } tasks.test { diff --git a/infrastructure/messaging/messaging-client/build.gradle.kts b/infrastructure/messaging/messaging-client/build.gradle.kts index 73ce80ad..54d43d40 100644 --- a/infrastructure/messaging/messaging-client/build.gradle.kts +++ b/infrastructure/messaging/messaging-client/build.gradle.kts @@ -28,10 +28,8 @@ dependencies { implementation(projects.platform.platformDependencies) // Baut auf der zentralen Kafka-Konfiguration auf und erbt deren Abhängigkeiten. implementation(projects.infrastructure.messaging.messagingConfig) - // Fügt die reaktive Kafka-Implementierung hinzu (Project Reactor). implementation(libs.reactor.kafka) - // Stellt alle Test-Abhängigkeiten gebündelt bereit. testImplementation(projects.platform.platformTesting) } diff --git a/infrastructure/messaging/messaging-config/build.gradle.kts b/infrastructure/messaging/messaging-config/build.gradle.kts index f70a445d..85b2531b 100644 --- a/infrastructure/messaging/messaging-config/build.gradle.kts +++ b/infrastructure/messaging/messaging-config/build.gradle.kts @@ -26,12 +26,10 @@ dependencies { api(platform(projects.platform.platformBom)) // Stellt gemeinsame Abhängigkeiten bereit. api(projects.platform.platformDependencies) - // OPTIMIERUNG: Verwendung des `kafka-config`-Bundles. // `api` wird verwendet, damit der `messaging-client` diese Konfigurationen // und Abhängigkeiten (wie Jackson) direkt nutzen kann. api(libs.bundles.kafka.config) - // Stellt alle Test-Abhängigkeiten gebündelt bereit. testImplementation(projects.platform.platformTesting) } diff --git a/infrastructure/monitoring/monitoring-client/build.gradle.kts b/infrastructure/monitoring/monitoring-client/build.gradle.kts index 5a58df4f..6b81d860 100644 --- a/infrastructure/monitoring/monitoring-client/build.gradle.kts +++ b/infrastructure/monitoring/monitoring-client/build.gradle.kts @@ -7,16 +7,12 @@ plugins { alias(libs.plugins.spring.dependencyManagement) } - - dependencies { // Stellt sicher, dass alle Versionen aus der zentralen BOM kommen. implementation(platform(projects.platform.platformBom)) // Stellt gemeinsame Abhängigkeiten bereit. implementation(projects.platform.platformDependencies) - // OPTIMIERUNG: Verwendung des `monitoring-client`-Bundles. // Es enthält Spring Boot Actuator, Micrometer Prometheus und Zipkin Tracing. implementation(libs.bundles.monitoring.client) - } diff --git a/infrastructure/monitoring/monitoring-server/build.gradle.kts b/infrastructure/monitoring/monitoring-server/build.gradle.kts index 889915f0..3c8b95c4 100644 --- a/infrastructure/monitoring/monitoring-server/build.gradle.kts +++ b/infrastructure/monitoring/monitoring-server/build.gradle.kts @@ -17,16 +17,13 @@ dependencies { implementation(platform(projects.platform.platformBom)) // Stellt gemeinsame Abhängigkeiten bereit. implementation(projects.platform.platformDependencies) - // Spring Boot Starter für einen einfachen Web-Service. implementation(libs.spring.boot.starter.web) implementation(libs.spring.boot.starter.actuator) - // Abhängigkeiten für den Zipkin-Server (UI ist via zipkin-lens bereits enthalten). implementation(libs.zipkin.server) // Prometheus client für Zipkin Metriken implementation(libs.micrometer.prometheus) - // Stellt alle Test-Abhängigkeiten gebündelt bereit. testImplementation(projects.platform.platformTesting) testImplementation(libs.logback.classic) // SLF4J provider for tests diff --git a/platform/platform-bom/build.gradle.kts b/platform/platform-bom/build.gradle.kts index 6fc8e7f0..1040e54c 100644 --- a/platform/platform-bom/build.gradle.kts +++ b/platform/platform-bom/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { api(platform(libs.spring.cloud.dependencies)) // NEU: Spring Cloud BOM hinzugefügt api(platform(libs.kotlin.bom)) api(platform(libs.kotlinx.coroutines.bom)) - // `constraints` erzwingt spezifische Versionen für einzelne Bibliotheken. // Alle Versionen werden sicher aus `libs.versions.toml` bezogen. constraints { @@ -35,11 +34,9 @@ dependencies { api(libs.jakarta.annotation.api) api(libs.auth0.java.jwt) api(libs.logback.classic) - // --- Spring & SpringDoc --- api(libs.springdoc.openapi.starter.common) api(libs.springdoc.openapi.starter.webmvc.ui) - // --- Database & Persistence --- api(libs.bundles.exposed) api(libs.bundles.flyway) @@ -47,15 +44,12 @@ dependencies { api(libs.hikari.cp) api(libs.h2.driver) api(libs.lettuce.core) - // --- Kotlinx Libraries --- api(libs.kotlinx.serialization.json) api(libs.kotlinx.datetime) - // --- Jackson Modules --- api(libs.jackson.module.kotlin) api(libs.jackson.datatype.jsr310) - // --- Testcontainers --- api(libs.bundles.testcontainers) } diff --git a/platform/platform-dependencies/build.gradle.kts b/platform/platform-dependencies/build.gradle.kts index 6ba4bf6e..eff154d7 100644 --- a/platform/platform-dependencies/build.gradle.kts +++ b/platform/platform-dependencies/build.gradle.kts @@ -8,7 +8,6 @@ plugins { dependencies { // Importiert die zentrale BOM, um konsistente Versionen zu gewährleisten. api(platform(projects.platform.platformBom)) - // Stellt die wichtigsten Kotlin(x)-Bibliotheken via `api` bereit, // damit jedes Modul, das von `platform-dependencies` abhängt, diese automatisch erhält. api(libs.kotlinx.coroutines.core) diff --git a/platform/platform-testing/build.gradle.kts b/platform/platform-testing/build.gradle.kts index 3621020d..68285223 100644 --- a/platform/platform-testing/build.gradle.kts +++ b/platform/platform-testing/build.gradle.kts @@ -7,15 +7,12 @@ plugins { dependencies { // Importiert die zentrale BOM für konsistente Versionen. api(platform(projects.platform.platformBom)) - // Diese Bundles sind in `libs.versions.toml` definiert. api(libs.bundles.testing.jvm) api(libs.bundles.testcontainers) - // Macht Kafka- und Reactor-Test-Bibliotheken verfügbar api(libs.testcontainers.kafka) api(libs.reactor.test) - // Stellt Spring Boot Test-Abhängigkeiten und die H2-Datenbank für Tests bereit. api(libs.spring.boot.starter.test) api(libs.h2.driver) diff --git a/services/events/events-api/build.gradle.kts b/services/events/events-api/build.gradle.kts index 7c46a59b..80dda1af 100644 --- a/services/events/events-api/build.gradle.kts +++ b/services/events/events-api/build.gradle.kts @@ -4,7 +4,6 @@ plugins { alias(libs.plugins.kotlin.serialization) alias(libs.plugins.ktor) application - // KORREKTUR 1: Dieses Plugin hinzufügen, um die Spring-BOM zu aktivieren. alias(libs.plugins.spring.dependencyManagement) } @@ -16,18 +15,15 @@ application { dependencies { // KORREKTUR 2: Die Spring-Boot-BOM hier explizit als Plattform deklarieren. api(platform(libs.spring.boot.dependencies)) - // Bestehende Abhängigkeiten implementation(projects.platform.platformDependencies) implementation(projects.events.eventsDomain) implementation(projects.events.eventsApplication) implementation(projects.core.coreDomain) implementation(projects.core.coreUtils) - // Spring dependencies (jetzt mit korrekter Version aus der BOM) implementation(libs.spring.web) implementation(libs.springdoc.openapi.starter.common) - // Ktor Server implementation(libs.ktor.server.core) implementation(libs.ktor.server.netty) diff --git a/services/ping/ping-service/build.gradle.kts b/services/ping/ping-service/build.gradle.kts index 10161ec6..14c61d3a 100644 --- a/services/ping/ping-service/build.gradle.kts +++ b/services/ping/ping-service/build.gradle.kts @@ -33,51 +33,39 @@ dependencies { implementation(platform(projects.platform.platformBom)) // Provide common Kotlin dependencies (coroutines, serialization, logging) implementation(projects.platform.platformDependencies) - // Contract module for type-safe DTOs and API interface implementation(projects.services.ping.pingApi) - // Monitoring client: tracing + zipkin + defaults implementation(projects.infrastructure.monitoring.monitoringClient) - // === Core Spring Boot Dependencies === // Web starter for REST endpoints implementation(libs.spring.boot.starter.web) // Jackson Kotlin module for data classes and Kotlin features implementation(libs.jackson.module.kotlin) - // Kotlin reflection for Spring Boot Kotlin serialization implementation("org.jetbrains.kotlin:kotlin-reflect") - // Validation for request/response validation implementation(libs.spring.boot.starter.validation) - // Actuator for health checks and metrics implementation(libs.spring.boot.starter.actuator) - // === Service Discovery === // Spring Cloud Consul for service registration and discovery implementation(libs.spring.cloud.starter.consul.discovery) - // === Caching === // Caffeine cache for Spring Cloud LoadBalancer (resolves production cache warning) implementation("com.github.ben-manes.caffeine:caffeine") implementation("org.springframework:spring-context-support") - // === Resilience & Fault Tolerance === // Resilience4j Circuit Breaker for fault tolerance implementation(libs.resilience4j.spring.boot3) implementation(libs.resilience4j.reactor) implementation(libs.spring.boot.starter.aop) - // === Monitoring & Metrics === // Micrometer for metrics collection and Prometheus integration implementation(libs.micrometer.prometheus) - // === Documentation === // OpenAPI 3 documentation generation implementation(libs.springdoc.openapi.starter.webmvc.ui) - // === Testing Dependencies === // Platform testing utilities testImplementation(projects.platform.platformTesting)