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

D. *_* W. 3 shell maven

我想知道是否有一种方法可以从Shell脚本(用于构建过程)中"查询"Maven执行的状态.

关键是我希望在一个Shell脚本Maven执行中出现单个错误后,整个构建脚本就会失败.

例如

(0) mvn -f .../someDir clean
(1) mvn -f .../1/pom.xml install
(2) mvn -f .../2/pom.xml -PgenerateWadl
Run Code Online (Sandbox Code Playgroud)

因此,如果例如在(0)内发生错误,那么(1)和(2)必须不再执行,而是构建脚本应该在(0)之后直接退出并显示错误消息.

我对Shell脚本的了解不多,但我知道$?变量以获取先前执行的返回值.但是,由于Maven似乎只是将错误写入控制台,这可能不起作用,是吗?

我本来希望研究有关"$?"的更多信息,但谷歌很难获得它.

Emi*_*Sit 6

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

set -e
mvn -f .../somedir clean
mvn -f .../otherdir install
mvn -f .../thirddir -PgenerateWadl package
Run Code Online (Sandbox Code Playgroud)

如果在序列中的任何命令与非零状态退出(除非它是一个明确的测试的一部分,例如作为这将自动与错误壳出口ifwhile或链等a || b).

你可以通过false在任何Maven调用之间插入一个调用来观察这种情况.

有关详细信息,请参阅setPOSIX规范set -e.