如果有Pom验证警告,如何使mvn安装失败?

问题描述

我启动了一个带有一些警告的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