Just add to your .bashrc or .bash_profile as:
source ~/bin/mvn-color.sh
| #!/usr/bin/env bash | |
| # Formatting constants | |
| export BOLD=`tput bold` | |
| export UNDERLINE_ON=`tput smul` | |
| export UNDERLINE_OFF=`tput rmul` | |
| export TEXT_BLACK=`tput setaf 0` | |
| export TEXT_RED=`tput setaf 1` | |
| export TEXT_GREEN=`tput setaf 2` | |
| export TEXT_YELLOW=`tput setaf 3` | |
| export TEXT_BLUE=`tput setaf 4` | |
| export TEXT_MAGENTA=`tput setaf 5` | |
| export TEXT_CYAN=`tput setaf 6` | |
| export TEXT_WHITE=`tput setaf 7` | |
| export BACKGROUND_BLACK=`tput setab 0` | |
| export BACKGROUND_RED=`tput setab 1` | |
| export BACKGROUND_GREEN=`tput setab 2` | |
| export BACKGROUND_YELLOW=`tput setab 3` | |
| export BACKGROUND_BLUE=`tput setab 4` | |
| export BACKGROUND_MAGENTA=`tput setab 5` | |
| export BACKGROUND_CYAN=`tput setab 6` | |
| export BACKGROUND_WHITE=`tput setab 7` | |
| export RESET_FORMATTING=`tput sgr0` | |
| export EXCLUDING_FORMATTED="/^"$'\E'"\[([0-9]{1,2}(;[0-9]{1,2})*)?m/!" | |
| export INFO_DIVIDER="s/(\[INFO *\]\ [-<>=].*|[-<>=]{3,})/${TEXT_BLUE}${BOLD}\1${RESET_FORMATTING}/g" | |
| export INFO_BRACKET="s/(\[INFO *\]\ .*)([[{].*[]}]|[[{]$)/\1${RESET_FORMATTING}${BOLD}\2${RESET_FORMATTING}/g" | |
| export INFO_EXECUTION="s/(\[INFO *\]\ [-<>=]*\ )([^:\ ]*)(:[0-9.]*)(-SNAPSHOT)?(:[^\ ]*\ )(\(.*\)\ )*([@])*(\ [^\ ][^\ ]*)*(\ [-<>=]*)/${TEXT_BLUE}${BOLD}\1${RESET_FORMATTING}${TEXT_YELLOW}${BOLD}\2${RESET_FORMATTING}${TEXT_WHITE}${BOLD}\3\4${RESET_FORMATTING}${TEXT_CYAN}${BOLD}\5${RESET_FORMATTING}${TEXT_CYAN}\6${RESET_FORMATTING}${TEXT_YELLOW}\7${RESET_FORMATTING}${TEXT_BLUE}${BOLD}\8${RESET_FORMATTING}/g" | |
| export INFO_SUCCESS="s/(\[INFO *\]\ BUILD SUCCESS)/${BOLD}${TEXT_GREEN}\1${RESET_FORMATTING}/g" | |
| export INFO_FAILURE="s/(\[INFO *\]\ BUILD FAILURE)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}/g" | |
| export INFO_DEPENDENCY_TREE="s/(\[INFO *\]\ [\|\+\ \\\-]*[\\w\ -]*)([^:\ ]*):([^:\ ]*):([^0-9]*)*(:[^:]*[0-9][^:]*):*([^:]*)*/${TEXT_BLACK}${BOLD}\1${RESET_FORMATTING}${TEXT_YELLOW}\2${RESET_FORMATTING} : ${TEXT_YELLOW}${BOLD}\3${RESET_FORMATTING} : \4${RESET_FORMATTING} : ${TEXT_WHITE}${BOLD}v\5${RESET_FORMATTING} : ${TEXT_BLUE}${BOLD}\6${RESET_FORMATTING}/g" | |
| export INFO_DEPENDENCY_MENTION="${EXCLUDING_FORMATTED} s/(\[INFO *\]\ .*\ )([^:]*:)?([^:]*:)?([0-9\.]*)(.*)*/${TEXT_BLACK}${BOLD}\1${RESET_FORMATTING}${TEXT_YELLOW}\2${RESET_FORMATTING}${TEXT_YELLOW}${BOLD}\3${RESET_FORMATTING}${TEXT_WHITE}${BOLD}\4${RESET_FORMATTING}${TEXT_BLACK}${BOLD}\5/g" | |
| export WARNING_BRACKET="s/(\[WARNING\].*)/${TEXT_YELLOW}\1${RESET_FORMATTING}/g" | |
| export WARNING_LOWER="s/(\[warn *\].*|\[WARN *\].*)/${TEXT_YELLOW}\1${RESET_FORMATTING}/g" | |
| export WARNING_MSG="s/(\[INFO *\]\ WARNING:.*)/${TEXT_YELLOW}\1${RESET_FORMATTING}/g" | |
| export ERROR_MSG="s/(\[ERROR *\].*)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}/g" | |
| export PATH_PACKAGE="s/([^,\ :]*[/.][^,\ :][^,\ ]*)/${BOLD}${TEXT_WHITE}\1${RESET_FORMATTING}/g" | |
| export TEST_RESULTS="s/Tests run: ([^,]*), Failures: ([^,]*), Errors: ([^,]*), Skipped: ([^,]*)/${BOLD}${TEXT_GREEN}Tests run: \1${RESET_FORMATTING}, Failures: ${BOLD}${TEXT_RED}\2${RESET_FORMATTING}, Errors: ${BOLD}${TEXT_RED}\3${RESET_FORMATTING}, Skipped: ${BOLD}${TEXT_YELLOW}\4${RESET_FORMATTING}/g" | |
| export NO_TAG="${EXCLUDING_FORMATTED} s/^([^[])/${RESET_FORMATTING}\1/g" | |
| # Wrapper function for Maven's mvn command. | |
| mvn-color() | |
| { | |
| # Filter mvn output using sed | |
| LANG=C | |
| mvn $@ | sed -E \ | |
| -e "${INFO_DIVIDER}" \ | |
| -e "${INFO_BRACKET}" \ | |
| -e "${INFO_EXECUTION}" \ | |
| -e "${INFO_SUCCESS}" \ | |
| -e "${INFO_FAILURE}" \ | |
| -e "${PATH_PACKAGE}" \ | |
| -e "${INFO_DEPENDENCY_TREE}" \ | |
| -e "${INFO_DEPENDENCY_MENTION}" \ | |
| -e "${WARNING_BRACKET}" \ | |
| -e "${WARNING_LOWER}" \ | |
| -e "${WARNING_MSG}" \ | |
| -e "${ERROR_MSG}" \ | |
| -e "${TEST_RESULTS}" \ | |
| -e "${NO_TAG}" | |
| # Make sure formatting is reset | |
| echo -ne ${RESET_FORMATTING} | |
| } | |
| mvn-nocolor() | |
| { | |
| mvn $@ | |
| } | |
| # Override the mvn command with the colorized one. | |
| alias mvn="mvn-color" |