chore: refactor Gradle config, standardize Kotlin MPP plugin usage, and update dependencies

- Unified plugin application across modules using `alias(libs.plugins.*)` instead of hardcoded IDs.
- Removed redundant JVM/JS source map tasks, improving Gradle and Docker build consistency.
- Updated dependencies, including `logback` and Webpack `copy-webpack-plugin`, and added contextual documentation.
- Added frontend architecture diagram in PlantUML (`docs/01_Architecture/Reference`), standardizing feature-core-shell dependencies.
This commit is contained in:
2026-02-03 22:11:31 +01:00
parent c613acb91d
commit 03e1484dd3
24 changed files with 246 additions and 377 deletions
+14 -14
View File
@@ -2,31 +2,31 @@
// Es enthält nur Interfaces (z. B. `CacheService`) und Datenmodelle,
// aber keine konkrete Implementierung.
plugins {
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinJvm)
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(25))
}
toolchain {
languageVersion.set(JavaLanguageVersion.of(25))
}
}
// Erlaubt die Verwendung der kotlin.time API im gesamten Modul
kotlin {
compilerOptions {
freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime")
}
compilerOptions {
freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime")
}
}
tasks.test {
useJUnitPlatform()
useJUnitPlatform()
}
dependencies {
// Stellt sicher, dass alle Versionen aus der zentralen BOM kommen.
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)
// Stellt sicher, dass alle Versionen aus der zentralen BOM kommen.
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)
}
+24 -27
View File
@@ -1,41 +1,38 @@
// Dieses Modul stellt eine konkrete Implementierung der `cache-api`
// unter Verwendung von Redis als Caching-Backend bereit.
plugins {
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSpring)
// Als Bibliothek benötigt dieses Modul das Spring Boot Plugin nicht.
alias(libs.plugins.spring.dependencyManagement)
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSpring)
// Als Bibliothek benötigt dieses Modul das Spring Boot Plugin nicht.
alias(libs.plugins.spring.dependencyManagement)
}
// Stellt sicher, dass ein normales JAR gebaut wird (Bibliotheks-Modul).
java {
withJavadocJar()
withSourcesJar()
withJavadocJar()
withSourcesJar()
toolchain {
languageVersion.set(JavaLanguageVersion.of(25))
}
}
tasks.test {
useJUnitPlatform()
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(25))
}
useJUnitPlatform()
}
dependencies {
// Stellt sicher, dass alle Versionen aus der zentralen BOM kommen.
api(platform(projects.platform.platformBom))
// Implementiert die provider-agnostische Caching-API.
implementation(projects.backend.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)
testImplementation(libs.kotlin.test)
testImplementation(libs.kotlin.logging.jvm)
testImplementation(libs.logback.classic)
testImplementation(libs.logback.core)
// Stellt sicher, dass alle Versionen aus der zentralen BOM kommen.
api(platform(projects.platform.platformBom))
// Implementiert die provider-agnostische Caching-API.
implementation(projects.backend.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)
testImplementation(libs.kotlin.test)
testImplementation(libs.kotlin.logging.jvm)
testImplementation(libs.logback.classic)
testImplementation(libs.logback.core)
}
@@ -31,28 +31,10 @@ dependencies {
// Resilience (Reactive) - WICHTIG: Reactor-Variante für WebFlux!
implementation(libs.spring.cloud.starter.circuitbreaker.reactor.resilience4j)
implementation(libs.kotlin.logging.jvm)
implementation(libs.logback.classic)
implementation(libs.logback.core)
implementation(libs.jackson.module.kotlin)
implementation(libs.jackson.datatype.jsr310)
implementation(libs.spring.boot.starter.data.redis)
implementation(libs.micrometer.tracing.bridge.brave)
testImplementation(projects.platform.platformTesting)
testImplementation(libs.junit.jupiter.api)
testImplementation(libs.junit.jupiter.engine)
testImplementation(libs.junit.jupiter.params)
testImplementation(libs.junit.platform.launcher)
testImplementation(libs.mockk)
testImplementation(libs.assertj.core)
testImplementation(libs.kotlinx.coroutines.test)
}
tasks.test {
useJUnitPlatform()
}
sourceSets {
@@ -1,34 +1,37 @@
// Dieses Modul ist ein eigenständiger Spring Boot Service, der den
// Zipkin-Server mit seiner UI hostet, um Tracing-Daten zu visualisieren.
plugins {
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSpring)
alias(libs.plugins.spring.boot)
alias(libs.plugins.spring.dependencyManagement)
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSpring)
alias(libs.plugins.spring.boot)
alias(libs.plugins.spring.dependencyManagement)
}
// Konfiguriert die Hauptklasse für das ausführbare JAR.
springBoot {
mainClass.set("at.mocode.infrastructure.monitoring.MonitoringServerApplicationKt")
mainClass.set("at.mocode.infrastructure.monitoring.MonitoringServerApplicationKt")
}
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)
// 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
// Stellt sicher, dass alle Versionen aus der zentralen BOM kommen.
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)
// Logging explizit für Tests erzwingen, um Versionskonflikte zu vermeiden
testImplementation(libs.logback.classic)
testImplementation(libs.logback.core)
}
tasks.test {
useJUnitPlatform()
useJUnitPlatform()
}
@@ -1,45 +1,37 @@
plugins {
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinJpa)
alias(libs.plugins.spring.boot) // Spring Boot Plugin hinzufügen
alias(libs.plugins.spring.dependencyManagement) // Dependency Management für Spring
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinJpa)
alias(libs.plugins.spring.boot) // Spring Boot Plugin hinzufügen
alias(libs.plugins.spring.dependencyManagement) // Dependency Management für Spring
}
// Library module: do not create an executable Spring Boot jar here.
tasks.bootJar {
enabled = false
enabled = false
}
// Ensure a regular jar is produced instead.
tasks.jar {
enabled = true
enabled = true
}
dependencies {
implementation(platform(projects.platform.platformBom))
implementation(projects.core.coreUtils)
implementation(projects.core.coreDomain)
implementation(projects.platform.platformDependencies)
implementation(platform(projects.platform.platformBom))
implementation(projects.core.coreUtils)
implementation(projects.core.coreDomain)
implementation(projects.platform.platformDependencies)
// Spring Boot Database dependencies
implementation(libs.bundles.database.complete)
// Spring Boot Database dependencies
implementation(libs.bundles.database.complete)
// Exposed
implementation(libs.exposed.core)
implementation(libs.exposed.jdbc)
implementation(libs.exposed.dao)
implementation(libs.exposed.java.time)
implementation(libs.exposed.json)
implementation(libs.exposed.kotlin.datetime)
// Exposed
implementation(libs.exposed.core)
implementation(libs.exposed.jdbc)
implementation(libs.exposed.dao)
implementation(libs.exposed.java.time)
implementation(libs.exposed.json)
implementation(libs.exposed.kotlin.datetime)
// Logging
implementation(libs.slf4j.api)
// Testing
testImplementation(projects.platform.platformTesting)
testImplementation(libs.bundles.testing.jvm)
}
tasks.test {
useJUnitPlatform()
// Testing
testImplementation(projects.platform.platformTesting)
}
@@ -1,40 +1,32 @@
plugins {
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSpring)
alias(libs.plugins.spring.boot)
alias(libs.plugins.spring.dependencyManagement)
alias(libs.plugins.kotlinJvm)
alias(libs.plugins.kotlinSpring)
alias(libs.plugins.spring.boot)
alias(libs.plugins.spring.dependencyManagement)
}
// Library module: do not create an executable Spring Boot jar here.
tasks.bootJar {
enabled = false
enabled = false
}
tasks.jar {
enabled = true
enabled = true
}
dependencies {
implementation(platform(projects.platform.platformBom))
implementation(projects.platform.platformDependencies)
implementation(platform(projects.platform.platformBom))
implementation(projects.platform.platformDependencies)
// Spring Security & OAuth2
implementation(libs.spring.boot.starter.security)
implementation(libs.spring.boot.starter.oauth2.resource.server)
implementation(libs.spring.security.oauth2.jose)
// Spring Security & OAuth2
implementation(libs.spring.boot.starter.security)
implementation(libs.spring.boot.starter.oauth2.resource.server)
implementation(libs.spring.security.oauth2.jose)
// Web (for CORS config)
implementation(libs.spring.web)
// Web (for CORS config)
implementation(libs.spring.web)
// Utils
implementation(libs.slf4j.api)
implementation(libs.jackson.module.kotlin)
// Testing
testImplementation(projects.platform.platformTesting)
testImplementation(libs.spring.security.test)
}
tasks.test {
useJUnitPlatform()
// Testing
testImplementation(projects.platform.platformTesting)
testImplementation(libs.spring.security.test)
}