#!/bin/bash
-# Technik-Check für Gradle.
-# Stellt sicher, dass der Gradle-Wrapper bereit ist, und führt den Build-Test durch.
-#
-# Ohne Schalter: scheitert mit Fehler, wenn der Wrapper veraltet ist.
-# --update: ersetzt einen veralteten Wrapper durch die benötigte Version.
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
WRAPPER_JAR="$SCRIPT_DIR/gradle/wrapper/gradle-wrapper.jar"
SELF_MARKER="$SCRIPT_DIR/gradle/wrapper/.gradle-version"
UPDATE=false
-for arg in "$@"; do
- case "$arg" in
- --update) UPDATE=true ;;
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --update) UPDATE=true; shift ;;
+ --help)
+ echo "Technik-Check für Gradle."
+ echo "Stellt sicher, dass der Gradle-Wrapper bereit ist, und führt einen vollständigen"
+ echo "Build- und Starttest durch."
+ echo ""
+ echo "Verwendung: ./README-gradle.sh [--update] [--help]"
+ echo ""
+ echo " --update Ersetzt veralteten Wrapper durch die benötigte Version"
+ echo " --help Diese Hilfe anzeigen"
+ exit 0 ;;
+ *) echo "Unbekannter Parameter: $1" >&2; exit 1 ;;
esac
done
#!/bin/bash
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --help)
+ echo "Technik-Check für Maven."
+ echo "Führt einen vollständigen Build- und Starttest durch."
+ echo ""
+ echo "Verwendung: ./README-maven.sh [--help]"
+ echo ""
+ echo " --help Diese Hilfe anzeigen"
+ exit 0 ;;
+ *) echo "Unbekannter Parameter: $1" >&2; exit 1 ;;
+ esac
+done
+
docker compose -f docker/docker-compose.yml up -d --remove-orphans kafka-1 kafka-2 kafka-3
docker compose -f docker/docker-compose.yml rm -svf technik-check
--- /dev/null
+#!/bin/bash
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
+TRAINING_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
+SPICKZETTEL="$(cd "$TRAINING_ROOT/.." && pwd)/spickzettel"
+
+PUBLISH=false
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --publish) PUBLISH=true; shift ;;
+ --help)
+ echo "Baut alle Musterlösungen aus dem spickzettel-Verzeichnis."
+ echo "Erkennt automatisch, welches Build-Setup nach der Initialisierung vorhanden ist:"
+ echo " pom.xml vorhanden → Maven"
+ echo " build.gradle + gradlew, kein pom.xml → Gradle"
+ echo " weder noch → kein Build-Setup, wird übersprungen"
+ echo ""
+ echo "Verwendung: ./build.sh [--publish] [--help]"
+ echo ""
+ echo " --publish Docker-Images nach dem Bauen veröffentlichen"
+ echo " --help Diese Hilfe anzeigen"
+ exit 0 ;;
+ *) echo "Unbekannter Parameter: $1" >&2; exit 1 ;;
+ esac
+done
+
+if [ ! -d "$SPICKZETTEL" ]; then
+ echo "Fehler: spickzettel-Verzeichnis nicht gefunden: $SPICKZETTEL" >&2
+ echo " Zuerst copy.sh aus dem scripting-Branch ausführen." >&2
+ exit 1
+fi
+
+FAILED=()
+
+while IFS= read -r dir; do
+ rel="${dir#${SPICKZETTEL}/}"
+
+ if [ -f "$dir/pom.xml" ]; then
+ echo -e "\nBaue $rel (Maven)"
+ (cd "$dir" && mvn clean install) || { FAILED+=("$rel (Maven: build)"); continue; }
+ if $PUBLISH; then
+ echo "Veröffentliche Docker-Image für $rel"
+ if [[ "$dir" == */grundlagen/* ]]; then
+ (cd "$dir" && mvn jib:build) || FAILED+=("$rel (Maven: jib:build)")
+ else
+ (cd "$dir" && mvn spring-boot:build-image -Dspring-boot.build-image.publish=true) \
+ || FAILED+=("$rel (Maven: build-image)")
+ fi
+ fi
+ elif [ -f "$dir/build.gradle" ] && [ -f "$dir/gradlew" ]; then
+ echo -e "\nBaue $rel (Gradle)"
+ (cd "$dir" && ./gradlew build) || { FAILED+=("$rel (Gradle: build)"); continue; }
+ if $PUBLISH; then
+ echo "Veröffentliche Docker-Image für $rel"
+ (cd "$dir" && ./gradlew bootBuildImage --publishImage) \
+ || FAILED+=("$rel (Gradle: bootBuildImage)")
+ fi
+ else
+ echo "Überspringe $rel: kein Build-Setup"
+ fi
+done < <(find "$SPICKZETTEL" -mindepth 2 -maxdepth 2 -type d | sort)
+
+if [ ${#FAILED[@]} -gt 0 ]; then
+ echo -e "\nFehler beim Bauen:"
+ for f in "${FAILED[@]}"; do
+ echo " $f"
+ done
+ exit 1
+fi
+
+echo -e "\nAlle Musterlösungen erfolgreich gebaut."
#!/bin/bash
-# Initialisiert die mit copy.sh kopierten Übungsverzeichnisse für die Schulung.
-# --maven (Standard): Entfernt Gradle-Artefakte aus den Übungsverzeichnissen.
-# --gradle: Gradle-Wrapper verteilen und Maven-Artefakte entfernen.
-# Scheitert mit Fehler, wenn der Wrapper noch nicht bereit ist -- erst README-gradle.sh ausführen.
-# Das eigene Verzeichnis (technik-check) wird in beiden Modi nicht verändert.
-# In beiden Modi werden Build-Ausgaben (target/, build/) und Caches (.gradle/) bereinigt.
-
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
SELF_MARKER="$SCRIPT_DIR/gradle/wrapper/.gradle-version"
MODE="maven"
-for arg in "$@"; do
- case "$arg" in
- --gradle) MODE="gradle" ;;
- --maven) MODE="maven" ;;
- *) echo "Unbekannter Schalter: $arg" >&2; exit 1 ;;
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --gradle) MODE="gradle"; shift ;;
+ --maven) MODE="maven"; shift ;;
+ --help)
+ echo "Initialisiert alle kopierten Übungsverzeichnisse für die Schulung."
+ echo "Muss aus dem technik-check-Verzeichnis aufgerufen werden."
+ echo "Das eigene Verzeichnis (technik-check) wird nicht verändert."
+ echo "In beiden Modi werden Build-Ausgaben (target/, build/) und Caches (.gradle/) bereinigt."
+ echo ""
+ echo "Verwendung: ./init-exercises.sh [--maven|--gradle] [--help]"
+ echo ""
+ echo " --maven (Standard) Entfernt Gradle-Artefakte; nur Maven bleibt"
+ echo " --gradle Verteilt Gradle-Wrapper und entfernt Maven-Artefakte."
+ echo " Erfordert vorherigen Aufruf von ./README-gradle.sh"
+ echo " --help Diese Hilfe anzeigen"
+ exit 0 ;;
+ *) echo "Unbekannter Parameter: $1" >&2; exit 1 ;;
esac
done
--- /dev/null
+#!/bin/bash
+set -e
+
+# Passt Gradle-Setups an einen internen Nexus-Mirror an.
+# Aufruf (aus dem Zielverzeichnis, z.B. ../vorlagen/):
+#
+# patch-nexus.sh <nexus-maven-url> [--gradle-dist-url=<url>]
+#
+# Ohne --gradle-dist-url bleibt gradle-wrapper.properties unverändert.
+# Falls Gradle-Distributionen ebenfalls über Nexus bereitgestellt werden,
+# muss dort ein "raw proxy"-Repository auf services.gradle.org/distributions/
+# eingerichtet sein.
+
+if [ "$1" = "" ]; then
+ echo "Aufruf: $(basename "$0") <nexus-maven-url> [--gradle-dist-url=<url>]"
+ echo ""
+ echo "Beispiel:"
+ echo " $(basename "$0") https://nexus.example.com/repository/maven-public/"
+ echo " $(basename "$0") https://nexus.example.com/repository/maven-public/ \\"
+ echo " --gradle-dist-url=https://nexus.example.com/repository/gradle-distributions/"
+ exit 1
+fi
+
+NEXUS_URL="$1"
+GRADLE_DIST_URL=""
+for arg in "${@:2}"; do
+ case "$arg" in
+ --gradle-dist-url=*) GRADLE_DIST_URL="${arg#--gradle-dist-url=}" ;;
+ *) echo "Unbekannter Parameter: $arg"; exit 1 ;;
+ esac
+done
+
+TMP_REPO_BLOCK=$(mktemp)
+TMP_PLUGIN_BLOCK=$(mktemp)
+
+cat > "$TMP_REPO_BLOCK" <<EOF
+ maven {
+ url '$NEXUS_URL'
+ }
+ maven {
+ name 'gradle plugins'
+ url 'https://plugins.gradle.org/m2/'
+ }
+EOF
+
+cat > "$TMP_PLUGIN_BLOCK" <<EOF
+pluginManagement {
+ repositories {
+ maven {
+ name 'Nexus-Internal Access'
+ url '$NEXUS_URL'
+ }
+ }
+}
+
+EOF
+
+echo "Bearbeite build.gradle-Dateien..."
+for file in */*/build.gradle; do
+ [ -f "$file" ] || continue
+ echo " $file"
+ sed -i '/mavenCentral()/d' "$file"
+ if grep -q 'repositories *{' "$file"; then
+ awk -v insert="$(cat "$TMP_REPO_BLOCK")" '
+ BEGIN { added=0 }
+ /repositories[[:space:]]*{/ {
+ print
+ if (!added) { print insert; added=1; next }
+ }
+ { print }
+ ' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
+ else
+ cat "$TMP_REPO_BLOCK" "$file" > "$file.tmp" && mv "$file.tmp" "$file"
+ fi
+done
+
+echo "Bearbeite settings.gradle-Dateien..."
+for file in */*/settings.gradle; do
+ [ -f "$file" ] || continue
+ echo " $file"
+ if ! grep -q 'pluginManagement' "$file"; then
+ cat "$TMP_PLUGIN_BLOCK" "$file" > "$file.tmp" && mv "$file.tmp" "$file"
+ else
+ echo " (pluginManagement bereits vorhanden -- uebersprungen)"
+ fi
+done
+
+if [ "$GRADLE_DIST_URL" != "" ]; then
+ echo "Bearbeite gradle-wrapper.properties-Dateien..."
+ for file in */*/gradle/wrapper/gradle-wrapper.properties; do
+ [ -f "$file" ] || continue
+ echo " $file"
+ # In .properties-Dateien muss ':' als '\:' escaped werden; awk erledigt das sauber
+ awk -v url="$GRADLE_DIST_URL" '
+ BEGIN { gsub(/:/, "\\:", url) }
+ /^distributionUrl=/ { print "distributionUrl=" url; next }
+ { print }
+ ' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
+ done
+fi
+
+rm -f "$TMP_REPO_BLOCK" "$TMP_PLUGIN_BLOCK"
+echo "Fertig."