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

2.2 KiB

📓 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.