问题描述
我启动了一个带有一些警告的Maven构建(从本地环境或jenkins),例如:
[WARNING] Some problems were encountered while building the effective model for com.example:application:jar:1.0-SNAPSHOT
[WARNING] some random warning @ com.example:application:${project.version},/var/jenkins_home/workspace/com-example/example/pom.xml,line 14,column 11
如果出现这种警告,是否有办法让mvn构建失败?
让我澄清一下:
我不需要特定参数(project.version变量)的解决方案
我跑步时需要它
mvn install
然后我收到“ [警告] ...某物”
mvn构建失败,我得到了1作为该过程的返回码:
mvn install
...
[WARNING]...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
解决方法
该解决方案实际上比预期的要容易。 只需一个小脚本即可运行构建。我省略了soem env vars。
此外,我发现使用“管道” |运算符,我隐藏了第一个命令的结果,发现使用PIPESTATUS env var
可以获取特定管道阶段的结果。./mvnw $MVN_CLI_OPTS -f $1 $2 | tee build.log
if [[ "${PIPESTATUS[0]}" == "1" ]]; then
echo "mvn build failed"
return 1
fi
#this will grep only in the first n rows of the log
head -n30 build.log | grep -in "\[WARNING\]"
if [[ ! -z "$FAIL_ON_WARNING" && $? == 0 ]]; then
echo "--------------------------------------"
echo "PLEASE FIX MAVEN BUILD WARNINGS AND RETRY"
echo "BUILD STATUS: FAILED"
echo "--------------------------------------"
return 1
fi