我想知道是否有办法从Shell脚本(用于构建过程)中“查询”Maven执行的状态。
关键是我希望在一个Shell脚本Maven执行中出现单个错误后,整个构建脚本就会失败。
e.g。
(0) mvn -f .../someDir clean
(1) mvn -f .../1/pom.xml install
(2) mvn -f .../2/pom.xml -PgenerateWadl
所以,例如,在(0)内发生错误,然后(1)和(2)必须不再执行,而是构建脚本应该在(0)之后直接退出并显示错误消息。
我对Shell脚本的了解不多,但我知道$?变量以获取先前执行的返回值。但是,由于Maven似乎只是将错误写入控制台,这可能不起作用,是吗?
我本来希望研究有关“$?”的更多信息,但谷歌很难用它。
答案 0 :(得分:6)
一种简单的方法是使用-e
选项。
set -e
mvn -f .../somedir clean
mvn -f .../otherdir install
mvn -f .../thirddir -PgenerateWadl package
如果顺序中的任何命令以非零状态退出(除非它是显式测试的一部分,例如if
或while
或链,否则这将自动使shell退出并出错比如a || b
)。
您可以通过在任何Maven呼叫之间插入false
来调用此事。
有关set -e
的详细信息,请参阅set
POSIX spec。
答案 1 :(得分:2)
mvn ... && mvn ... && mvn ...
只有在前一个成功的情况下才会执行。