meldestelle/docs/99_Journal/2026-02-03_Session_Log_Gradle_Optimization.md

4.0 KiB

type status owner last_update
Journal ACTIVE Curator 2026-02-03

🧹 Session Log: Gradle Build-Optimierung & Refactoring

Datum: 03.02.2026 Teilnehmer: Lead Architect, User Thema: Umfassende Analyse, Bereinigung und Optimierung der Gradle Build-Skripte (Frontend, Backend, Platform).

📝 Zusammenfassung

In dieser Session wurde die gesamte Build-Infrastruktur des Projekts "Meldestelle" analysiert und refaktorisiert. Ziel war es, Redundanzen zu eliminieren (DRY), die Konsistenz zwischen Modulen zu erhöhen und die strikte Nutzung des Version Catalogs (libs.versions.toml) durchzusetzen. Ein kritischer Fehler im monitoring-server (Logback NoClassDefFoundError) wurde durch Korrekturen in der Dependency-Hierarchie behoben.

🛠️ Durchgeführte Änderungen

1. Version Catalog (libs.versions.toml)

  • Fix: Syntaxfehler bei npm-copy-webpack behoben (NPM-Pakete müssen in [versions] definiert und via devNpm referenziert werden).
  • Neu: sqliteWasm Version hinzugefügt.
  • Neu: logback-core hinzugefügt, um Versionskonflikte mit Spring Boot zu vermeiden.

2. Root & Settings

  • settings.gradle.kts: Hardcodierte Plugin-Versionen entfernt (soweit technisch möglich). Ausnahme: foojay-resolver muss aufgrund des Build-Lifecycles hardcodiert bleiben.
  • build.gradle.kts (Root):
    • Zentralisierung der Kotlin Compiler-Optionen (JVM 25, -Xexpect-actual-classes).
    • Globale Konfiguration für tasks.test (JUnit Platform, Heap Size).
    • Reduzierung von "Noise" bei JS-Builds (Duplicate Strategy).

3. Frontend (KMP)

  • frontend/core/*:
    • Entfernung redundanter compilerOptions und jvmToolchain Konfigurationen.
    • Vereinheitlichung der JS-Target Konfiguration (browser(), binaries.library()).
    • Bereinigung von auth, design-system, local-db, navigation, network, sync.
  • frontend/features/ping-feature: Anpassung an Core-Standards.
  • frontend/shells/meldestelle-portal:
    • Korrektur der Webpack-Konfiguration (copy-webpack-plugin via Catalog).
    • Vereinfachung der Build-Logik.

4. Platform

  • platform-bom:
    • Aufnahme von logback-core in die Constraints, um Synchronität mit logback-classic zu erzwingen.
    • Bereinigung von auskommentiertem Code.
  • platform-testing:
    • Explizites Hinzufügen von logback-classic und logback-core, um Laufzeitfehler in Tests zu verhindern.
    • Entfernung redundanter Test-Konfigurationen.

5. Backend Infrastructure

  • Bereinigung aller Module (cache, event-store, gateway, messaging, persistence, security) von redundanten Konfigurationen (DRY).
  • Bugfix monitoring-server:
    • Problem: java.lang.NoClassDefFoundError bei JoranConfigurator (Logback).
    • Ursache: Versionskonflikt bzw. fehlendes logback-core im Test-Classpath durch Spring Boot BOM Interferenz.
    • Lösung: Explizites Hinzufügen von logback-core und logback-classic im monitoring-server sowie Anpassung der platform-bom.

6. Contracts

  • contracts/ping-api: Bereinigung und Konsistenzprüfung.

⚠️ Technische Highlights & Learnings

  • Settings Plugins & Version Catalog: Der Zugriff auf libs.* im plugins {} Block der settings.gradle.kts ist limitiert. Workaround: Version hardcodieren oder pluginManagement nutzen.
  • Logback & Spring Boot: Spring Boot managed Logback-Versionen aggressiv. Wenn man eine neuere Version (1.5.x) nutzen will als Spring Boot (1.4.x), muss man sowohl classic als auch core in der BOM erzwingen, sonst drohen NoClassDefFoundError zur Laufzeit.
  • KMP JS Targets: Die Konfiguration von js(IR) vs. js und browser() vs. nodejs() sollte projektweit konsistent sein, um Build-Probleme zu vermeiden.

Status

  • Build: SUCCESSFUL (./gradlew clean build)
  • Code Quality: Build-Skripte sind massiv entschlackt und wartbarer.

Eintrag erstellt durch Curator Agent.