#!/usr/bin/env bash # Reads the shutdown-related property defaults out of Boot's own configuration metadata, and the # SmartLifecycle phase constants out of the Boot jars with javap, instead of trusting doc prose. set -euo pipefail cd "$(dirname "$0")/.." mkdir -p output target/meta BOOT=4.1.1 M2=~/.m2/repository/org/springframework/boot { echo "# Property defaults read from spring-configuration-metadata.json (Boot $BOOT jars)" echo for jar in $(find "$M2" -name "*-$BOOT.jar" ! -name '*sources*' ! -name '*javadoc*' | sort); do { unzip -p "$jar" META-INF/spring-configuration-metadata.json 2>/dev/null || true; } | python3 -c ' import json,sys try: d=json.load(sys.stdin) except Exception: sys.exit(0) for p in d.get("properties",[]): if p["name"] in ("server.shutdown","spring.lifecycle.timeout-per-shutdown-phase","spring.threads.virtual.enabled"): print("%-46s type=%-40s default=%s" % (p["name"], p.get("type"), p.get("defaultValue"))) ' done } > output/18-property-defaults.txt cat output/18-property-defaults.txt