#!/usr/bin/env bash # Writes output/13-maven-facts.txt: release dates and metadata read straight from Maven Central (retries on HTTP 429). set -uo pipefail cd "$(dirname "$0")/.." mkdir -p output M=https://repo1.maven.org/maven2 get() { # url -> body (retry on 429/empty) for i in 1 2 3 4 5 6; do body="$(curl -sS --fail "$1" 2>/dev/null)" && [ -n "$body" ] && { printf '%s' "$body"; return 0; } sleep 20 done return 1 } head_lm() { # url -> Last-Modified for i in 1 2 3 4 5 6; do lm="$(curl -sSI "$1" 2>/dev/null | tr -d '\r' | grep -i '^last-modified:' | cut -d' ' -f2-)" && [ -n "$lm" ] && { echo "$lm"; return 0; } sleep 20 done echo "unavailable" } meta() { # label path local x; x="$(get "$M/$2/maven-metadata.xml")" || { echo "$1: metadata unavailable"; return; } echo "$1: release=$(grep -o '[^<]*' <<<"$x" | cut -d'>' -f2) lastUpdated=$(grep -o '[^<]*' <<<"$x" | cut -d'>' -f2)" sleep 3 } { echo "# Maven Central facts, read $(date -u +%Y-%m-%d)" echo echo "# maven-metadata.xml: and (yyyyMMddHHmmss, UTC)" meta "com.vladmihalcea:hibernate-types-60 " com/vladmihalcea/hibernate-types-60 meta "com.vladmihalcea:hibernate-types-55 " com/vladmihalcea/hibernate-types-55 meta "com.vladmihalcea:hibernate-types-5 " com/vladmihalcea/hibernate-types-5 meta "io.hypersistence:hypersistence-utils-hibernate-71" io/hypersistence/hypersistence-utils-hibernate-71 meta "io.hypersistence:hypersistence-utils-hibernate-73" io/hypersistence/hypersistence-utils-hibernate-73 echo echo "# jar Last-Modified on Central (upload time)" for j in org/hibernate/orm/hibernate-core/7.4.14.Final/hibernate-core-7.4.14.Final.jar \ org/springframework/boot/spring-boot/4.1.2/spring-boot-4.1.2.jar \ io/hypersistence/hypersistence-utils-hibernate-73/3.16.0/hypersistence-utils-hibernate-73-3.16.0.jar; do echo "$(basename "$j"): $(head_lm "$M/$j")"; sleep 3 done echo echo "# hibernate.version that hypersistence-utils-hibernate-73:3.16.0 was built against (its pom)" get "$M/io/hypersistence/hypersistence-utils-hibernate-73/3.16.0/hypersistence-utils-hibernate-73-3.16.0.pom" | grep -E '^\s*' | sed 's/^ *//' echo echo "# newest Jackson 3 databind on Central" get "$M/tools/jackson/core/jackson-databind/maven-metadata.xml" | grep -E '' | sed 's/^ *//' } > output/13-maven-facts.txt cat output/13-maven-facts.txt