--- /dev/null
+#!/bin/bash
+# Erzeugt den Gradle-Wrapper-JAR, der wegen Mail-Sicherheitsfiltern nicht im
+# Repository enthalten ist. Einmalig ausführen, bevor ./gradlew verwendet wird.
+#
+# Variante 1: Verwendet eine lokale Gradle-Installation, falls vorhanden.
+# Variante 2: Lädt den JAR direkt von GitHub herunter.
+#
+# Mit --distribute werden Gradle-Wrapper-JAR und gradlew zusätzlich in alle
+# Geschwister-Übungsverzeichnisse kopiert (setzt TGZ-Verzeichnisstruktur voraus).
+
+set -e
+
+WRAPPER_JAR="gradle/wrapper/gradle-wrapper.jar"
+PROPERTIES="gradle/wrapper/gradle-wrapper.properties"
+
+DISTRIBUTE=false
+[ "$1" = "--distribute" ] && DISTRIBUTE=true
+
+if [ ! -f "$WRAPPER_JAR" ] || [ ! -f "gradlew" ]; then
+ VERSION=$(grep distributionUrl "$PROPERTIES" | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?')
+ echo "Benötigte Gradle-Version: $VERSION"
+
+ if command -v gradle >/dev/null 2>&1; then
+ echo "Verwende lokale Gradle-Installation..."
+ gradle wrapper --gradle-version="$VERSION"
+ echo "Gradle-Wrapper erfolgreich erzeugt."
+ else
+ echo "Kein lokales Gradle gefunden -- lade von GitHub (v${VERSION})..."
+ BASE="https://raw.githubusercontent.com/gradle/gradle/v${VERSION}"
+ mkdir -p gradle/wrapper
+ curl -fL "${BASE}/gradle/wrapper/gradle-wrapper.jar" -o "$WRAPPER_JAR"
+ curl -fL "${BASE}/gradlew" -o gradlew
+ chmod +x gradlew
+ echo "Gradle-Wrapper erfolgreich heruntergeladen."
+ fi
+else
+ echo "Gradle-Wrapper bereits vorhanden."
+fi
+
+if $DISTRIBUTE; then
+ TRAINING_ROOT="$(cd ../.. && pwd)"
+ echo "Verteile Gradle-Wrapper in: $TRAINING_ROOT"
+ find "$TRAINING_ROOT" -name "gradle-wrapper.properties" ! -path "$(pwd)/*" | while read -r props; do
+ dir="$(dirname "$props")"
+ target_jar="$dir/gradle-wrapper.jar"
+ target_gradlew="$(cd "$dir/../.." && pwd)/gradlew"
+ if [ ! -f "$target_jar" ]; then
+ cp "$WRAPPER_JAR" "$target_jar"
+ echo " JAR → $target_jar"
+ fi
+ if [ ! -f "$target_gradlew" ]; then
+ cp gradlew "$target_gradlew"
+ echo " gradlew → $target_gradlew"
+ fi
+ done
+fi