#!/usr/bin/env bash # Per maven-* reactor: run formatter-maven-plugin validate (Alibaba P3C Eclipse style). # Usage: from repo root, with JDK 8 on PATH: ./scripts/check_maven_formatter_validate.sh # Exit 1 if any project fails. set -euo pipefail REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" export JAVA_HOME="${JAVA_HOME:-/usr/lib/jvm/java-8-openjdk-amd64}" export PATH="${JAVA_HOME}/bin:${PATH}" CONFIG="${REPO_ROOT}/docs/style/alibaba-eclipse-codestyle.xml" # 2.17+ 需 Java 11 跑插件,2.24+ 需 Java 17;与项目 JDK8 一致时用 2.16.x FMT_VER="2.16.0" FMT_GOAL="net.revelc.code.formatter:formatter-maven-plugin:${FMT_VER}:validate" FAIL=0 echo "Using JAVA: $(command -v java) ($(java -version 2>&1 | head -1))" echo "Config: ${CONFIG}" echo "-----" for d in "${REPO_ROOT}"/maven-*/; do [ -d "$d" ] || continue name="$(basename "$d")" if [ ! -f "${d}pom.xml" ]; then echo "[SKIP] ${name} (no pom.xml)" continue fi echo ">>> ${name}" if (cd "$d" && mvn -q -DskipTests \ -DconfigFile="${CONFIG}" -DlineEnding=LF -Dproject.build.sourceEncoding=UTF-8 \ ${FMT_GOAL} 2>&1); then echo " [OK] ${name}" else echo " [FAIL] ${name}" FAIL=1 fi echo "-----" done if [ "$FAIL" -ne 0 ]; then echo "One or more projects failed formatter:validate. Run formatter:format to fix, then re-validate." exit 1 fi echo "All maven-* projects passed formatter:validate." exit 0