diff --git a/app/backend/build.gradle.kts b/app/backend/build.gradle.kts index e13b4fb24e04e7dec733c5b6f51446cf53729b04..233b3c437b76ffc05bcfca61a507d4d218583424 100644 --- a/app/backend/build.gradle.kts +++ b/app/backend/build.gradle.kts @@ -1,13 +1,13 @@ val springVersion = "3.3.2" plugins { - id("org.springframework.boot") version "3.3.2" - id("io.spring.dependency-management") version "1.1.6" - id("org.jetbrains.kotlin.plugin.allopen") version "2.0.20-Beta2" - kotlin("jvm") version "2.0.0" - kotlin("plugin.spring") version "2.0.20-Beta2" - kotlin("plugin.jpa") version "2.0.20-Beta2" - kotlin("plugin.serialization") version "2.0.0" + alias(libs.plugins.springPlugin) + alias(libs.plugins.springDepMgt) + alias(libs.plugins.kotlinAllOpen) + alias(libs.plugins.kotlin) + alias(libs.plugins.kotlinSpring) + alias(libs.plugins.kotlinJpa) + alias(libs.plugins.serializationPlugin) } allOpen { @@ -32,44 +32,28 @@ repositories { mavenCentral() } -val coroutineVersion = "1.9.0-RC" -val ktorVersion = "2.3.12" dependencies { - implementation("de.fraunhofer.iem.kpiCalculator:core:0.0.2-SNAPSHOT") - implementation("de.fraunhofer.iem.kpiCalculator:adapter:0.0.2-SNAPSHOT") - implementation("de.fraunhofer.iem.kpiCalculator:model:0.0.2-SNAPSHOT") - implementation("org.springframework.boot:spring-boot-starter-data-jpa:$springVersion") - implementation("org.springframework.boot:spring-boot-starter-validation:$springVersion") - implementation("org.springframework.boot:spring-boot-starter-security:$springVersion") - implementation("org.springframework.boot:spring-boot-starter-webflux:$springVersion") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.1") - implementation("org.jetbrains.kotlin:kotlin-reflect:2.0.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactive:$coroutineVersion") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$coroutineVersion") - implementation("org.springdoc:springdoc-openapi-starter-webflux-ui:2.5.0") - implementation("org.gitlab4j:gitlab4j-api:6.0.0-rc.5") - implementation("org.eclipse.jgit:org.eclipse.jgit:6.10.0.202406032230-r") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1") - implementation("org.springframework.boot:spring-boot-starter-actuator:$springVersion") - implementation("io.ktor:ktor-client-core-jvm:$ktorVersion") - implementation("io.ktor:ktor-client-cio-jvm:$ktorVersion") - implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion") - implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion") - implementation("com.auth0:java-jwt:4.4.0") - developmentOnly("org.springframework.boot:spring-boot-devtools:$springVersion") - runtimeOnly("org.postgresql:postgresql:42.7.3") - testImplementation("org.springframework.boot:spring-boot-starter-test:$springVersion") { - exclude(module = "mockito-core") + implementation(libs.bundles.kpiCalculator) + implementation(libs.bundles.springBoot) + implementation(libs.bundles.ktor) + implementation(libs.bundles.coroutines) + implementation(libs.kotlinReflect) + implementation(libs.bundles.serialization) + implementation(libs.gitlab4j) + implementation(libs.jgit) + implementation(libs.authJwt) + runtimeOnly(libs.postgresql) + testImplementation(libs.ktorTest) + testImplementation(libs.springBootStarterTest) { + exclude("mockito-core") exclude(group = "org.junit.vintage", module = "junit-vintage-engine") } - testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.3") - testImplementation("io.ktor:ktor-client-mock-jvm:$ktorVersion") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.3") - testRuntimeOnly("com.h2database:h2:2.2.224") - testImplementation("com.ninja-squad:springmockk:4.0.2") - testImplementation("org.springframework.security:spring-security-test:6.3.0") - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutineVersion") + testImplementation(libs.junitJupiterApi) + testImplementation(libs.bundles.springTest) + testImplementation(libs.coroutineTest) + developmentOnly(libs.devTools) + testRuntimeOnly(libs.junitJupiter) + testRuntimeOnly(libs.h2db) } tasks.named("compileKotlin", org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask::class.java) { diff --git a/app/gradle/libs.versions.toml b/app/gradle/libs.versions.toml new file mode 100644 index 0000000000000000000000000000000000000000..4d406c2f17c03116bac18400a28a1c92c1db2e36 --- /dev/null +++ b/app/gradle/libs.versions.toml @@ -0,0 +1,91 @@ +[versions] +kotlin = "2.0.0" +springBoot = "3.3.2" +kotlinCoroutine = "1.9.0-RC" +ktor = "2.3.12" +kpiCalculator = "0.0.2-SNAPSHOT" +kotlinJackson = "2.17.1" +springOpenApi = "2.5.0" +gitlab4j = "6.0.0-rc.5" +jgit = "6.10.0.202406032230-r" +kotlinxSerialization = "1.7.1" +aut0Jwt = "4.4.0" +postgresql = "42.7.3" +junitJupiter = "5.10.3" +h2 = "2.2.224" +springmockk = "4.0.2" +springSecurityTest = "6.3.0" + +springDepMgtPlugin = "1.1.6" +kotlinSpringPlugin = "2.0.20-Beta2" + +[libraries] +# KPI calculator +kpi-calculator-core = { module = "de.fraunhofer.iem.kpiCalculator:core", version.ref = "kpiCalculator" } +kpi-calculator-model = { module = "de.fraunhofer.iem.kpiCalculator:model", version.ref = "kpiCalculator" } +kpi-calculator-adapter = { module = "de.fraunhofer.iem.kpiCalculator:adapter", version.ref = "kpiCalculator" } +# Spring boot +spring-boot-data-jpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa", version.ref = "springBoot" } +spring-boot-data-validation = { module = "org.springframework.boot:spring-boot-starter-validation", version.ref = "springBoot" } +spring-boot-data-security = { module = "org.springframework.boot:spring-boot-starter-security", version.ref = "springBoot" } +spring-boot-data-webflux = { module = "org.springframework.boot:spring-boot-starter-webflux", version.ref = "springBoot" } +spring-boot-data-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator", version.ref = "springBoot" } +springdoc-openapi = { module = "org.springdoc:springdoc-openapi-starter-webflux-ui", version.ref = "springOpenApi" } +# Spring boot test +spring-boot-data-devtools = { module = "org.springframework.boot:spring-boot-devtools", version.ref = "springBoot" } +spring-boot-data-test = { module = "org.springframework.boot:spring-boot-starter-test", version.ref = "springBoot" } +# Kotlin +kotlinReflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } +# Kotlinx +coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinCoroutine" } +coroutines-reactive = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", version.ref = "kotlinCoroutine" } +coroutines-reactor = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", version.ref = "kotlinCoroutine" } +# Ktor +ktor-client-core = { module = "io.ktor:ktor-client-core-jvm", version.ref = "ktor" } +ktor-client-cio = { module = "io.ktor:ktor-client-cio-jvm", version.ref = "ktor" } +ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" } +ktor-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" } +# Serialization / Deserialization +kotlin-jackson = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "kotlinJackson" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" } +# Git API Wrapper +gitlab4j = { module = "org.gitlab4j:gitlab4j-api", version.ref = "gitlab4j" } +# Git CLI Wrapper +jgit = { module = "org.eclipse.jgit:org.eclipse.jgit", version.ref = "jgit" } +# oauth +authJwt = { module = "com.auth0:java-jwt", version.ref = "aut0Jwt" } +postgresql = { module = "org.postgresql:postgresql", version.ref = "postgresql" } +# TEST +# Spring +devTools = { module = "org.springframework.boot:spring-boot-devtools", version.ref = "springBoot" } +spring-security-test = { module = "org.springframework.security:spring-security-test", version.ref = "springSecurityTest" } +spring-mock = { module = "com.ninja-squad:springmockk", version.ref = "springmockk" } +springBootStarterTest = { module = "org.springframework.boot:spring-boot-starter-test", version.ref = "springBoot" } +# Coroutine Test +coroutineTest = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinCoroutine" } +# Ktor Test +ktorTest = { module = "io.ktor:ktor-client-mock-jvm", version.ref = "ktor" } +# Junit +junitJupiter = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junitJupiter" } +junitJupiterApi = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junitJupiter" } +# db +h2db = { module = "com.h2database:h2", version.ref = "h2" } + +[plugins] +springPlugin = { id = "org.springframework.boot", version.ref = "springBoot" } +springDepMgt = { id = "io.spring.dependency-management", version.ref = "springDepMgtPlugin" } +kotlinAllOpen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlinSpringPlugin" } + +kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlinSpring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlinSpringPlugin" } +kotlinJpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlinSpringPlugin" } +serializationPlugin = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } + +[bundles] +kpiCalculator = ["kpi-calculator-adapter", "kpi-calculator-core", "kpi-calculator-model"] +springBoot = ["spring-boot-data-actuator", "spring-boot-data-jpa", "spring-boot-data-security", "springdoc-openapi", "spring-boot-data-validation", "spring-boot-data-webflux"] +springBootTest = ["spring-boot-data-test", "spring-boot-data-devtools"] +coroutines = ["coroutines-core", "coroutines-reactive", "coroutines-reactor"] +ktor = ["ktor-client-cio", "ktor-client-content-negotiation", "ktor-client-core", "ktor-serialization-json"] +serialization = ["kotlin-jackson", "kotlinx-serialization-json"] +springTest = ["spring-security-test", "spring-mock"]