如果任务失败,如何执行 Ant 命令?
假设我有一些Ant任务 - 比如javac或junit - 如果任何一个任务失败,我想执行一个任务,但如果它们成功了,我就不会。
任何想法如何做到这一点?
假设我有一些Ant任务 - 比如javac或junit - 如果任何一个任务失败,我想执行一个任务,但如果它们成功了,我就不会。
任何想法如何做到这一点?
例如,在 junit 目标中,您可以设置 :failureProperty
<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>
然后,创建一个目标,该目标仅在设置了该属性时运行,但在结束时失败:test.failed
<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"/>
然后只需调用目标来运行 JUnit 测试。目标将运行。如果失败(失败或错误),将设置该属性,并执行目标的正文。test
junit
test.failed
otherStuff
javac 任务支持和属性,可用于获取类似的行为。failonerror
errorProperty
正如凯所提到的:
ant-contrib有一个trycatch任务。
但您需要最新版本 1.0b3。然后使用
<trycatch>
<try>
... <!-- your executions which may fail -->
</try>
<catch>
... <!-- execute on failure -->
<throw message="xy failed" />
</catch>
</trycatch>
诀窍是再次抛出错误以指示损坏的构建。