Last active
December 7, 2022 09:56
-
-
Save skjolber/bc265b615de33c8c8b6a3c84f9ab49eb to your computer and use it in GitHub Desktop.
.zsh_aliases
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add
source ~/.zsh_aliases
to .zshrc