Für allgemeinen Projekt-Kontext (Build, Docker, Credentials, Aliases):
../../CLAUDE.md
3-schichtige Maven-Multi-Modul-Applikation:
jeeeraaah/
├── common/ Gemeinsame API-Verträge
│ └── api/
│ ├── bean/ Data Transfer Objects (DTOs)
│ ├── domain/ Domain-Interfaces (TaskService, TaskGroup, Task)
│ ├── mapping/ Mapping-Interfaces
│ └── ws_rs/ JAX-RS-Vertragsinterfaces
│
├── backend/ OpenLiberty Server-Side
│ ├── common/
│ │ └── mapping_jpa_dto/ JPA-Entity ↔ DTO Mapping (MapStruct)
│ ├── persistence/
│ │ └── jpa/ JPA-Entities, Repositories, persistence.xml
│ └── api/
│ ├── open-liberty/
│ │ └── shared/ Geteilte Liberty-Konfiguration
│ └── ws_rs/ WAR-Modul — REST API Endpoint (deployed auf Liberty)
│
└── frontend/ JavaFX Desktop-Applikation
├── common/
│ └── mapping_bean_fxbean/ DTO ↔ JavaFX Bean Mapping (MapStruct)
├── api_client/
│ └── ws_rs/ Jersey REST-Client (ruft Backend auf)
└── ui/
├── fx/ Haupt-Frontend-Modul (alle AppRunner)
├── fx_model/ JavaFX Observable Models
└── fx_executable/ Executable JAR
TaskGroup (1) ──── (*) Task
Tasks zusammen. Ein Task gehört immer zu genau einer TaskGroup.Paket-Basis: de.ruu.app.jeeeraaah.*
| Eigenschaft | Wert |
|---|---|
| Context Root | /jeee-raaah |
| Port | 9080 |
| Liberty Features | jakartaee-10.0, microProfile-6.1, mpJwt-2.1, appSecurity-5.0 |
| JNDI DataSource | jdbc/datasource_postgresql |
| Persistence Provider | Hibernate (via persistenceContainer-3.1) |
| Konfiguration | backend/api/ws_rs/src/main/liberty/config/server.xml |
| MicroProfile Config | backend/api/ws_rs/src/main/resources/META-INF/microprofile-config.properties |
cd root/app/jeeeraaah/backend/api/ws_rs
mvn liberty:dev # Dev-Mode (Hot-Reload, Strg+C zum Beenden)
# oder:
ruu-liberty-dev
Das WAR-Modul (backend/api/ws_rs) hat bewusst keine module-info.java — WAR-Dateien laufen im Liberty-Classpath, JPMS greift hier nicht. VS Code zeigt hier falsche Fehlermeldungen; der Maven-Build ist maßgeblich.
Alle lauffähigen Apps liegen in frontend/ui/fx/src/main/java/de/ruu/app/jeeeraaah/frontend/ui/fx/:
| AppRunner | Beschreibung |
|---|---|
MainAppRunner |
Haupt-Einstiegspunkt |
DashAppRunner (ehemaliger Hauptfokus) |
Task-Management-Dashboard |
GanttAppRunner |
Gantt-Diagramm |
TaskEditorAppRunner |
Task bearbeiten |
TaskViewAppRunner |
Task anzeigen |
TaskHierarchyPredecessorsAppRunner |
Vorgänger-Hierarchie |
TaskHierarchySuccessorsAppRunner |
Nachfolger-Hierarchie |
TaskHierarchySuperSubTasksAppRunner |
Super-/Sub-Task-Hierarchie |
TaskListDirectNeighboursAppRunner |
Liste direkter Nachbarn |
ConfiguratorAppRunner (2x) |
Konfigurator für Hierarchie-Relationen |
cd root/app/jeeeraaah/frontend/ui/fx
mvn exec:java # DashApp
mvn exec:java@gantt # GanttApp
mvn exec:java@main # MainApp
# oder VS Code Tasks:
# "🚀 Frontend: Start MainApp"
# "🎨 Frontend: Start DashApp"
# "🎩 Frontend: Start GanttApp"
Login: testuser / testpassword
Alle Module außer dem WAR-Backend haben module-info.java.
Paket-Muster: de.ruu.app.jeeeraaah.<layer>.<sublayer>
Modul-Benennung entspricht den Artifact-IDs, z. B.:
de.ruu.app.jeeeraaah.common.api.domainde.ruu.app.jeeeraaah.backend.persistence.jpade.ruu.app.jeeeraaah.frontend.ui.fxExportregeln:
exports)internal/) werden nicht exportiertorg.mapstruct Prozessor-ModulFacade-Pattern (in diesem Projekt verwendet):
module mapping.module {
exports mapping.module; // Facade
exports mapping.module.jpa.dto to org.mapstruct; // Nur für MapStruct
// mapping.module.internal bleibt versteckt
}
Details und Troubleshooting: JPMS-REFERENCE.md
In root/app/jeeeraaah/doc/md/:
| Dokument | Status |
|---|---|
jpms in action - jeeeraaah/ |
⚠️ UNVOLLSTÄNDIG — Keycloak-Kapitel endet abrupt bei “The Server Side” |
modular-software-in-java/ |
✅ Vollständig |
Kritische offene Aufgabe: Keycloak-Kapitel in “JPMS in Action” vervollständigen.
In root/lib/ — wiederverwendbare Bibliotheken, die auch außerhalb von jeeeraaah verwendbar sind:
| Modul | Beschreibung |
|---|---|
keycloak_admin |
Keycloak Admin & Setup |
jpa/ |
JPA-Kern, MapStruct-Integration, Hibernate/PostgreSQL |
fx/ |
JavaFX Komponenten-Framework |
office/word/jasperreports/ |
JasperReports Client & Server |
docker_health |
Docker Health-Check-Utilities |
util |
Allgemeine Hilfsmethoden |
mp_config |
MicroProfile Config Utilities |
cdi |
CDI-Erweiterungen |
jackson |
JSON-Verarbeitung |
jdbc |
JDBC-Utilities |
jsonb |
JSON Binding |
junit |
Test-Utilities |
mapstruct |
Bean Mapping SPI |
ws_rs |
JAX-RS Utilities |
archunit |
Architektur-Tests |
postgres_util_ui |
PostgreSQL UI-Utilities |
Paket-Basis Libs: de.ruu.lib.*