#!/usr/bin/env bash # Regenerates every file in output/. Needs JDK 25 (JAVA_HOME), Maven 3.9 and network access to Maven Central. # The "before" app (Boot 3.5.16) is never built in place: each stage is copied to a scratch directory. # Takes 15-25 minutes on a shared 2-vCPU box (each stage is a real Maven build and most start the app). set -u HERE=$(cd "$(dirname "$0")/.." && pwd); OUT=$HERE/output; W=${WORK:-/tmp/b4m-work} MVN=${MVN:-mvn}; PORT=${PORT:-18090}; URL=http://localhost:$PORT BOOT_OLD=3.5.16; BOOT_NEW=4.1.2 mkdir -p "$OUT"; rm -rf "$W"; mkdir -p "$W" mv_() { local d=$1; shift; (cd "$d" && $MVN -B -T1 "$@" 2>&1 | grep -vE 'JAVA_TOOL_OPTIONS|^WARNING: |Download(ing|ed)' | sed "s#$W/##g"); } stage() { rm -rf "$W/$1"; mkdir -p "$W/$1"; cp -r "$HERE/$2/pom.xml" "$HERE/$2/src" "$W/$1/"; } bump() { sed -i "s#$BOOT_OLD#$BOOT_NEW#" "$W/$1/pom.xml"; } AFTER_MAIN=$HERE/after/src/main/java/com/ankurm/migration BEFORE_TEST=$HERE/before/src/test/java/com/ankurm/migration # start