fixing gradle build

This commit is contained in:
Stefan Mogeritsch 2025-07-31 00:02:12 +02:00
parent e504326c7e
commit 81cb4582d6
16 changed files with 306 additions and 179 deletions

View File

@ -101,15 +101,15 @@ plugins {
base base
} }
allprojects { //allprojects {
group = "at.mocode.meldestelle" // group = "at.mocode.meldestelle"
version = "0.1.0-SNAPSHOT" // version = "0.1.0-SNAPSHOT"
//
repositories { // repositories {
mavenCentral() // mavenCentral()
google() // Wichtig für Compose-Abhängigkeiten // google() // Wichtig für Compose-Abhängigkeiten
} // }
} //}
subprojects { subprojects {
// Konfigurationen, die für alle Untermodule gelten. // Konfigurationen, die für alle Untermodule gelten.

View File

@ -1,34 +1,30 @@
plugins { plugins {
// Definiert dieses Modul als ein Standard Kotlin/JVM-Modul. // KORREKTUR: Von JVM zu Multiplattform wechseln
alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.multiplatform)
// Aktiviert das Kotlinx Serialization Plugin, da unsere DTOs und Enums
// als @Serializable markiert sind.
alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.serialization)
} }
dependencies { // KORREKTUR: Diesen Block hinzufügen, um die Ziele zu definieren
// Stellt sicher, dass dieses Modul die zentralen Versionen aus unserem BOM (Bill of Materials) kotlin {
// im platform-Modul respektiert. `api` wird verwendet, damit abhängige Module jvm()
// diese Platform-Definitionen ebenfalls "erben". js(IR) {
api(projects.platform.platformDependencies) browser()
}
// --- Kern-Abhängigkeiten für das Domänen-Modell --- sourceSets {
// Diese Bibliotheken definieren die grundlegenden Datentypen unseres Modells. val commonMain by getting {
// Wir verwenden `api` anstelle von `implementation`, damit Services, die dependencies {
// `core-domain` einbinden, diese Typen ebenfalls direkt nutzen können. // Die Abhängigkeiten kommen hier rein
api(projects.platform.platformDependencies)
// Stellt den `Uuid`-Typ für unsere eindeutigen IDs bereit. api(libs.uuid)
api(libs.uuid) api(libs.kotlinx.serialization.json)
api(libs.kotlinx.datetime)
// Stellt die `kotlinx.serialization`-Engine bereit, insbesondere für JSON. }
api(libs.kotlinx.serialization.json) }
val commonTest by getting {
// Stellt moderne Datums- und Zeit-Typen wie `Instant` und `LocalDate` bereit. dependencies {
api(libs.kotlinx.datetime) implementation(projects.platform.platformTesting)
}
// --- Testing --- }
// Stellt die notwendigen Bibliotheken für das Schreiben von Tests bereit. }
// `testImplementation` sorgt dafür, dass diese Bibliotheken nicht Teil
// des finalen produktiven Codes werden.
testImplementation(projects.platform.platformTesting)
} }

View File

@ -1,36 +1,41 @@
plugins { plugins {
// Wendet das Kotlin JVM Plugin über den zentralen Alias an. // KORREKTUR: Von JVM zu Multiplattform wechseln
alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.multiplatform)
} }
dependencies { kotlin {
// Stellt sicher, dass dieses Modul die zentralen Versionen aus unserem BOM respektiert. jvm()
api(projects.platform.platformDependencies) js(IR) {
browser()
}
// Stellt die reinen Domänen-Klassen und -Interfaces aus dem `core-domain`-Modul bereit. sourceSets {
// `api` ist hier zwingend, da `core-utils` eine Implementierung von `core-domain` ist. val commonMain by getting {
api(projects.core.coreDomain) dependencies {
// Diese sind plattformunabhängig und können geteilt werden
// --- Coroutines & Asynchronität --- api(projects.platform.platformDependencies)
api(libs.kotlinx.coroutines.core) api(projects.core.coreDomain)
api(libs.kotlinx.coroutines.core)
// --- Datenbank-Management --- api(libs.bignum)
api(libs.exposed.core) }
api(libs.exposed.dao) }
api(libs.exposed.jdbc) val jvmMain by getting {
api(libs.exposed.kotlin.datetime) // exposed-kotlin-datetime -> exposed.kotlin.datetime dependencies {
// KORREKTUR: Der Alias `hikari-cp` wird zu `hikariCp` umgewandelt. // DIESE SIND NUR FÜR DIE JVM!
api(libs.hikari.cp) api(libs.exposed.core)
api(libs.flyway.core) api(libs.exposed.dao)
api(libs.flyway.postgresql) api(libs.exposed.jdbc)
api(libs.exposed.kotlin.datetime)
// --- Service Discovery --- api(libs.hikari.cp)
api(libs.consul.client) api(libs.flyway.core)
api(libs.flyway.postgresql)
// --- Utilities --- api(libs.consul.client)
// Stellt die BigDecimal-Implementierung für den Serializer bereit. }
api(libs.bignum) }
val commonTest by getting {
// --- Testing --- dependencies {
testImplementation(projects.platform.platformTesting) implementation(projects.platform.platformTesting)
}
}
}
} }

