sudo: required dist: xenial language: java jdk: - openjdk8 - openjdk11 cache: directories: - $HOME/.m2 - $HOME/.p2 before_install: - echo "MAVEN_OPTS='-Xms1g -Xmx2g'" > ~/.mavenrc install: - | function prevent_timeout() { local i=0 while [ -e /proc/$1 ]; do # print zero width char every 3 minutes while building if [ "$i" -eq "180" ]; then printf %b '\u200b'; i=0; else i=$((i+1)); fi sleep 1 done } function print_reactor_summary() { sed -ne '/\[INFO\] Reactor Summary:/,$ p' "$1" | sed 's/\[INFO\] //' } function mvnp() { set -o pipefail # exit build with error when pipes fail local command=(mvn $@) exec "${command[@]}" 2>&1 | # execute, redirect stderr to stdout tee .build.log | # write output to log stdbuf -oL grep -E '^\[INFO\] Building .+ \[.+\]$' | # filter progress sed -uE 's/^\[INFO\] Building (.*[^ ])[ ]+\[([0-9]+\/[0-9]+)\]$/\2| \1/' | # prefix project name with progress sed -e :a -e 's/^.\{1,6\}|/ &/;ta' & # right align progress with padding local pid=$! prevent_timeout $pid & wait $pid } after_success: - print_reactor_summary .build.log after_failure: - tail -n 2000 .build.log script: - mvnp clean verify -B -DskipChecks