一个接一个地调用一个Ant任务

时间:2012-12-27 02:08:40

标签: ant

我想在RunTests完成后调用sendmail,但它无法正常工作

<project name="Sample usage of Salesforce Ant tasks" basedir="." xmlns:sf="antlib:com.salesforce" default="RunTests">
    <!--******************************************* P R O P E R T Y   F I L E *********************************************-->
    <property file="build.properties"/>
    <property environment="env"/>
    <!--*******************************************RunTests***********************************************************-->
    <target name="RunTests">
        <record name="RunTest.log" action="start"/>
            <sf:compileAndTest  username="${sf.backup_username}" password="${sf.backup_password}" serverurl="${sf.backup_serverurl}" >
                <runTests Alltests="true"/>
            </sf:compileAndTest>
        <record name="RunTest.log" action="stop"/>    
    </target>
    <target name="sendmail" depends="RunTests"> 
        <mail mailhost="email.corp.testcompany.com" mailport="25" subject="Run all tests - Sandbox 1337" messagefile="RunTest.log">
            <from address="user2@testcompany.com"/>
            <replyto address="user2@testcompany.com"/>
            <to address="user2@testcompany.com"/>
        </mail> 
    </target>       
</project>

我得到以下失败 -

建立失败 C:\ ANT_HOME \ QA_1337_TestRunner \ build.xml:8:失败:

即使先前的任务失败,我还能以任何方式执行“sendemails”任务。

2 个答案:

答案 0 :(得分:3)

尝试运行

ant sendmail

或将默认设置更改为sendmail

<project name="Sample usage of Salesforce Ant tasks" basedir="." xmlns:sf="antlib:com.salesforce" default="sendmail">

然后执行

ant

修改

在快速查看任务sf:compileAndTest的{​​{3}}之后,我没有找到任何关于如何在测试和/或编译失败时避免目标执行失败的有用信息。 (也许是salesforce doc属性,但我不确定这是你需要的,也不能通过ant任务传递它。

所以我认为你必须在外部处理目标执行失败。为此,您可以使用checkonly

看起来像这样:

<trycatch property="foo" reference="bar">
  <try>
    <record name="RunTest.log" action="start"/>
        <sf:compileAndTest  username="${sf.backup_username}" password="${sf.backup_password}" serverurl="${sf.backup_serverurl}" >
            <runTests Alltests="true"/>
        </sf:compileAndTest>
    <record name="RunTest.log" action="stop"/>
  </try>

  <catch>
    <echo>Got error while running compileAndTest</echo>
  </catch>

  <finally>
    <mail mailhost="email.corp.testcompany.com" mailport="25" subject="Run all tests - Sandbox 1337" messagefile="RunTest.log">
        <from address="user2@testcompany.com"/>
        <replyto address="user2@testcompany.com"/>
        <to address="user2@testcompany.com"/>
    </mail>
  </finally>
</trycatch>

请注意,您可以使用<catch>部分在测试失败时发送特殊电子邮件。

propertyreference可用于获取有关失败的信息(如果有)。

答案 1 :(得分:1)

我想您要查看failurePropertyhaltOnFailure属性。

此主题的答案中有更多信息: https://stackoverflow.com/a/134563/708777