2010-12-06 14 views
3

シェルスクリプト(ビルドプロセスで使用)内からMaven実行の状態を「照会する」方法があるかどうかを知りたいと思います。シェルスクリプト内でのMaven実行の状態の取得

重要な点は、シェルスクリプトMavenの実行中に1つのエラーが表示されると、ビルドスクリプト全体が失敗することです。

(0) mvn -f .../someDir clean 
(1) mvn -f .../1/pom.xml install 
(2) mvn -f .../2/pom.xml -PgenerateWadl 

(0)内にエラーが発生した場合、(1)および(2)はそれ以上実行する必要はありませんが、ビルドスクリプトは(0)の直後にエラーメッセージを表示して終了する必要があります。

私はシェルスクリプトにそれほど大したことはありませんが、私は$を知っていますか?変数を使用して、以前の実行の戻り値を取得します。しかし、Mavenは単にコンソールにエラーを書き込むようですが、これはうまくいかないでしょうか?

私は "$?"に関するより多くの情報を調べたいと思っていましたが、それはGoogleにとってかなり難しいことです。

+1

$? Mavenの実行状態も含まれています。 –

答えて

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

実行は、前の処理が成功した場合にのみ実行されます。

5

簡単な方法は、-eオプションを使用することです。

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

(そのようなif又はwhile又はa || b状鎖として、明示的な試験の一部である場合を除く)配列のいずれかのコマンドが非ゼロの状態で終了した場合にこれが自動的にエラーのあるシェルの出口を有することになります。

これは、Maven呼び出しの間にfalseへの呼び出しを挿入することで確認できます。

set -eの詳細については、set POSIX specを参照してください。

+0

こんにちはEmil、ありがとう –

+0

あなたの返信には、実際には$でのテストに関して人生が楽になるのですか?各実行の後に。しかし今、Mavenの実行によって生成された元の例外をどうやって得ることができますか? Mavenにstderrに書き込むように通知する方法もありますか? –

+0

私は、Mavenにstderrにエラーを出力させるためのMavenのネイティブな方法を知らない。あなたはファイルへの出力を 'tee'できますし、' [WARNING] 'の 'grep'でも、それは明らかに準最適です。おそらくMavenの出力を解析するためのサポートがあるHudson(または他のCIシステム)を見てみてください。 –

関連する問題