Add boot42-preview module: Spring Boot 4.2.0-M2 vs 4.1.1 forwarded headers, AMQP starters, buildpack cache, RestTemplate removal warnings
Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Gth99spB1CzQmBFofXmU4Z
This commit is contained in:
Executable
+78
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/env bash
|
||||
# Facts read from jars and POMs on Maven Central: nothing here needs a running application.
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
M="$HOME/.m2/repository/org/springframework/boot"
|
||||
CEN=https://repo1.maven.org/maven2/org/springframework/boot
|
||||
W=$(mktemp -d)
|
||||
for v in 4.1.1 4.2.0-M2; do for a in spring-boot-maven-plugin spring-boot-buildpack-platform spring-boot-amqp spring-boot-amqp-rabbitmq spring-boot-rabbitmq; do
|
||||
mvn -B -q dependency:get -Dartifact=org.springframework.boot:$a:$v >/dev/null 2>&1 || true
|
||||
done; done
|
||||
|
||||
{
|
||||
echo "# 03-amqp-starters (POM descriptions and contents straight from Maven Central)"
|
||||
for a in spring-boot-starter-amqp spring-boot-starter-rabbitmq spring-boot-starter-amqp-rabbitmq; do
|
||||
for v in 4.1.1 4.2.0-M2; do
|
||||
for try in 1 2 3 4 5; do
|
||||
code=$(curl -s -o "$W/p.xml" -w '%{http_code}' "$CEN/$a/$v/$a-$v.pom")
|
||||
[ "$code" = 429 ] || break
|
||||
sleep $((try * 3))
|
||||
done
|
||||
if [ "$code" = 200 ]; then
|
||||
d=$(grep -m1 '<description>' "$W/p.xml" | sed 's/ *<[^>]*>//g')
|
||||
dep=$(grep -E '<artifactId>spring-boot-(amqp|rabbitmq|amqp-rabbitmq)</artifactId>' "$W/p.xml" | sed 's/ *<[^>]*>//g' | paste -sd, -)
|
||||
printf '%-34s %-10s HTTP %s "%s" -> %s\n' "$a" "$v" "$code" "$d" "$dep"
|
||||
else
|
||||
printf '%-34s %-10s HTTP %s (does not exist)\n' "$a" "$v" "$code"
|
||||
fi
|
||||
done
|
||||
done
|
||||
echo
|
||||
echo "# auto-configuration each module registers (AutoConfiguration.imports)"
|
||||
for a in spring-boot-amqp spring-boot-rabbitmq spring-boot-amqp-rabbitmq; do
|
||||
for v in 4.1.1 4.2.0-M2; do
|
||||
j="$M/$a/$v/$a-$v.jar"
|
||||
if [ -f "$j" ]; then
|
||||
echo "--- $a $v"; unzip -p "$j" META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 2>/dev/null | sed 's/^/ /' || true; echo
|
||||
fi
|
||||
done
|
||||
done
|
||||
} > output/03-amqp-starters.txt
|
||||
|
||||
{
|
||||
echo "# 04-buildpack-cache-classes (javap, spring-boot-buildpack-platform and spring-boot-maven-plugin)"
|
||||
for v in 4.1.1 4.2.0-M2; do
|
||||
echo "--- buildpack-platform $v: classes matching Cache"
|
||||
unzip -l "$M/spring-boot-buildpack-platform/$v/spring-boot-buildpack-platform-$v.jar" | awk '{print $4}' | grep -E 'build/.*Cache' | sed 's#.*/build/# #'
|
||||
done
|
||||
mkdir -p "$W/bp"
|
||||
unzip -q -o "$M/spring-boot-buildpack-platform/4.2.0-M2/spring-boot-buildpack-platform-4.2.0-M2.jar" 'org/springframework/boot/buildpack/platform/build/*Cache*' -d "$W/bp"
|
||||
unzip -q -o "$M/spring-boot-maven-plugin/4.2.0-M2/spring-boot-maven-plugin-4.2.0-M2.jar" 'org/springframework/boot/maven/*' -d "$W/bp"
|
||||
echo "--- javap Cache (4.2.0-M2)"
|
||||
javap -cp "$W/bp" org.springframework.boot.buildpack.platform.build.Cache 2>/dev/null | sed 's/org.springframework.boot.buildpack.platform.build.//g; s/org.springframework.boot.buildpack.platform.docker.type.//g'
|
||||
for c in 'org.springframework.boot.maven.CacheInfo' 'org.springframework.boot.maven.LocalCacheInfo'; do
|
||||
echo "--- javap $c (4.2.0-M2)"
|
||||
javap -cp "$W/bp" "$c" 2>/dev/null | sed 's/org.springframework.boot.maven.//g; s/org.springframework.boot.buildpack.platform.build.//g'
|
||||
done
|
||||
echo "--- javap -p Image, fields mentioning cache/workspace (4.2.0-M2)"
|
||||
javap -p -cp "$W/bp" org.springframework.boot.maven.Image 2>/dev/null | grep -E '(Cache|buildWorkspace)[a-zA-Z]* [a-zA-Z]+;$' | sed 's/org.springframework.boot.maven.//g'
|
||||
} > output/04-buildpack-cache-classes.txt
|
||||
|
||||
{
|
||||
echo "# 05-resttemplate-deprecations (javac -Xlint:deprecation on src/broken/UsesRestTemplate.java)"
|
||||
for pom in pom-41.xml pom.xml; do
|
||||
mvn -B -q -f $pom dependency:build-classpath -Dmdep.outputFile="$W/cp.txt" >/dev/null 2>&1
|
||||
label=$([ $pom = pom.xml ] && echo 4.2.0-M2 || echo 4.1.1)
|
||||
echo "--- Spring Boot $label"
|
||||
mkdir -p "$W/out-$label"
|
||||
javac -Xlint:deprecation -d "$W/out-$label" -cp "$(cat "$W/cp.txt")" src/broken/UsesRestTemplate.java 2>&1 | grep -v JAVA_TOOL | sed 's#^src/broken/##' || true
|
||||
done
|
||||
} > output/05-resttemplate-deprecations.txt
|
||||
|
||||
{
|
||||
echo "# 06-restclient-replacement (javac -Xlint:deprecation on the RestClient version, Spring Boot 4.2.0-M2)"
|
||||
mvn -B -q dependency:build-classpath -Dmdep.outputFile="$W/cp.txt" >/dev/null 2>&1
|
||||
mkdir -p "$W/out-rc"
|
||||
javac -Xlint:deprecation -Xlint:removal -d "$W/out-rc" -cp "$(cat "$W/cp.txt")" src/main/java/com/ankurm/boot42/RestClientReplacement.java 2>&1 | grep -v JAVA_TOOL | sed 's#^src/main/java/com/ankurm/boot42/##' || true
|
||||
echo "javac finished; lines above this one are warnings (none means a clean compile)"
|
||||
} > output/06-restclient-replacement.txt
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
# Regenerates every file under output/. Needs JDK 25 and Maven 3.9 with network access to Maven Central.
|
||||
# ./scripts/run-all.sh
|
||||
# 01-02 come from the test suite (run on 4.2.0-M2, then on 4.1.1 via pom-41.xml, which writes the *-on-4.1.1 files).
|
||||
# 03-06 come from jars, POMs and javac. Port numbers are random, so the transcripts print "<random>".
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
mvn -B test
|
||||
mvn -B -f pom-41.xml test
|
||||
./scripts/capture-facts.sh
|
||||
ls -1 output
|
||||
Reference in New Issue
Block a user