Skip to content

Instantly share code, notes, and snippets.

@skjolber
Last active December 7, 2022 09:56
Show Gist options
  • Save skjolber/bc265b615de33c8c8b6a3c84f9ab49eb to your computer and use it in GitHub Desktop.
Save skjolber/bc265b615de33c8c8b6a3c84f9ab49eb to your computer and use it in GitHub Desktop.
.zsh_aliases
# Mac
# JAVA 11 LTS
JDK11=/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
# JAVA 17 LTS
JDK17=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
##############################################
# maven aliases
##############################################
alias m=searchAutomaticJavaForMaven
alias mm="m clean install"
if [ ! -z "$JDK11" ]; then
alias m11="JAVA_HOME=$JDK11 mvn"
alias mm11="m11 clean install"
else
alias m11="echo No Java 11 JRE detected. Run 'source ~/.zsh_aliases' if installed."
alias mm11="m11"
fi
if [ ! -z "$JDK17" ]; then
alias m17="JAVA_HOME=$JDK17 mvn"
alias mm17="m17 clean install"
else
alias m17="echo No Java 17 JRE detected. Run 'source ~/.zsh_aliases' if installed."
alias mm17="m17"
fi
getPomProperty() {
local version=$(getPomXPath "/*/*[local-name()='properties']/*[local-name()='$1']/text()" "$2")
version=$(resolvePomProperty "$version" "$2")
echo "$version"
}
resolvePomProperty() {
local version="$1"
if [[ "$version" =~ ^\$\{.*\} ]] ; then
# https://stackoverflow.com/questions/428109/extract-substring-in-bash
[[ ${version} =~ ^\$\{(.*)\} ]] && propertyValue=${BASH_REMATCH[1]}
version=$(getPomProperty "$propertyValue" "$2")
fi
echo "$version"
}
getPomXPath() {
local version=$(xmllint --xpath "$1" $2 2>/dev/null)
version=$(resolvePomProperty "$version" "$2")
echo "$version"
}
detectJavaVersionForMaven()
{
# first check the new way of defining release in maven compiler plugin
VERSION=$(getPomXPath "//*[local-name()='artifactId' and text()='maven-compiler-plugin']/..//*[local-name()='configuration']/*[local-name()='release']/text()" "$1")
if [ -n "$VERSION" ]; then
if [[ "$VERSION" == *"}" ]]; then
unset VERSION
fi
fi
if [ -z "$VERSION" ]; then
VERSION=$(getPomProperty "maven.compiler.release" "$1")
fi
# check the old way of defining release in maven compiler plugin
if [ -z "$VERSION" ]; then
VERSION=$(getPomXPath "//*[local-name()='artifactId' and text()='maven-compiler-plugin']/..//*[local-name()='configuration']/*[local-name()='target']/text()" "$1")
fi
if [ -n "$VERSION" ]; then
if [[ "$VERSION" == *"}" ]]; then
unset VERSION
fi
fi
# https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
if [ -z "$VERSION" ]; then
VERSION=$(getPomProperty "maven.compiler.target" "$1")
fi
# check for Spring-related property
if [ -z "$VERSION" ]; then
VERSION=$(getPomProperty "java.version" "$1")
fi
echo "$VERSION"
}
runAutomaticJavaForMaven() {
local VERSION=$1
local SOURCE=$2
shift 2 # remove 2 arguments
if [ "$VERSION" = '1.8' ] || [ "$VERSION" = '8' ]; then
echo "Running Maven project at source level 8 with Java 11.."
m11 "$@"
elif [ "$VERSION" = '9' ]; then
echo "Running Maven project at source level 9 with Java 11.."
m11 "$@"
elif [ "$VERSION" = '10' ]; then
echo "Running Maven project at source level 10 with Java 11.."
m11 "$@"
elif [ "$VERSION" = '11' ]; then
echo "Running Maven with Java 11.."
m11 "$@"
elif [ "$VERSION" = '12' ]; then
echo "Running Maven project at source level 12 with Java 17.."
m17 "$@"
elif [ "$VERSION" = '13' ]; then
echo "Running Maven project at source level 13 with Java 17.."
m17 "$@"
elif [ "$VERSION" = '14' ]; then
echo "Running Maven project at source level 14 with Java 17.."
m17 "$@"
elif [ "$VERSION" = '15' ]; then
echo "Running Maven project at source level 15 with Java 17.."
m17 "$@"
elif [ "$VERSION" = '16' ]; then
echo "Running Maven project at source level 16 with Java 17.."
m17 "$@"
elif [ "$VERSION" = '17' ]; then
echo "Running Maven with Java 17.."
m17 "$@"
else
echo "Unable parse Java version $VERSION from $SOURCE, running with default."
mvn "$@"
fi
}
searchAutomaticJavaForMaven () {
local cpath=$(pwd)
while true; do
local VERSION=""
if [ -f "$cpath/pom.xml" ]; then
# check the pom for a versionkill
VERSION=$(detectJavaVersionForMaven "$cpath/pom.xml")
fi
if [ -n "$VERSION" ]; then
runAutomaticJavaForMaven "$VERSION" "$cpath/pom.xml" "$@"
break
fi
local nextPath=${cpath%/*}
if [[ -d "$cpath/.git" ]] || [[ "$nextPath" == "" ]] || [[ "$nextPath" == "$cpath" ]]; then
echo "Unable to autodetect Java version in pom, running with default."
mvn "$@"
break
fi
cpath="$nextPath"
done
}
alias test="echo $PATH"
alias m="searchAutomaticJavaForMaven"
alias mm="m clean install"
if [ ! -z "$JDK11" ]; then
alias m11="JAVA_HOME=$JDK11 mvn"
alias mm11="m11 clean install"
else
alias m11="echo No Java 11 JRE detected. Run 'source ~/.zsh_aliases' if installed."
alias mm11="m11"
fi
if [ ! -z "$JDK17" ]; then
alias m17="JAVA_HOME=$JDK17 mvn"
alias mm17="m17 clean install"
else
alias m17="echo No Java 17 JRE detected. Run 'source ~/.zsh_aliases' if installed."
alias mm17="m17"
fi
##############################################
# gradle aliases
##############################################
defaultArgument="--stacktrace"
alias w="./gradlew $defaultArgument"
alias ww="./gradlew build $defaultArgument"
alias wwi="./gradlew build --info $defaultArgument"
if [ ! -z "$JDK11" ]; then
alias w11="JAVA_HOME=$JDK11 ./gradlew $defaultArgument"
alias w11i="JAVA_HOME=$JDK11 ./gradlew --info $defaultArgument"
alias ww11="JAVA_HOME=$JDK11 ./gradlew build $defaultArgument"
alias ww11i="JAVA_HOME=$JDK11 ./gradlew build --info $defaultArgument"
else
alias w11="echo No Java 11 JRE detected. Run 'source ~/.zsh_aliases' if installed."
alias w11i="w11"
alias ww11="w11"
alias ww11i="w11"
fi
if [ ! -z "$JDK17" ]; then
alias w17="JAVA_HOME=$JDK17 ./gradlew $defaultArgument"
alias w17i="JAVA_HOME=$JDK17 ./gradlew --info $defaultArgument"
alias ww17="JAVA_HOME=$JDK17 ./gradlew build $defaultArgument"
alias ww17i="JAVA_HOME=$JDK17 ./gradlew build --info $defaultArgument"
else
alias w17="echo No Java 17 JRE detected. Run 'source ~/.zsh_aliases' if installed."
alias w17i="w17"
alias ww17="w17"
alias ww17i="w17"
fi
@skjolber
Copy link
Author

skjolber commented Dec 7, 2022

Add source ~/.zsh_aliases to .zshrc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment