如何让ant目标等待另一个目标完成

时间:2011-12-08 05:36:17

标签: java ant selenium

在我的selenium网格设置中,我必须最初执行2个模块,这将创建数据。然后,休息6个模块。 我在build.xml中有8个不同模块的8个目标。我必须让所有6个目标等待最初的2个目标完成。 1.如何让ant目标等待其余两个目标完成执行? 2.如果我将build.xml拆分为2个build.xmls,哪个命令使2个构建文件按顺序运行?

2 个答案:

答案 0 :(得分:4)

如果我正确理解你的问题,你想要并行执行最初的两个模块,然后并行执行剩下的六个模块。有点像:

Time
 |   InitialModule1 InitialModule2
 |           |              |
 |           .              |
 |                          |
 |                          .
 |   Module3 Module4 Module5 Module6 Module7 Module8
 |      |       |       |       |       |       |
 |      v       v       v       v       v       v
 V

如果每个模块都由其自己的Ant任务运行:task_one, task_two ... task_eight,则可以使用Ant目标依赖项和parallel task来执行此操作。目标依赖项指定执行顺序,如:

<target name="create_data">
    <parallel>
        <task_one ... />
        <task_two ... />
    </parallel>
</target>

<target name="do_work" depends="create_data">
    <parallel>
        <task_three ... />
         .
         .
         .
        <task_eight ... />
    </parallel>
</target>

如果每个Selenium网格模块都由一系列任务运行,而不是单个任务,您可以将它们包装在sequential任务中。如果将它们作为单独的目标实现,则可以在antcall任务中使用parallel

答案 1 :(得分:1)

使用antcall ...

<project name="projectName" default="initialtarget1">
<target name="initialtarget1"> 
      <....> 

      </....>
      <antcall target="initialtarget2"/> 
      <antcall target="target1"/> 
      <antcall target="target2"/> 
      <antcall target="target3"/> 
      <antcall target="target4"/> 
</target> 
<target name="initialtarget2"> 
</target> 
<target name="target1"> 
</target> 
<target name="target2"> 
</target> 
<target name="target3"> 
</target> 
<target name="target4"> 
</target> 
</project>