4.0 KiB
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-webpackbehoben (NPM-Pakete müssen in[versions]definiert und viadevNpmreferenziert werden). - Neu:
sqliteWasmVersion hinzugefügt. - Neu:
logback-corehinzugefügt, um Versionskonflikte mit Spring Boot zu vermeiden.
2. Root & Settings
settings.gradle.kts: Hardcodierte Plugin-Versionen entfernt (soweit technisch möglich). Ausnahme:foojay-resolvermuss 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).
- Zentralisierung der Kotlin Compiler-Optionen (JVM 25,
3. Frontend (KMP)
frontend/core/*:- Entfernung redundanter
compilerOptionsundjvmToolchainKonfigurationen. - Vereinheitlichung der JS-Target Konfiguration (
browser(),binaries.library()). - Bereinigung von
auth,design-system,local-db,navigation,network,sync.
- Entfernung redundanter
frontend/features/ping-feature: Anpassung an Core-Standards.frontend/shells/meldestelle-portal:- Korrektur der Webpack-Konfiguration (
copy-webpack-pluginvia Catalog). - Vereinfachung der Build-Logik.
- Korrektur der Webpack-Konfiguration (
4. Platform
platform-bom:- Aufnahme von
logback-corein die Constraints, um Synchronität mitlogback-classiczu erzwingen. - Bereinigung von auskommentiertem Code.
- Aufnahme von
platform-testing:- Explizites Hinzufügen von
logback-classicundlogback-core, um Laufzeitfehler in Tests zu verhindern. - Entfernung redundanter Test-Konfigurationen.
- Explizites Hinzufügen von
5. Backend Infrastructure
- Bereinigung aller Module (
cache,event-store,gateway,messaging,persistence,security) von redundanten Konfigurationen (DRY). - Bugfix
monitoring-server:- Problem:
java.lang.NoClassDefFoundErrorbeiJoranConfigurator(Logback). - Ursache: Versionskonflikt bzw. fehlendes
logback-coreim Test-Classpath durch Spring Boot BOM Interferenz. - Lösung: Explizites Hinzufügen von
logback-coreundlogback-classicimmonitoring-serversowie Anpassung derplatform-bom.
- Problem:
6. Contracts
contracts/ping-api: Bereinigung und Konsistenzprüfung.
⚠️ Technische Highlights & Learnings
- Settings Plugins & Version Catalog: Der Zugriff auf
libs.*implugins {}Block dersettings.gradle.ktsist limitiert. Workaround: Version hardcodieren oderpluginManagementnutzen. - 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
classicals auchcorein der BOM erzwingen, sonst drohenNoClassDefFoundErrorzur Laufzeit. - KMP JS Targets: Die Konfiguration von
js(IR)vs.jsundbrowser()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.