蚂蚁在多个目录
问题描述:
我想简化这一点:进入这个东西类似于蚂蚁<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-B
和build-C
做同样的事情(只显示目录B
和C
,分别):
<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-contrib的for 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>
我刚*发现了这个,并且写了我自己的答案。 :)你赢了upvote。 – moswald