chore: refactor Gradle config, standardize Kotlin MPP plugin usage, and update dependencies
- Unified plugin application across modules using `alias(libs.plugins.*)` instead of hardcoded IDs. - Removed redundant JVM/JS source map tasks, improving Gradle and Docker build consistency. - Updated dependencies, including `logback` and Webpack `copy-webpack-plugin`, and added contextual documentation. - Added frontend architecture diagram in PlantUML (`docs/01_Architecture/Reference`), standardizing feature-core-shell dependencies.
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# 🧹 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.*
|
||||
Reference in New Issue
Block a user