Java 如果pom验证出现警告,如何使mvn安装失败?

Java 如果pom验证出现警告,如何使mvn安装失败?,java,maven,jenkins,lint,Java,Maven,Jenkins,Lint,我启动了一个maven构建(来自本地env或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/jenki

我启动了一个maven构建(来自本地env或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

另外,我发现使用“pipe”操作符隐藏了第一个命令的结果,并且我发现可以使用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

解决方案实际上比预期的要简单。 只是需要一个小脚本来运行构建。我省略了soem env vars

另外,我发现使用“pipe”操作符隐藏了第一个命令的结果,并且我发现可以使用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

不幸的是,情况并非如此。我没有java编译错误。我有畸形的POM。例如:没有版本的依赖项,在不允许使用变量的地方使用变量,etci更新了第一篇文章以添加更明确的警告问题是您正在使用一个表达式来表示一个版本,如
${version}
而是一个文本值,或者如果您正在使用,则必须使用一组特定的属性,包括Flatte maven插件。否则,这将导致其他喜欢使用pom的人无法使用pom。这是一个大问题。你应该修复…@khmarbaise我知道具体的问题是什么,如果出现这样的问题,我只需要构建失败。我更新了这篇文章,试图更清楚一些。不幸的是,事实并非如此。我没有java编译错误。我有畸形的POM。例如:没有版本的依赖项,在不允许使用变量的地方使用变量,etci更新了第一篇文章以添加更明确的警告问题是您正在使用一个表达式来表示一个版本,如
${version}
而是一个文本值,或者如果您正在使用,则必须使用一组特定的属性,包括Flatte maven插件。否则,这将导致其他喜欢使用pom的人无法使用pom。这是一个大问题。你应该修复…@khmarbaise我知道具体的问题是什么,如果出现这样的问题,我只需要构建失败。我更新了这篇文章,试图更清楚这已经被问到了