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
}
allprojects {
group = "at.mocode.meldestelle"
version = "0.1.0-SNAPSHOT"
repositories {
mavenCentral()
google() // Wichtig für Compose-Abhängigkeiten
}
}
//allprojects {
// group = "at.mocode.meldestelle"
// version = "0.1.0-SNAPSHOT"
//
// repositories {
// mavenCentral()
// google() // Wichtig für Compose-Abhängigkeiten
// }
//}
subprojects {
// Konfigurationen, die für alle Untermodule gelten.

View File

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

View File

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

View File

@ -21,12 +21,13 @@ class ServiceRegistration internal constructor(
fun register() {
if (isRegistered) return
try {
// Der `register`-Aufruf ist korrekt, da das `registration`-Objekt
// bereits außerhalb vollständig und korrekt gebaut wurde.
consul.agentClient().register(registration)
isRegistered = true
println("Service '${registration.name()}' mit ID '${registration.id()}' erfolgreich bei Consul registriert.")
} catch (e: Exception) {
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)
}
}
@ -34,6 +35,7 @@ class ServiceRegistration internal constructor(
fun deregister() {
if (!isRegistered) return
try {
// Der `deregister`-Aufruf ist korrekt. Er erwartet die Service-ID als einfachen String.
consul.agentClient().deregister(registration.id())
isRegistered = false
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 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(
"http://$hostAddress:$servicePort/health", // Standard-Health-Check-Pfad
10L, // Intervall in Sekunden

View File

@ -1,10 +1,12 @@
plugins {
// KORREKTUR: Alle Plugins werden jetzt konsistent über den Version Catalog geladen.
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.kotlin.spring)
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)
}
application {
@ -12,17 +14,19 @@ application {
}
dependencies {
// Deine Abhängigkeiten sind hier bereits korrekt und benötigen keine Änderung.
implementation(projects.platform.platformDependencies)
// 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
implementation("org.springframework:spring-web")
implementation("org.springdoc:springdoc-openapi-starter-common")
// 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)

View File

@ -1,10 +1,32 @@
plugins {
kotlin("jvm")
// KORREKTUR: Von 'kotlin("jvm")' zu Multiplattform wechseln.
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
}
dependencies {
implementation(projects.events.eventsDomain)
implementation(projects.core.coreDomain)
implementation(projects.core.coreUtils)
testImplementation(projects.platform.platformTesting)
kotlin {
jvm()
js(IR) {
browser()
}
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.messaging.messagingClient)
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.postgresql:postgresql")
implementation(libs.spring.boot.starter.data.jpa)
implementation(libs.postgresql.driver)
testImplementation(projects.platform.platformTesting)
}

View File

@ -5,27 +5,29 @@
[versions]
# --- Kotlin Ecosystem ---
kotlin = "2.2.0"
kotlinxCoroutines = "1.9.1"
kotlinxSerialization = "1.7.1"
kotlinxDatetime = "0.6.0"
kotlinx = "1.9.0"
kotlinxDatetime = "0.7.1"
kotlinLogging = "3.0.5"
# --- Spring Ecosystem ---
springBoot = "3.2.5"
springDependencyManagement = "1.1.5"
springdoc = "2.5.0"
# --- Compose UI ---
composeMultiplatform = "1.6.10"
# --- Ktor (API Layer & Client) ---
ktor = "3.0.0-beta-2"
# --- Compose UI ---
composeMultiplatform = "1.6.10"
# --- Database & Persistence ---
exposed = "0.51.1"
postgresql = "42.7.3"
hikari = "5.1.0"
h2 = "2.2.224"
flyway = "10.15.2"
redisson = "3.27.2"
lettuce = "6.3.1.RELEASE"
# --- Service Discovery & Monitoring ---
consulClient = "1.5.3"
@ -33,20 +35,34 @@ micrometer = "1.12.2"
# --- Testing ---
junitJupiter = "5.10.2"
mockk = "1.13.8"
assertj = "3.24.2"
testcontainers = "1.19.6"
# --- Utilities ---
uuid = "0.8.4"
bignum = "0.3.9"
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]
# --- 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-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-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinxCoroutines" }
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
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 = "kotlinx" }
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 = "kotlinx" }
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-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-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-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" }
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" }
@ -92,6 +111,8 @@ hikari-cp = { module = "com.zaxxer:HikariCP", version.ref = "hikari" }
h2-driver = { module = "com.h2database:h2", version.ref = "h2" }
flyway-core = { module = "org.flywaydb:flyway-core", 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 ---
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" }
bignum = { module = "com.ionspin.kotlin:bignum", version.ref = "bignum" }
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-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-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-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]
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }

View File

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

View File

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

View File

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

View File

@ -1,9 +1,27 @@
plugins {
kotlin("jvm")
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
}
dependencies {
implementation(projects.core.coreDomain)
implementation(projects.core.coreUtils)
testImplementation(projects.platform.platformTesting)
kotlin {
jvm()
js(IR) {
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 {
api(platform("org.springframework.boot:spring-boot-dependencies:3.2.3"))
api(platform("org.jetbrains.kotlin:kotlin-bom:2.1.21"))
api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.10.1"))
// KORREKTUR: Alle BOMs werden jetzt über Aliase aus der libs.versions.toml bezogen.
api(platform(libs.spring.boot.dependencies))
api(platform(libs.kotlin.bom))
api(platform(libs.kotlinx.coroutines.bom))
constraints {
api("com.github.ben-manes.caffeine:caffeine:3.1.8")
api("io.projectreactor.kafka:reactor-kafka:1.3.22")
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")
// KORREKTUR: Alle Abhängigkeiten verwenden jetzt Aliase.
// Keine einzige hartcodierte Version mehr in dieser Datei!
// Jackson modules
api("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.0")
api("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.0")
// --- Utilities & Other ---
api(libs.caffeine)
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
api("org.testcontainers:testcontainers:1.19.6")
api("org.testcontainers:junit-jupiter:1.19.6")
api("org.testcontainers:postgresql:1.19.6")
// --- Spring & SpringDoc ---
api(libs.springdoc.openapi.starter.common)
api(libs.springdoc.openapi.starter.webmvc.ui)
// Jakarta EE APIs
api("jakarta.annotation:jakarta.annotation-api:2.1.1")
// --- Database & Persistence ---
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 {
`java-library`
kotlin("jvm")
alias(libs.plugins.kotlin.multiplatform)
}
dependencies {
api(platform(projects.platform.platformBom))
kotlin {
jvm()
js(IR) {
browser()
}
api("org.jetbrains.kotlin:kotlin-stdlib")
api("org.jetbrains.kotlin:kotlin-reflect")
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
api("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
api("io.github.microutils:kotlin-logging-jvm")
api("org.jetbrains.kotlinx:kotlinx-serialization-json")
api("org.jetbrains.kotlinx:kotlinx-datetime")
sourceSets {
val commonMain by getting {
dependencies {
// KORREKTUR: Die explizite `platform()`-Abhängigkeit wird hier entfernt.
// Die Versionen aus der BOM werden trotzdem angewendet.
// 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 {
`java-library`
kotlin("jvm")
// KORREKTUR: 'java-library' und 'kotlin("jvm")' ersetzen
alias(libs.plugins.kotlin.multiplatform)
}
dependencies {
api(platform(projects.platform.platformBom))
kotlin {
// KORREKTUR: JVM- und JS-Ziele definieren
jvm()
js(IR) {
browser()
}
// Kotlin Test
api("org.jetbrains.kotlin:kotlin-test")
api("org.jetbrains.kotlin:kotlin-test-junit")
sourceSets {
// Diese Abhängigkeiten sind für alle Plattformen (JVM, JS) verfügbar
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
api("org.junit.jupiter:junit-jupiter-api")
api("org.junit.jupiter:junit-jupiter-engine")
api("org.junit.jupiter:junit-jupiter-params")
api("org.junit.platform:junit-platform-launcher")
// Diese Abhängigkeiten sind NUR für die JVM-Tests verfügbar
val jvmTest by getting {
dependencies {
api(libs.junit.jupiter.api)
api(libs.junit.jupiter.engine)
api(libs.junit.jupiter.params)
api(libs.junit.platform.launcher)
// Mocking and Assertions
api("io.mockk:mockk:1.13.8")
api("org.assertj:assertj-core:3.24.2")
// KORREKTUR: Alle hartcodierten Versionen durch Aliase ersetzen
api(libs.mockk)
api(libs.assertj.core)
api(libs.spring.boot.starter.test)
api(libs.h2.driver)
// Coroutines Testing
api("org.jetbrains.kotlinx:kotlinx-coroutines-test")
// 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")
api(libs.testcontainers.core)
api(libs.testcontainers.junit.jupiter)
api(libs.testcontainers.postgresql)
}
}
}
}

View File

@ -16,7 +16,8 @@ pluginManagement {
}
dependencyResolutionManagement {
repositories {
/*repositories {
mavenCentral()
google {
mavenContent {
@ -33,6 +34,13 @@ dependencyResolutionManagement {
maven {
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/") }
}
}