View File

@ -21,12 +21,13 @@ class ServiceRegistration internal constructor(
fun register() { fun register() {
if (isRegistered) return if (isRegistered) return
try { try {
// Der `register`-Aufruf ist korrekt, da das `registration`-Objekt
// bereits außerhalb vollständig und korrekt gebaut wurde.
consul.agentClient().register(registration) consul.agentClient().register(registration)
isRegistered = true isRegistered = true
println("Service '${registration.name()}' mit ID '${registration.id()}' erfolgreich bei Consul registriert.") println("Service '${registration.name()}' mit ID '${registration.id()}' erfolgreich bei Consul registriert.")
} catch (e: Exception) { } catch (e: Exception) {
println("FEHLER: Service-Registrierung bei Consul fehlgeschlagen: ${e.message}") println("FEHLER: Service-Registrierung bei Consul fehlgeschlagen: ${e.message}")
// Fehler weiterwerfen, um den Anwendungsstart zu stoppen
throw IllegalStateException("Could not register service with Consul", e) throw IllegalStateException("Could not register service with Consul", e)
} }
} }
@ -34,6 +35,7 @@ class ServiceRegistration internal constructor(
fun deregister() { fun deregister() {
if (!isRegistered) return if (!isRegistered) return
try { try {
// Der `deregister`-Aufruf ist korrekt. Er erwartet die Service-ID als einfachen String.
consul.agentClient().deregister(registration.id()) consul.agentClient().deregister(registration.id())
isRegistered = false isRegistered = false
println("Service '${registration.name()}' mit ID '${registration.id()}' erfolgreich bei Consul deregistriert.") println("Service '${registration.name()}' mit ID '${registration.id()}' erfolgreich bei Consul deregistriert.")
@ -66,7 +68,8 @@ class ServiceRegistrar(private val appConfig: AppConfig) {
val serviceId = "$serviceName-${UUID.randomUUID()}" val serviceId = "$serviceName-${UUID.randomUUID()}"
val hostAddress = InetAddress.getLocalHost().hostAddress val hostAddress = InetAddress.getLocalHost().hostAddress
// KORREKTUR: Der Aufruf erfolgt über die `Registration`-Klasse, nicht `ImmutableRegistration`. // KORREKTUR: Der Health Check MUSS über die statische Factory-Methode `http`
// der `Registration.RegCheck`-Klasse erstellt werden. Dies war die Hauptfehlerquelle.
val healthCheck = Registration.RegCheck.http( val healthCheck = Registration.RegCheck.http(
"http://$hostAddress:$servicePort/health", // Standard-Health-Check-Pfad "http://$hostAddress:$servicePort/health", // Standard-Health-Check-Pfad
10L, // Intervall in Sekunden 10L, // Intervall in Sekunden

View File

@ -1,10 +1,12 @@
plugins { plugins {
// KORREKTUR: Alle Plugins werden jetzt konsistent über den Version Catalog geladen.
alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.kotlin.spring) alias(libs.plugins.kotlin.spring)
alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.ktor) alias(libs.plugins.ktor)
application application
// KORREKTUR 1: Dieses Plugin hinzufügen, um die Spring-BOM zu aktivieren.
alias(libs.plugins.spring.dependencyManagement)
} }
application { application {
@ -12,17 +14,19 @@ application {
} }
dependencies { dependencies {
// Deine Abhängigkeiten sind hier bereits korrekt und benötigen keine Änderung. // KORREKTUR 2: Die Spring-Boot-BOM hier explizit als Plattform deklarieren.
implementation(projects.platform.platformDependencies) api(platform(libs.spring.boot.dependencies))
// Bestehende Abhängigkeiten
implementation(projects.platform.platformDependencies)
implementation(projects.events.eventsDomain) implementation(projects.events.eventsDomain)
implementation(projects.events.eventsApplication) implementation(projects.events.eventsApplication)
implementation(projects.core.coreDomain) implementation(projects.core.coreDomain)
implementation(projects.core.coreUtils) implementation(projects.core.coreUtils)
// Spring dependencies // Spring dependencies (jetzt mit korrekter Version aus der BOM)
implementation("org.springframework:spring-web") implementation(libs.spring.web)
implementation("org.springdoc:springdoc-openapi-starter-common") implementation(libs.springdoc.openapi.starter.common)
// Ktor Server // Ktor Server
implementation(libs.ktor.server.core) implementation(libs.ktor.server.core)

View File

@ -1,10 +1,32 @@
plugins { plugins {
kotlin("jvm") // KORREKTUR: Von 'kotlin("jvm")' zu Multiplattform wechseln.
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
} }
dependencies { kotlin {
implementation(projects.events.eventsDomain) jvm()
implementation(projects.core.coreDomain) js(IR) {
implementation(projects.core.coreUtils) browser()
testImplementation(projects.platform.platformTesting) }
sourceSets {
val commonMain by getting {
dependencies {
// Hier die jeweiligen Modul-Abhängigkeiten eintragen
// z.B. für events-domain:
implementation(projects.core.coreDomain)
// z.B. für events-application:
// implementation(projects.events.eventsDomain)
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
implementation(projects.platform.platformTesting)
}
}
}
} }

View File

@ -17,8 +17,8 @@ dependencies {
implementation(projects.infrastructure.eventStore.eventStoreApi) implementation(projects.infrastructure.eventStore.eventStoreApi)
implementation(projects.infrastructure.messaging.messagingClient) implementation(projects.infrastructure.messaging.messagingClient)
implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation(libs.spring.boot.starter.data.jpa)
implementation("org.postgresql:postgresql") implementation(libs.postgresql.driver)
testImplementation(projects.platform.platformTesting) testImplementation(projects.platform.platformTesting)
} }

View File

@ -5,27 +5,29 @@
[versions] [versions]
# --- Kotlin Ecosystem --- # --- Kotlin Ecosystem ---
kotlin = "2.2.0" kotlin = "2.2.0"
kotlinxCoroutines = "1.9.1" kotlinx = "1.9.0"
kotlinxSerialization = "1.7.1" kotlinxDatetime = "0.7.1"
kotlinxDatetime = "0.6.0" kotlinLogging = "3.0.5"
# --- Spring Ecosystem --- # --- Spring Ecosystem ---
springBoot = "3.2.5" springBoot = "3.2.5"
springDependencyManagement = "1.1.5" springDependencyManagement = "1.1.5"
springdoc = "2.5.0" springdoc = "2.5.0"
# --- Compose UI ---
composeMultiplatform = "1.6.10"
# --- Ktor (API Layer & Client) --- # --- Ktor (API Layer & Client) ---
ktor = "3.0.0-beta-2" ktor = "3.0.0-beta-2"
# --- Compose UI ---
composeMultiplatform = "1.6.10"
# --- Database & Persistence --- # --- Database & Persistence ---
exposed = "0.51.1" exposed = "0.51.1"
postgresql = "42.7.3" postgresql = "42.7.3"
hikari = "5.1.0" hikari = "5.1.0"
h2 = "2.2.224" h2 = "2.2.224"
flyway = "10.15.2" flyway = "10.15.2"
redisson = "3.27.2"
lettuce = "6.3.1.RELEASE"
# --- Service Discovery & Monitoring --- # --- Service Discovery & Monitoring ---
consulClient = "1.5.3" consulClient = "1.5.3"
@ -33,20 +35,34 @@ micrometer = "1.12.2"
# --- Testing --- # --- Testing ---
junitJupiter = "5.10.2" junitJupiter = "5.10.2"
mockk = "1.13.8"
assertj = "3.24.2"
testcontainers = "1.19.6"
# --- Utilities --- # --- Utilities ---
uuid = "0.8.4" uuid = "0.8.4"
bignum = "0.3.9" bignum = "0.3.9"
logback = "1.5.6" logback = "1.5.6"
caffeine = "3.1.8"
reactorKafka = "1.3.22"
jackson = "2.17.0"
jakartaAnnotation = "2.1.1"
auth0Jwt = "4.4.0"
[libraries] [libraries]
# --- Platform BOMs (Bill of Materials) ---
kotlin-bom = { module = "org.jetbrains.kotlin:kotlin-bom", version.ref = "kotlin" }
kotlinx-coroutines-bom = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-bom", version.ref = "kotlinx" }
spring-boot-dependencies = { module = "org.springframework.boot:spring-boot-dependencies", version.ref = "springBoot" }
# --- Kotlin & Coroutines --- # --- Kotlin & Coroutines ---
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx" }
kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" } kotlinx-coroutines-reactor = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", version.ref = "kotlinx" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx" }
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDatetime" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDatetime" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx" }
# --- Ktor Server --- # --- Ktor Server ---
ktor-server-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" } ktor-server-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" }
@ -78,6 +94,9 @@ spring-boot-starter-validation = { module = "org.springframework.boot:spring-boo
spring-boot-starter-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator" } spring-boot-starter-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator" }
spring-boot-starter-data-jpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa" } spring-boot-starter-data-jpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa" }
spring-boot-starter-test = { module = "org.springframework.boot:spring-boot-starter-test" } spring-boot-starter-test = { module = "org.springframework.boot:spring-boot-starter-test" }
spring-boot-starter-oauth2-client = { module = "org.springframework.boot:spring-boot-starter-oauth2-client" }
spring-boot-starter-security = { module = "org.springframework.boot:spring-boot-starter-security" }
spring-security-oauth2-jose = { module = "org.springframework.security:spring-security-oauth2-jose" }
spring-web = { module = "org.springframework:spring-web" } spring-web = { module = "org.springframework:spring-web" }
springdoc-openapi-starter-common = { module = "org.springdoc:springdoc-openapi-starter-common", version.ref = "springdoc" } springdoc-openapi-starter-common = { module = "org.springdoc:springdoc-openapi-starter-common", version.ref = "springdoc" }
springdoc-openapi-starter-webmvc-ui = { module = "org.springdoc:springdoc-openapi-starter-webmvc-ui", version.ref = "springdoc" } springdoc-openapi-starter-webmvc-ui = { module = "org.springdoc:springdoc-openapi-starter-webmvc-ui", version.ref = "springdoc" }
@ -92,6 +111,8 @@ hikari-cp = { module = "com.zaxxer:HikariCP", version.ref = "hikari" }
h2-driver = { module = "com.h2database:h2", version.ref = "h2" } h2-driver = { module = "com.h2database:h2", version.ref = "h2" }
flyway-core = { module = "org.flywaydb:flyway-core", version.ref = "flyway" } flyway-core = { module = "org.flywaydb:flyway-core", version.ref = "flyway" }
flyway-postgresql = { module = "org.flywaydb:flyway-database-postgresql", version.ref = "flyway" } flyway-postgresql = { module = "org.flywaydb:flyway-database-postgresql", version.ref = "flyway" }
redisson = { module = "org.redisson:redisson", version.ref = "redisson" }
lettuce-core = { module = "io.lettuce:lettuce-core", version.ref = "lettuce" }
# --- Service Discovery & Monitoring --- # --- Service Discovery & Monitoring ---
consul-client = { module = "com.orbitz.consul:consul-client", version.ref = "consulClient" } consul-client = { module = "com.orbitz.consul:consul-client", version.ref = "consulClient" }
@ -101,6 +122,13 @@ micrometer-prometheus = { module = "io.micrometer:micrometer-registry-prometheus
uuid = { module = "com.benasher44:uuid", version.ref = "uuid" } uuid = { module = "com.benasher44:uuid", version.ref = "uuid" }
bignum = { module = "com.ionspin.kotlin:bignum", version.ref = "bignum" } bignum = { module = "com.ionspin.kotlin:bignum", version.ref = "bignum" }
logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" } logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
kotlin-logging-jvm = { module = "io.github.microutils:kotlin-logging-jvm", version.ref = "kotlinLogging" }
caffeine = { module = "com.github.ben-manes.caffeine:caffeine", version.ref = "caffeine" }
reactor-kafka = { module = "io.projectreactor.kafka:reactor-kafka", version.ref = "reactorKafka" }
jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" }
jackson-datatype-jsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", version.ref = "jackson" }
jakarta-annotation-api = { module = "jakarta.annotation:jakarta.annotation-api", version.ref = "jakartaAnnotation" }
auth0-java-jwt = { module = "com.auth0:java-jwt", version.ref = "auth0Jwt" }
# --- Compose UI --- # --- Compose UI ---
compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeMultiplatform" } compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeMultiplatform" }
@ -112,9 +140,17 @@ compose-materialIconsExtended = { module = "org.jetbrains.compose.material:mater
compose-html-core = { module = "org.jetbrains.compose.html:html-core", version.ref = "composeMultiplatform" } compose-html-core = { module = "org.jetbrains.compose.html:html-core", version.ref = "composeMultiplatform" }
compose-desktop-currentOs = { module = "org.jetbrains.compose.desktop:desktop", version.ref = "composeMultiplatform" } compose-desktop-currentOs = { module = "org.jetbrains.compose.desktop:desktop", version.ref = "composeMultiplatform" }
# --- Testing (JUnit 5) --- # --- Testinging ---
junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junitJupiter" } junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junitJupiter" }
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junitJupiter" } junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junitJupiter" }
junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junitJupiter" }
junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junitJupiter" }
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
assertj-core = { module = "org.assertj:assertj-core", version.ref = "assertj" }
testcontainers-core = { module = "org.testcontainers:testcontainers", version.ref = "testcontainers" }
testcontainers-junit-jupiter = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainers" }
testcontainers-postgresql = { module = "org.testcontainers:postgresql", version.ref = "testcontainers" }
[plugins] [plugins]
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }

View File

@ -18,13 +18,10 @@ dependencies {
implementation(projects.core.coreDomain) implementation(projects.core.coreDomain)
implementation(projects.core.coreUtils) implementation(projects.core.coreUtils)
// Spring Security implementation(libs.spring.boot.starter.oauth2.client)
implementation("org.springframework.boot:spring-boot-starter-oauth2-client") implementation(libs.spring.boot.starter.security)
implementation("org.springframework.boot:spring-boot-starter-security") implementation(libs.spring.security.oauth2.jose)
implementation("org.springframework.security:spring-security-oauth2-jose") implementation(libs.auth0.java.jwt)
// JWT
implementation("com.auth0:java-jwt:4.4.0")
testImplementation(projects.platform.platformTesting) testImplementation(projects.platform.platformTesting)
} }

View File

@ -3,6 +3,7 @@ plugins {
alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.ktor) alias(libs.plugins.ktor)
application application
alias(libs.plugins.spring.dependencyManagement)
} }
application { application {
@ -10,6 +11,7 @@ application {
} }
dependencies { dependencies {
api(platform(libs.spring.boot.dependencies))
// --- Interne Module --- // --- Interne Module ---
// Der Gateway benötigt nur die Kern-Definitionen und Utilities. // Der Gateway benötigt nur die Kern-Definitionen und Utilities.
implementation(projects.platform.platformDependencies) implementation(projects.platform.platformDependencies)

View File

@ -5,6 +5,7 @@ plugins {
alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.ktor) alias(libs.plugins.ktor)
application application
alias(libs.plugins.spring.dependencyManagement)
} }
application { application {
@ -12,6 +13,7 @@ application {
} }
dependencies { dependencies {
api(platform(libs.spring.boot.dependencies))
// Interne Module // Interne Module
implementation(projects.platform.platformDependencies) implementation(projects.platform.platformDependencies)
implementation(projects.masterdata.masterdataDomain) implementation(projects.masterdata.masterdataDomain)

View File

@ -1,9 +1,27 @@
plugins { plugins {
kotlin("jvm") alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
} }
dependencies { kotlin {
implementation(projects.core.coreDomain) jvm()
implementation(projects.core.coreUtils) js(IR) {
testImplementation(projects.platform.platformTesting) browser()
}
sourceSets {
val commonMain by getting {
dependencies {
// KORREKTUR: Diese zwei Zeilen hinzufügen
implementation(projects.core.coreDomain)
implementation(projects.core.coreUtils)
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
implementation(projects.platform.platformTesting)
}
}
}
} }

View File

@ -8,43 +8,51 @@ javaPlatform {
} }
dependencies { dependencies {
api(platform("org.springframework.boot:spring-boot-dependencies:3.2.3")) // KORREKTUR: Alle BOMs werden jetzt über Aliase aus der libs.versions.toml bezogen.
api(platform("org.jetbrains.kotlin:kotlin-bom:2.1.21")) api(platform(libs.spring.boot.dependencies))
api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1")) api(platform(libs.kotlin.bom))
api(platform(libs.kotlinx.coroutines.bom))
constraints { constraints {
api("com.github.ben-manes.caffeine:caffeine:3.1.8") // KORREKTUR: Alle Abhängigkeiten verwenden jetzt Aliase.
api("io.projectreactor.kafka:reactor-kafka:1.3.22") // Keine einzige hartcodierte Version mehr in dieser Datei!
api("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0")
api("org.springdoc:springdoc-openapi-starter-webflux-ui:2.3.0")
api("org.springdoc:springdoc-openapi-starter-common:2.3.0")
api("org.redisson:redisson:3.27.2")
api("io.lettuce:lettuce-core:6.3.1.RELEASE")
api("io.github.microutils:kotlin-logging-jvm:3.0.5")
api("org.jetbrains.exposed:exposed-core:0.52.0")
api("org.jetbrains.exposed:exposed-dao:0.52.0")
api("org.jetbrains.exposed:exposed-jdbc:0.52.0")
api("org.jetbrains.exposed:exposed-kotlin-datetime:0.52.0")
api("org.postgresql:postgresql:42.7.3")
api("com.zaxxer:HikariCP:5.1.0")
api("com.h2database:h2:2.2.224")
api("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1")
api("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")
api("com.benasher44:uuid:0.8.2")
api("com.ionspin.kotlin:bignum:0.3.8")
api("com.orbitz.consul:consul-client:1.5.3")
// Jackson modules // --- Utilities & Other ---
api("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.0") api(libs.caffeine)
api("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.0") api(libs.reactor.kafka)
api(libs.redisson)
api(libs.uuid)
api(libs.bignum)
api(libs.consul.client)
api(libs.kotlin.logging.jvm)
api(libs.jakarta.annotation.api)
// Testcontainers // --- Spring & SpringDoc ---
api("org.testcontainers:testcontainers:1.19.6") api(libs.springdoc.openapi.starter.common)
api("org.testcontainers:junit-jupiter:1.19.6") api(libs.springdoc.openapi.starter.webmvc.ui)
api("org.testcontainers:postgresql:1.19.6")
// Jakarta EE APIs // --- Database & Persistence ---
api("jakarta.annotation:jakarta.annotation-api:2.1.1") api(libs.exposed.core)
api(libs.exposed.dao)
api(libs.exposed.jdbc)
api(libs.exposed.kotlin.datetime)
api(libs.postgresql.driver)
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.testcontainers.core)
api(libs.testcontainers.junit.jupiter)
api(libs.testcontainers.postgresql)
} }
} }

View File

@ -1,16 +1,35 @@
plugins { plugins {
`java-library` alias(libs.plugins.kotlin.multiplatform)
kotlin("jvm")
} }
dependencies { kotlin {
api(platform(projects.platform.platformBom)) jvm()
js(IR) {
browser()
}
api("org.jetbrains.kotlin:kotlin-stdlib") sourceSets {
api("org.jetbrains.kotlin:kotlin-reflect") val commonMain by getting {
api("org.jetbrains.kotlinx:kotlinx-coroutines-core") dependencies {
api("org.jetbrains.kotlinx:kotlinx-coroutines-reactor") // KORREKTUR: Die explizite `platform()`-Abhängigkeit wird hier entfernt.
api("io.github.microutils:kotlin-logging-jvm") // Die Versionen aus der BOM werden trotzdem angewendet.
api("org.jetbrains.kotlinx:kotlinx-serialization-json")
api("org.jetbrains.kotlinx:kotlinx-datetime") // KORREKTUR: `stdlib` und `reflect` werden entfernt.
// `stdlib` wird automatisch hinzugefügt.
api(libs.kotlinx.coroutines.core)
api(libs.kotlinx.serialization.json)
api(libs.kotlinx.datetime)
}
}
val jvmMain by getting {
dependencies {
api("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
// KORREKTUR: Hartcodierte Version durch Alias ersetzen
api(libs.kotlin.logging.jvm)
}
}
}
} }

View File

@ -1,36 +1,43 @@
plugins { plugins {
`java-library` // KORREKTUR: 'java-library' und 'kotlin("jvm")' ersetzen
kotlin("jvm") alias(libs.plugins.kotlin.multiplatform)
} }
dependencies { kotlin {
api(platform(projects.platform.platformBom)) // KORREKTUR: JVM- und JS-Ziele definieren
jvm()
js(IR) {
browser()
}
// Kotlin Test sourceSets {
api("org.jetbrains.kotlin:kotlin-test") // Diese Abhängigkeiten sind für alle Plattformen (JVM, JS) verfügbar
api("org.jetbrains.kotlin:kotlin-test-junit") val commonTest by getting {
dependencies {
// Die 'kotlin("test")'-Abhängigkeit ist der Standardweg für KMP-Tests
implementation(kotlin("test"))
api(libs.kotlinx.coroutines.test)
}
}
// JUnit // Diese Abhängigkeiten sind NUR für die JVM-Tests verfügbar
api("org.junit.jupiter:junit-jupiter-api") val jvmTest by getting {
api("org.junit.jupiter:junit-jupiter-engine") dependencies {
api("org.junit.jupiter:junit-jupiter-params") api(libs.junit.jupiter.api)
api("org.junit.platform:junit-platform-launcher") api(libs.junit.jupiter.engine)
api(libs.junit.jupiter.params)
api(libs.junit.platform.launcher)
// Mocking and Assertions // KORREKTUR: Alle hartcodierten Versionen durch Aliase ersetzen
api("io.mockk:mockk:1.13.8") api(libs.mockk)
api("org.assertj:assertj-core:3.24.2") api(libs.assertj.core)
api(libs.spring.boot.starter.test)
api(libs.h2.driver)
// Coroutines Testing api(libs.testcontainers.core)
api("org.jetbrains.kotlinx:kotlinx-coroutines-test") api(libs.testcontainers.junit.jupiter)
api(libs.testcontainers.postgresql)
// Spring Boot Testing }
api("org.springframework.boot:spring-boot-starter-test") }
}
// Database Testing
api("com.h2database:h2")
// Test Containers
api("org.testcontainers:testcontainers:1.19.5")
api("org.testcontainers:junit-jupiter:1.19.5")
api("org.testcontainers:postgresql:1.19.5")
} }

View File

@ -16,7 +16,8 @@ pluginManagement {
} }
dependencyResolutionManagement { dependencyResolutionManagement {
repositories {
/*repositories {
mavenCentral() mavenCentral()
google { google {
mavenContent { mavenContent {
@ -33,6 +34,13 @@ dependencyResolutionManagement {
maven { maven {
url = uri("https://oss.sonatype.org/content/repositories/snapshots/") url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
} }
}*/
repositories {
mavenCentral()
google()
maven { url = uri("https://jitpack.io") }
maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
} }
} }