2010-12-06 278 views
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 

因此,如果例如(0)中出现错误,则不必再执行(1)和(2),而是构建脚本应该直接在(0)之后以错误消息退出。

我对Shell脚本没有太多的了解,但是我知道$?变量来获得早期执行的返回值。但是,由于Maven似乎只是将错误写入控制台,这可能行不通,是吗?

我本来想研究更多关于“$?”的信息,但是对于谷歌来说很难。

+1

$? DOES也包含Maven执行的状态。 – 2010-12-06 10:50:22

回答

2
mvn ... && mvn ... && mvn ... 

只有前一个成功执行才会执行。

5

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

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

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

您可以通过在任何Maven呼叫之间插入呼叫false来观察此情况。

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

+0

Hey Emil,谢谢 – 2010-12-07 12:15:57