From 4f67379b42566666f193b9f5f85d002291e1250f Mon Sep 17 00:00:00 2001 From: stefan Date: Wed, 6 Aug 2025 17:46:26 +0200 Subject: [PATCH] fixing Tracer-Bullet_Backend-Infrastruktur --- build.gradle.kts | 122 ++++++++---------- .../core-utils/src/main/resources/logback.xml | 15 +++ gradle/libs.versions.toml | 2 +- .../platform-dependencies/build.gradle.kts | 32 +---- platform/platform-testing/build.gradle.kts | 41 ------ 5 files changed, 72 insertions(+), 140 deletions(-) create mode 100644 core/core-utils/src/main/resources/logback.xml diff --git a/build.gradle.kts b/build.gradle.kts index b0fed89a..5af12487 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,45 +1,60 @@ import java.util.Locale -// Defines plugins that are available to all subprojects. -// `apply false` means the plugin is not applied to the root project itself. plugins { alias(libs.plugins.kotlin.jvm) apply false - alias(libs.plugins.kotlin.multiplatform) apply false - alias(libs.plugins.compose.multiplatform) apply false - alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.spring.boot) apply false + alias(libs.plugins.spring.dependencyManagement) apply false } -// Common configuration for all subprojects in this build. subprojects { - // Enforce Java 21 for all Kotlin compilation tasks. + + // Wende gemeinsame Einstellungen an tasks.withType().configureEach { compilerOptions { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21) } } - - // Configure all test tasks to use the JUnit Platform (for JUnit 5). tasks.withType().configureEach { useJUnitPlatform() } } -// Documentation generation tasks +// ################################################################## +// ### IHRE DOKUMENTATIONS-TASKS ### +// ################################################################## + +// Abstrakte Klasse für die Custom Task (Best Practice) +abstract class ValidateDocumentationTask @Inject constructor( + private val execOperations: ExecOperations +) : DefaultTask() { + + @TaskAction + fun validate() { + println("🔍 Validating documentation...") + execOperations.exec { + commandLine("./scripts/validation/validate-docs.sh") + } + } +} + +// Registrierung der Tasks +tasks.register("validateDocumentation") { + description = "Validates documentation completeness and consistency" + group = "documentation" +} + tasks.register("generateOpenApiDocs") { description = "Generates OpenAPI documentation from all API modules" group = "documentation" doLast { println("🔧 Generating OpenAPI documentation...") - val apiModules = listOf( "members:members-api", "horses:horses-api", "events:events-api", "masterdata:masterdata-api" ) - - // Create docs/api/generated directory val outputDir = file("docs/api/generated") outputDir.mkdirs() @@ -47,72 +62,45 @@ tasks.register("generateOpenApiDocs") { val moduleName = module.split(":").last().replace("-api", "") println("📝 Processing $moduleName API...") - // Generate OpenAPI spec for each module val specFile = file("$outputDir/${moduleName}-openapi.json") - specFile.writeText(""" -{ - "openapi": "3.0.3", - "info": { - "title": "${moduleName.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }} API", - "description": "REST API for ${moduleName} management", - "version": "1.0.0", - "contact": { - "name": "Meldestelle Development Team" - } - }, - "servers": [ - { - "url": "http://localhost:8080", - "description": "Development server" - }, - { - "url": "https://api.meldestelle.at", - "description": "Production server" - } - ], - "paths": {}, - "components": { - "securitySchemes": { - "bearerAuth": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "JWT" - } - } - }, - "security": [ - { - "bearerAuth": [] - } - ] -} - """.trimIndent()) + specFile.writeText( + """ + { + "openapi": "3.0.3", + "info": { + "title": "${moduleName.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }} API", + "description": "REST API for $moduleName management", + "version": "1.0.0", + "contact": { + "name": "Meldestelle Development Team" + } + }, + "servers": [ + { "url": "http://localhost:8080", "description": "Development server" }, + { "url": "https://api.meldestelle.at", "description": "Production server" } + ], + "paths": {}, + "components": { + "securitySchemes": { + "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } + } + }, + "security": [ { "bearerAuth": [] } ] + } + """.trimIndent() + ) } - println("✅ OpenAPI documentation generated in docs/api/generated/") } } -tasks.register("validateDocumentation") { - description = "Validates documentation completeness and consistency" - group = "documentation" - - doLast { - println("🔍 Validating documentation...") - exec { - commandLine("./scripts/validation/validate-docs.sh") - } - } -} - tasks.register("generateAllDocs") { description = "Generates all documentation (API docs + validation)" group = "documentation" - dependsOn("generateOpenApiDocs", "validateDocumentation") } -// Wrapper task configuration for the root project +// Wrapper-Konfiguration tasks.wrapper { gradleVersion = "8.14" distributionType = Wrapper.DistributionType.BIN diff --git a/core/core-utils/src/main/resources/logback.xml b/core/core-utils/src/main/resources/logback.xml new file mode 100644 index 00000000..6ccb8a04 --- /dev/null +++ b/core/core-utils/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 30382bc1..ea874ac8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -50,7 +50,7 @@ testcontainers = "1.19.6" # --- Utilities --- uuid = "0.8.4" bignum = "0.3.9" -logback = "1.5.6" +logback = "1.5.13" caffeine = "3.1.8" reactorKafka = "1.3.22" jackson = "2.17.0" diff --git a/platform/platform-dependencies/build.gradle.kts b/platform/platform-dependencies/build.gradle.kts index 63073c36..101b7c70 100644 --- a/platform/platform-dependencies/build.gradle.kts +++ b/platform/platform-dependencies/build.gradle.kts @@ -1,34 +1,3 @@ -/* -// Multiplatform -plugins { - alias(libs.plugins.kotlin.multiplatform) -} - -kotlin { - jvm() - js(IR) { - browser() - } - - sourceSets { - val commonMain by getting { - dependencies { - api(libs.kotlinx.coroutines.core) - api(libs.kotlinx.serialization.json) - api(libs.kotlinx.datetime) - } - } - - val jvmMain by getting { - dependencies { - api(libs.kotlin.logging.jvm) - api(libs.kotlinx.coroutines.reactor) - } - } - } -} -*/ - // Dieses Modul ist ein reines "Sammelmodul". // Es hat keinen eigenen Code, sondern bündelt nur gemeinsame Laufzeit-Abhängigkeiten, // die von den meisten JVM-Modulen benötigt werden. @@ -47,4 +16,5 @@ dependencies { api(libs.kotlinx.datetime) api(libs.kotlin.logging.jvm) api(libs.kotlinx.coroutines.reactor) + api(libs.logback.classic) } diff --git a/platform/platform-testing/build.gradle.kts b/platform/platform-testing/build.gradle.kts index 3c571be5..91f0e291 100644 --- a/platform/platform-testing/build.gradle.kts +++ b/platform/platform-testing/build.gradle.kts @@ -1,44 +1,3 @@ -/* -plugins { - alias(libs.plugins.kotlin.multiplatform) -} - -kotlin { - jvm() - js(IR) { - browser() - } - - sourceSets { - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - api(libs.kotlinx.coroutines.test) - } - } - - 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) - - api(libs.mockk) - api(libs.assertj.core) - api(libs.spring.boot.starter.test) - api(libs.h2.driver) - - api(libs.testcontainers.core) - api(libs.testcontainers.junit.jupiter) - api(libs.testcontainers.postgresql) - } - } - } -} - - */ - // Dieses Modul bündelt alle für JVM-Tests notwendigen Abhängigkeiten. // Jedes Modul, das Tests enthält, sollte dieses Modul mit `testImplementation` einbinden. plugins {