Ren*_*aud 50
mvn clean test
if [[ "$?" -ne 0 ]] ; then
echo 'could not perform tests'; exit $rc
fi
Run Code Online (Sandbox Code Playgroud)
$? 是一个特殊的shell变量,它包含最近最近执行的命令的退出代码(无论是否成功终止).-ne代表"不平等".所以这里我们测试退出代码mvn clean是否不等于零.Ric*_*ler 11
针对Maven 2返回错误返回码(即始终返回0)存在一些问题.特别是在Maven 2.0.9中修复的MNG-3651.
在旧版本中,mvn.bat以此行结束:
exit /B %ERROR_CODE%
Run Code Online (Sandbox Code Playgroud)
从Maven 2.0.9起,最后一行改为:
cmd /C exit /B %ERROR_CODE%
Run Code Online (Sandbox Code Playgroud)
因此,如果构建失败,则返回非0返回码.在构建错误的情况下,返回码为1.如果您无法升级到2.0.9+,则可以考虑如上所述修改mvn.bat以返回正确的代码.
unix/linux 的正确解决方案:
mvn clean install
rc=$?
if [ $rc -ne 0 ] ; then
echo Could not perform mvn clean install, exit code [$rc]; exit $rc
fi
Run Code Online (Sandbox Code Playgroud)
“if”语句本身是一个命令,如果成功,它将重置 $? 变量为 0。回声也是如此。所以,你必须使用一个中间的本地变量,例如 $rc 来存储来自“mvn clean install”的返回码,然后它也可以传递给“exit”命令。