meldestelle/docs/99_Journal/2026-04-16_Gradle-Performance-Fix.md
2026-04-16 19:18:58 +02:00

43 lines
2.2 KiB
Markdown

# 📓 Journal-Eintrag: 2026-04-16 - Gradle Build-Performance Optimierung
## 🏗️ Status Quo
Die Build-Zeiten stiegen nach der Integration von `wasmJs` auf bis zu 32 Minuten an. Dies lag primär daran, dass für
fast alle Module (Backend-Domains, Core, Frontend) bei jedem Build auch die JS- und WASM-Targets kompiliert wurden,
obwohl diese für die Desktop-Entwicklung nicht benötigt werden.
## 🚀 Optimierungen
### 1. Wasm/JS Feature Toggle (`enableWasm`)
- **Neues Flag**: In der `gradle.properties` wurde das Flag `enableWasm=false` eingeführt.
- **Root build.gradle.kts**: Wenn `enableWasm=false` ist, werden alle Tasks, die `wasmJs`, `KotlinJs` oder `JsIr` im
Namen tragen, global deaktiviert.
- **Web-Shell Optimierung**: Das Modul `:frontend:shells:meldestelle-web` wurde so angepasst, dass die Targets `js` und
`wasmJs` sowie deren Abhängigkeiten nur dann konfiguriert werden, wenn das Flag aktiv ist.
### 2. Ressourcen-Management & Stabilität
- **Memory Settings**: Die JVM-Argumente für den Gradle-Daemon und den Kotlin-Daemon wurden auf 8GB (`-Xmx8g`)
vereinheitlicht, um OOM-Fehler bei intensiven JS-Kompilierungen zu vermeiden.
- **Parallelisierung**: `maxParallelForks` für Tests wurde auf `CPU/4` reduziert, um dem Gradle-Daemon in
Ressourcen-kritischen Phasen mehr Spielraum zu geben und Swapping zu verhindern.
- **Worker-Limits**: `org.gradle.workers.max=8` sorgt für eine kontrollierte Auslastung der CPU-Kerne.
### 3. Build-Hygiene
- Zusätzliche Deaktivierung von redundanten Resource-Processing Tasks (`jsProcessResources`, `wasmJsProcessResources`),
wenn Wasm deaktiviert ist.
- Unterdrückung von Node.js Deprecation Warnings in allen Exec-Tasks.
## 📈 Erwartetes Resultat
- **Desktop-Entwicklung**: Reduzierung der Build-Zeit um ca. 60-80%, da die kompletten JS/WASM Compiler-Pipelines
übersprungen werden.
- **Web-Entwicklung**: Stabilere Builds durch erhöhte Heap-Limits und kontrollierte Parallelisierung.
---
**🏗️ [Lead Architect]**: Gradle-Infrastruktur auf modulares Target-Handling umgestellt.
**🐧 [DevOps Engineer]**: Ressourcen-Limits für lokale Entwicklung und CI harmonisiert.
**🧹 [Curator]**: Build-Performance Strategie dokumentiert.