- `pom.xml` und/oder `build.gradle` — Maven/Gradle-Build
- `src/` — Java-Quellcode (Gruppe `de.juplo.kafka`)
-Einige Branches enthalten **nur** eine `docker/docker-compose.yml` ohne Build-Dateien oder Quellcode. Dies sind reine Infrastruktur-Setups für Übungen, in denen Teilnehmer mit Kafka-Clients aus einer vorherigen Übung weiterexperimentieren.
+Einige Branches enthalten **nur** eine `docker/docker-compose.yml` ohne Build-Dateien oder Quellcode. Dies sind reine Infrastruktur-Setups für Übungen, in denen die zuvor als Image gebauten Artefakte in unterschiedlichen Setups verwendet werden, um das Verhalten der Technik zu analysieren.
Übung ausführen:
```bash
### Skripte im `springkafka/technik-check--vorlage`-Branch
-Dieser Branch enthält zwei zusätzliche Skripte für das Gradle-Setup:
+Dieser Branch enthält zwei zusätzliche Skripte für die Schulungs-Initialisierung:
| Skript | Zweck |
|--------|-------|
-| `bootstrap-gradle.sh` | Erzeugt den fehlenden `gradle-wrapper.jar` (per lokaler Gradle-Installation oder Download von GitHub). Mit `--distribute`: kopiert JAR und `gradlew` in alle Geschwister-Übungsverzeichnisse |
-| `README-gradle.sh` | Wie `README.sh`, aber für den Gradle-Build: ruft zuerst `bootstrap-gradle.sh` auf, baut dann mit `./gradlew bootBuildImage` |
+| `init-exercises.sh` | Initialisiert die mit `copy.sh` kopierten Übungsverzeichnisse (`vorlagen/`, `livecoding/`, `spickzettel/`). Standard: `--maven` (entfernt Gradle-Artefakte). Mit `--gradle`: verteilt Gradle-Wrapper (JAR, properties, gradlew) und entfernt Maven-Artefakte. Beide Modi löschen Build-Ausgaben und Caches. Scheitert mit Fehler, wenn `--gradle` verwendet wird, aber der Wrapper noch nicht bereit ist — dann zuerst `README-gradle.sh` ausführen. |
+| `README-gradle.sh` | Technik-Check für Gradle: stellt Gradle-Wrapper bereit (lädt ihn herunter, falls fehlend) und führt Build-Test durch. Ohne Schalter: scheitert laut, wenn installierte Version nicht zur benötigten passt. Mit `--update`: ersetzt veralteten Wrapper durch die benötigte Version. |
-`gradle-wrapper.jar` ist absichtlich nicht im Repository (wird von Unternehmens-Mail-Filtern blockiert). `gradlew` und `gradle/wrapper/gradle-wrapper.properties` sind versioniert.
+`gradle-wrapper.jar` ist absichtlich nicht im Repository (wird von Unternehmens-Mail-Filtern blockiert). `gradlew` und `gradle/wrapper/gradle-wrapper.properties` sind versioniert und definieren die maßgebliche Gradle-Version für alle Übungen der Schulung. Der Versions-Marker `gradle/wrapper/.gradle-version` ist gitignoriert.
### TGZ-Verzeichnisstruktur
-Branch-Namen bilden auch die Verzeichnisstruktur im verteilten TGZ ab: Der Branch `springkafka/technik-check--vorlage` wird als `springkafka/technik-check/` extrahiert. Von dort ist `../..` das Trainings-Wurzelverzeichnis — so funktioniert `bootstrap-gradle.sh --distribute` korrekt.
+Branch-Namen bilden auch die Verzeichnisstruktur im verteilten TGZ ab: Der Branch `springkafka/technik-check--vorlage` wird als `springkafka/technik-check/` extrahiert. Von dort ist `../..` das Trainings-Wurzelverzeichnis — so findet `init-exercises.sh` alle Übungsverzeichnisse korrekt.
## Einen neuen Übungs-Branch hinzufügen