2010-12-06 73 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