蚂蚁在多个目录

问题描述:

我想简化这一点:进入这个东西类似于蚂蚁<apply>在多个目录

<target name="build"> 
    <parallel> 
     <antcall target="build-A" /> 
     <antcall target="build-B" /> 
     <antcall target="build-C" /> 
    </parallel> 
</target> 

<target name="build-A"> 
    <exec executable="tool.exe" dir="projects/A"> 
     <arg value="input.xml" /> 
    </exec> 
</target> 

其中build-Bbuild-C做同样的事情(只显示目录BC,分别):

<dirset id="projects" dir="." > 
    <include name="projects/*" /> 
</dirset> 

<apply executable="tool.exe" parallel="true"> 
    <arg value="input.xml" /> 
    <dirset refid="projects" /> 
</apply> 

这不起作用,因为apply将执行以下操作之一:

如果parallel设置为true

tool.exe input.xml projects/A projects/B projects/C 

,或者如果parallel设置为false

tool.exe projects/A/input.xml 
...waits for tool.exe to complete... 
tool.exe projects/B/input.xml 
...etc 

即使是不正确,因为tool.exe预计将内的projects/A目录中运行

有没有办法并行这使得输出我得到的是相当于:

cd project/A 
tool.exe input.xml 

cd ../B 
tool.exe input.xml 

cd ../C 
tool.exe input.xml 

但在并行?

我想用ant-contribfor task来做到这一点。

<for param="dir" parallel="true"> 
    <dirset id="projects" dir="." > 
     <include name="projects/*" /> 
    </dirset> 
    <sequential> 
     <exec executable="tool.exe" dir="@{dir}"> 
      <arg value="input.xml" /> 
     </exec> 
    </sequential> 
</for> 
+0

我刚*发现了这个,并且写了我自己的答案。 :)你赢了upvote。 – moswald