Я рефакторинговал код в функции, для этого случая важна функция disable_xtrace_and_return_status
и как она возвращает статус, полученный от запущенной maven. Хотя раньше я обманывал себя, думая, что это работает...
function disable_xtrace_and_return_status() {
set +o xtrace
return $1
}
function run() {
if [ -n "$WERCKER_MAVEN_DEBUG" ]; then
if [ "$WERCKER_MAVEN_DEBUG" -ge "1" ]; then
set -o xtrace
if [ "$WERCKER_MAVEN_DEBUG" -ge "2" ]; then
env
if [ "$WERCKER_MAVEN_DEBUG" -ge "3" ]; then
local debug="--debug"
fi
fi
fi
fi
if [ -e "$WERCKER_MAVEN_SETTINGS" ]; then
local settings="--settings=${WERCKER_MAVEN_SETTINGS}"
fi
mvn --update-snapshots \
--batch-mode \
-Dmaven.repo.local=${WERCKER_CACHE_DIR} \
${settings} ${debug} \
${WERCKER_MAVEN_GOALS}
disable_xtrace_and_return_status $?
}
run;