2011-06-19 30 views
1

私は同時に他の3つのプロジェクトを起動するantターゲットを持っています。このビルドターゲットは、プロジェクトビルドのいずれかが失敗した場合でも、3つのプロジェクトすべてを実行します。ここでの問題は、ビルドに失敗した場合、3つのプロジェクトをコンパイルした後にエラーメッセージが表示されるはずですが、それは起こっていません。どのように解決できますか?別のプロジェクトで複数のターゲットを生成するantタスク

<target name="mainbuild"> 
<antcall target="junit-1">//in different project 
<antcall target="junit-2">//in different project 
<antcall target="junit-3">//in different project 
<junitreport todir="./reports"> 
    <fileset dir="./project-1/reports"> 
    <include name="TEST-*.xml"/> 
    </fileset> 
    <fileset dir="./project-2/reports"> 
    <include name="TEST-*.xml"/> 
    </fileset> 
    <fileset dir="./project-3/reports"> 
    <include name="TEST-*.xml"/> 
    </fileset> 
    <report format="frames" todir="./report/html"/> 
</junitreport> 
</target> 

<target name="junit-1"> 
.... do somethig 
</target> 
<target name="junit-2"> 
.... do somethig 
</target> 
<target name="junit-3"> 
.... do somethig 
</target> 

1)主なビルドが成功したメッセージが最後に表示されるビルドするいずれかの場合、それは)

2を発生しないはず、ビルドはサブプロジェクトのいずれかに失敗していても、3プロジェクトを起動しますサブプロジェクトのビルドに失敗すると、ビルドレポートが生成されるため、開発者は自分の失敗をさらに分析することができます。

答えて

0

ターゲットが異なるプロジェクト、つまり異なるビルドファイルにあることを明確にしたので、antcallの代わりにantまたはsubantのタスクを使用する必要があります。 subantタスクにはfailonerrorというパラメータがあります。このパラメータをfalseに設定すると、障害によって最上位のビルドが停止することはありません。サブプロジェクトビルドが実際にテストに失敗したという情報をトップレベルのビルドに戻すことが可能かどうかはわかりません。

あなたの目標は、すべての彼らは、テストが失敗した場合に失敗し、代わりに障害が発生したことを示すために、プロパティを設定しないように、あなたのJUnitタスクを変更することができ、同じプロジェクトにあった場合:

<junit failureProperty="test.failed"> ... </junit> 

は、その後、あなたのmainbuildのターゲットはJUnitのレポートを生成した後に失敗することができます:

<fail if="test.failed"> ... </fail> 

私は本「アクションでのAnt」からこのことを学びました。

関連する問題