# This file is the SINGLE SOURCE OF TRUTH for all project dependencies. # It allows for centralized version management and ensures consistency. # Last updated: 2025-07-31 [versions] # --- Kotlin Ecosystem --- kotlin = "2.2.0" kotlinx = "1.9.0" kotlinxDatetime = "0.7.1" kotlinLogging = "3.0.5" # --- Spring Ecosystem --- springBoot = "3.3.2" springCloud = "2023.0.3" # NEU: Version für Spring Cloud springDependencyManagement = "1.1.6" springdoc = "2.6.0" # --- Ktor (API Layer & Client) --- ktor = "3.0.0-beta-2" # --- Compose UI --- composeMultiplatform = "1.8.2" # --- 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" // wird getauscht mit spring-cloud-starter-consul-discovery micrometer = "1.12.2" micrometerTracing = "1.2.5" zipkin = "3.0.5" zipkinReporter = "2.16.4" # --- Authentication --- auth0Jwt = "4.4.0" keycloak = "25.0.2" # --- Testing --- junitJupiter = "5.10.2" mockk = "1.13.8" assertj = "3.24.2" testcontainers = "1.19.6" # --- Resilience4j --- resilience4j = "2.2.0" # --- Utilities --- uuid = "0.8.4" bignum = "0.3.9" logback = "1.5.13" caffeine = "3.1.8" reactorKafka = "1.3.22" jackson = "2.17.0" jakartaAnnotation = "2.1.1" roomCommonJvm = "2.7.2" uiDesktop = "1.7.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" } spring-cloud-dependencies = { module = "org.springframework.cloud:spring-cloud-dependencies", version.ref = "springCloud" } # NEU # --- 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 = "kotlinx" } kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing" } # Version from BOM kotlinx-coroutines-reactor = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" } # Version from BOM 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 from BOM # --- Ktor Server --- ktor-server-core = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" } ktor-server-netty = { module = "io.ktor:ktor-server-netty-jvm", version.ref = "ktor" } ktor-server-contentNegotiation = { module = "io.ktor:ktor-server-content-negotiation-jvm", version.ref = "ktor" } ktor-server-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json-jvm", version.ref = "ktor" } ktor-server-statusPages = { module = "io.ktor:ktor-server-status-pages-jvm", version.ref = "ktor" } ktor-server-auth = { module = "io.ktor:ktor-server-auth-jvm", version.ref = "ktor" } ktor-server-authJwt = { module = "io.ktor:ktor-server-auth-jwt-jvm", version.ref = "ktor" } ktor-server-cors = { module = "io.ktor:ktor-server-cors-jvm", version.ref = "ktor" } ktor-server-callLogging = { module = "io.ktor:ktor-server-call-logging-jvm", version.ref = "ktor" } ktor-server-defaultHeaders = { module = "io.ktor:ktor-server-default-headers-jvm", version.ref = "ktor" } ktor-server-rateLimit = { module = "io.ktor:ktor-server-rate-limit-jvm", version.ref = "ktor" } ktor-server-metrics-micrometer = { module = "io.ktor:ktor-server-metrics-micrometer-jvm", version.ref = "ktor" } ktor-server-openapi = { module = "io.ktor:ktor-server-openapi", version.ref = "ktor" } ktor-server-swagger = { module = "io.ktor:ktor-server-swagger", version.ref = "ktor" } ktor-server-tests = { module = "io.ktor:ktor-server-tests-jvm", version.ref = "ktor" } # --- Ktor Client --- ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" } ktor-client-cio = { module = "io.ktor:ktor-client-cio-jvm", version.ref = "ktor" } ktor-client-js = { module = "io.ktor:ktor-client-js", version.ref = "ktor" } ktor-client-contentNegotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } ktor-client-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } # --- Spring Boot (Versions from spring-boot-dependencies BOM) --- spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web" } spring-boot-starter-validation = { module = "org.springframework.boot:spring-boot-starter-validation" } 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-redis = { module = "org.springframework.boot:spring-boot-starter-data-redis" } 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-oauth2-resource-server = { module = "org.springframework.boot:spring-boot-starter-oauth2-resource-server" } spring-boot-starter-security = { module = "org.springframework.boot:spring-boot-starter-security" } spring-boot-starter-webflux = { module = "org.springframework.boot:spring-boot-starter-webflux" } spring-boot-starter-json = { module = "org.springframework.boot:spring-boot-starter-json" } spring-kafka = { module = "org.springframework.kafka:spring-kafka" } 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" } # --- Spring Cloud --- spring-cloud-starter-gateway = { module = "org.springframework.cloud:spring-cloud-starter-gateway" } # NEU spring-cloud-starter-consul-discovery = { module = "org.springframework.cloud:spring-cloud-starter-consul-discovery" } # NEU # --- Database & Persistence --- exposed-core = { module = "org.jetbrains.exposed:exposed-core", version.ref = "exposed" } exposed-dao = { module = "org.jetbrains.exposed:exposed-dao", version.ref = "exposed" } exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "exposed" } exposed-kotlin-datetime = { module = "org.jetbrains.exposed:exposed-kotlin-datetime", version.ref = "exposed" } postgresql-driver = { module = "org.postgresql:postgresql", version.ref = "postgresql" } 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" } // wird getauscht mit spring-cloud-starter-consul-discovery micrometer-prometheus = { module = "io.micrometer:micrometer-registry-prometheus", version.ref = "micrometer" } micrometer-tracing-bridge-brave = { module = "io.micrometer:micrometer-tracing-bridge-brave", version.ref = "micrometerTracing" } # NEU zipkin-reporter-brave = { module = "io.zipkin.reporter2:zipkin-reporter-brave", version.ref = "zipkinReporter" } zipkin-sender-okhttp3 = { module = "io.zipkin.reporter2:zipkin-sender-okhttp3", version.ref = "zipkinReporter" } zipkin-server = { module = "io.zipkin:zipkin-server", version.ref = "zipkin" } zipkin-autoconfigure-ui = { module = "io.zipkin:zipkin-autoconfigure-ui", version.ref = "zipkin" } # --- Resilience4j --- resilience4j-spring-boot3 = { module = "io.github.resilience4j:resilience4j-spring-boot3", version.ref = "resilience4j" } resilience4j-reactor = { module = "io.github.resilience4j:resilience4j-reactor", version.ref = "resilience4j" } spring-boot-starter-aop = { module = "org.springframework.boot:spring-boot-starter-aop" } # --- Authentication --- auth0-java-jwt = { module = "com.auth0:java-jwt", version.ref = "auth0Jwt" } keycloak-admin-client = { module = "org.keycloak:keycloak-admin-client", version.ref = "keycloak" } # --- Utilities --- 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" } logback-core = { module = "ch.qos.logback:logback-core", 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" } # --- Compose UI --- compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeMultiplatform" } compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "composeMultiplatform" } compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "composeMultiplatform" } compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "composeMultiplatform" } compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "composeMultiplatform" } compose-materialIconsExtended = { module = "org.jetbrains.compose.material:material-icons-extended", 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" } # --- Testing --- 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 from BOM 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" } testcontainers-kafka = { module = "org.testcontainers:kafka", version.ref = "testcontainers" } reactor-test = { module = "io.projectreactor:reactor-test" } # Version wird von der Spring BOM verwaltet room-common-jvm = { group = "androidx.room", name = "room-common-jvm", version.ref = "roomCommonJvm" } ui-desktop = { group = "androidx.compose.ui", name = "ui-desktop", version.ref = "uiDesktop" } [bundles] # OPTIMIERUNG: Bündelt gängige Abhängigkeitsgruppen. # Dies vereinfacht die build.gradle.kts-Dateien der Module erheblich. ktor-server-essentials = [ "ktor-server-core", "ktor-server-netty", "ktor-server-contentNegotiation", "ktor-server-serialization-kotlinx-json", "ktor-server-statusPages", "ktor-server-callLogging" ] ktor-client-essentials = ["ktor-client-core", "ktor-client-cio", "ktor-client-contentNegotiation", "ktor-client-serialization-kotlinx-json"] exposed = ["exposed-core", "exposed-dao", "exposed-jdbc", "exposed-kotlin-datetime"] flyway = ["flyway-core", "flyway-postgresql"] spring-boot-essentials = ["spring-boot-starter-web", "spring-boot-starter-validation", "spring-boot-starter-actuator"] redis-cache = ["spring-boot-starter-data-redis", "lettuce-core", "jackson-module-kotlin", "jackson-datatype-jsr310"] kafka-config = ["spring-kafka", "spring-boot-starter-json", "jackson-module-kotlin", "jackson-datatype-jsr310"] testing-jvm = ["junit-jupiter-api", "junit-jupiter-engine", "mockk", "assertj-core", "kotlinx-coroutines-test"] testcontainers = ["testcontainers-core", "testcontainers-junit-jupiter", "testcontainers-postgresql"] # NEU: Bündelt alle Abhängigkeiten, die ein Service für Metriken und Tracing benötigt. monitoring-client = [ "spring-boot-starter-actuator", "micrometer-prometheus", "micrometer-tracing-bridge-brave", "zipkin-reporter-brave", "zipkin-sender-okhttp3" ] # NEU: Bündelt die Kernabhängigkeiten für das Spring Cloud Gateway. spring-cloud-gateway = ["spring-cloud-starter-gateway", "spring-cloud-starter-consul-discovery"] [plugins] kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlin" } kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" } ktor = { id = "io.ktor.plugin", version.ref = "ktor" } compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } spring-boot = { id = "org.springframework.boot", version.ref = "springBoot" } spring-dependencyManagement = { id = "io.spring.dependency-management", version.ref = "springDependencyManagement" }