在Shell脚本中获取Maven执行状态

时间:2010-12-06 10:28:06

标签: shell maven

我想知道是否有办法从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似乎只是将错误写入控制台,这可能不起作用,是吗?

我本来希望研究有关“$?”的更多信息,但谷歌很难用它。

2 个答案:

答案 0 :(得分:6)

一种简单的方法是使用-e选项。

set -e
mvn -f .../somedir clean
mvn -f .../otherdir install
mvn -f .../thirddir -PgenerateWadl package

如果顺序中的任何命令以非零状态退出(除非它是显式测试的一部分,例如ifwhile或链,否则这将自动使shell退出并出错比如a || b)。

您可以通过在任何Maven呼叫之间插入false来调用此事。

有关set -e的详细信息,请参阅set POSIX spec

答案 1 :(得分:2)

mvn ... && mvn ... && mvn ...

只有在前一个成功的情况下才会执行。