Ant属性范围超过多个目标

时间:2014-05-23 12:33:54

标签: android ant jenkins

民间,

在Ant(在Jenkins中)构建我们的Android应用程序时,我们遇到了属性范围问题。这打破了我们的艾玛单元测试覆盖率。

我们使用全局build.xml文件,其中包含以下行:

    <target name="clean">
        <ant antfile="build.xml" dir="MyProject" target="clean"/>
        <ant antfile="build.xml" dir="MyTestProject" target="clean"/>
    </target>
    <target name="test">
        <ant antfile="build.xml" dir="MyTestProject" target="debug"/>
        <ant antfile="build.xml" dir="MyTestProject" target="installt"/>
        <ant antfile="build.xml" dir="MyTestProject" target="test"/>
   </target>
   <target name="emma">
     <ant antfile="build.xml" dir="MyTestProject" target="emma"/>
   </target>

如您所见,它启动了各个项目中的目标。我们使用clean emma test构建。

在构建过程中,我打印emma.enabled的值,true目标设置为emma。但是,当Ant到达debug目标时,emma.enabled不再设置。这会导致我们的测试在没有启用emma覆盖的情况下运行。根据{{​​3}},属性应保留其值:

  

默认情况下,当前项目的所有属性都将在新项目中可用。

然而,他们显然没有。我已经有一段时间了,希望你们能帮助我。谢谢!

1 个答案:

答案 0 :(得分:0)

在尝试了kbb的建议后,我发现我无法include来自子项目的build.xml,因为这不会改变工作目录。这导致了各种各样的问题,我需要运行子项目本身的build.xml。

最后,我提出了这个build.xml:

<target name="clean">
    <ant antfile="build.xml" dir="${env.label}-${env.omgeving}" target="clean"/>
    <ant antfile="build.xml" dir="MijnUnbrandedTest" target="clean"/>
</target>
<target name="test">
    <ant antfile="build.xml" dir="MijnUnbrandedTest">
        <target name="debug"></target>
        <target name="installd"></target>
        <target name="test"></target>
    </ant>
</target>
<target name="emmatest"> 
   <ant antfile="build.xml" dir="MijnUnbrandedTest">
      <target name="emma"></target>
      <target name="debug"></target>
      <target name="installd"></target>
      <target name="test"></target>
   </ant>
</target>

target任务不是使用单个ant属性,而是允许使用多个target元素,每个元素都将在相同的Ant任务中运行,因此也可以在范围内运行。来自the Ant task documentation

  

您可以使用嵌套元素而不是使用target属性指定多个目标。执行这些操作就好像Ant已使用单个目标调用,该目标的依赖关系是指定的目标,按指定的顺序。