mvnauto

script to auto detect the version of maven from the pom.xml on a mac

#!/usr/bin/env bash

set -euo pipefail

# Path to Maven executable
MAVEN_CMD="/Users/paul.kane/Library/CloudStorage/OneDrive-AristocratGaming/devapps/apache-maven-3.9.1/bin/mvn"

# Try to extract Java version fields from pom.xml
java_version=$(xmllint --xpath "string(//*[local-name()='properties']/*[local-name()='java.version'])" pom.xml 2>/dev/null || echo "")
if [[ -z "$java_version" ]]; then
  java_version=$(xmllint --xpath "string(//*[local-name()='properties']/*[local-name()='maven.compiler.release'])" pom.xml 2>/dev/null || echo "")
fi
if [[ -z "$java_version" ]]; then
  java_version=$(xmllint --xpath "string(//*[local-name()='properties']/*[local-name()='maven.compiler.target'])" pom.xml 2>/dev/null || echo "")
fi
if [[ -z "$java_version" ]]; then
  java_version=$(xmllint --xpath "string(//*[local-name()='properties']/*[local-name()='maven.compiler.source'])" pom.xml 2>/dev/null || echo "")
fi

if [[ -n "$java_version" ]]; then
  echo "🔍 Detected Java version in pom.xml: $java_version"
  export JAVA_HOME=$(/usr/libexec/java_home -v "$java_version")
  echo "✅ Using Java from: $JAVA_HOME"
else
  echo "⚠️ No <java.version>, <maven.compiler.release>, <maven.compiler.target>, or <maven.compiler.source> found in pom.xml — using system default."
fi

# Run Maven with all passed arguments
exec "$MAVEN_CMD" "$@"

Last updated