2011-06-19 26 views
1

我有蚂蚁目标,它同时调用其他3个项目ant建立目标为junit。即使任何一个项目构建失败,此构建目标仍会执行所有三个项目。这里的问题是,如果任何一个编译失败错误消息应该在编译三个项目编译目标后显示,但它没有发生,我该如何解决?蚂蚁任务在不同的项目中生成多个目标

<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)主构建调用3项目,即使生成失败在副项目中的任何一个,在结束建立成功的消息显示,如果任何一个它不应该发生

2)子项目构建失败,生成报告应该生成,以便开发人员可以进一步分析他的失败。

回答

0

既然您已经说明您的目标位于不同的项目中,即不同的构建文件,您将不得不使用antsubant任务而不是antcallsubant任务有一个名为failonerror的参数,您可以将其设置为false,以便失败不会停止顶层构建。我不知道是否有可能传回顶层构建的子项目构建实际上未通过测试的信息。

如果你的目标都在同一个项目,你可以改变你的junit任务,这样,如果测试失败,他们不会失败,而是设置一个属性表明已经发生了故障:

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

然后你就可以让你的mainbuild目标无法生成JUnit的报告后:

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

我从书“蚂蚁在行动”得知这个。