私はいくつかのAntタスクを持っているとします。javacやjunitのように、いずれかのタスクが失敗した場合、タスクを実行しますが、成功した場合は実行しません。タスクが失敗した場合にAntコマンドを実行するにはどうすればよいですか?
どうすればいいですか?
私はいくつかのAntタスクを持っているとします。javacやjunitのように、いずれかのタスクが失敗した場合、タスクを実行しますが、成功した場合は実行しません。タスクが失敗した場合にAntコマンドを実行するにはどうすればよいですか?
どうすればいいですか?
は、例えば、あなたがfailureProperty
を設定することができます
<target name="otherStuff" if="test.failed">
<echo message="I'm here. Now what?"/>
<fail message="JUnit test or tests failed."/>
</target>
最後に、それらを結びつける:
<target name="test" depends="junit,otherStuff"/>
次に、test
ターゲットを呼び出して、JUnitテストを実行します。 junit
ターゲットが実行されます。失敗した場合(失敗またはエラー)、test.failed
プロパティが設定され、otherStuff
ターゲットの本体が実行されます。
javacタスクは、同様の動作を得るために使用できるfailonerror
およびerrorProperty
属性をサポートしています。カイから述べたように
ant-contribには、trycatchタスクがあります。
失敗をチェックするタスクにプロパティを設定し、プロパティが設定されていない場合に実行されるように2番目のタスクを書き込みます。私はbuild.xmlのための正確な構文を覚えていない、または私は例を与えるだろう。 test.failed
プロパティが設定されている場合のみ実行ターゲットを作成し、その後
<target name="junit" depends="compile-tests" description="Runs JUnit tests">
<mkdir dir="${junit.report}"/>
<junit printsummary="true" failureProperty="test.failed">
<classpath refid="test.classpath"/>
<formatter type="xml"/>
<test name="${test.class}" todir="${junit.report}" if="test.class"/>
<batchtest fork="true" todir="${junit.report}" unless="test.class">
<fileset dir="${test.src.dir}">
<include name="**/*Test.java"/>
<exclude name="**/AllTests.java"/>
</fileset>
</batchtest>
</junit>
</target>
が、最後に失敗します:あなたのjunitターゲットで
:
ant-contribはtrycatchタスクを持っています。
しかし、最近のバージョン1.0b3が必要です。そして使用してください
<trycatch>
<try>
... <!-- your executions which may fail -->
</try>
<catch>
... <!-- execute on failure -->
<throw message="xy failed" />
</catch>
</trycatch>
トリックは、壊れたビルドを示すためにもう一度エラーをスローすることです。
悲しいことに、私はまだビルドが失敗したいので、うまくいきません。 – tomjen