我有一些文件:
dir/foo.txt
dir/bar.txt
dir/foobar.txt
在Ant apply
任务中,我希望将文件列表作为参数传递:
<target name="atask">
<apply executable="${cmd}" parallel="false" verbose="true">
<arg value="-in"/>
<srcfile/>
<arg value="dir/foo.txt"/>
<arg value="dir/bar.txt"/>
<arg value="dir/foobar.txt"/>
<fileset dir="${list.dir}" includes="*.list"/>
</apply>
</target>
这很好用,但如果我想使用文件集动态选择文件列表,该怎么办:
<fileset dir="dir" includes="*.txt"/>
如何将此文件集转换为arg
元素-每个文件一个元素?类似于:
<arg>
<fileset dir="dir" includes="*.txt"/>
</arg>
而不是
<arg value="dir/foo.txt"/>
<arg value="dir/bar.txt"/>
<arg value="dir/foobar.txt"/>
(此示例不起作用,因为arg不支持fileset__)
发布于 2010-01-28 07:19:38
下面是一个示例,说明了pathconvert任务的用法。
使用<arg line />
将转换后的路径传递给可执行文件。
这假设*.txt
文件的路径中没有空格。
<target name="atask">
<fileset dir="dir" id="myTxts">
<include name="*.txt" />
</fileset>
<pathconvert property="cmdTxts" refid="myTxts" pathsep=" " />
<apply executable="${cmd}" parallel="false" verbose="true">
<arg value="-in" />
<srcfile />
<arg line="${cmdTxts}" />
<fileset dir="${list.dir}" includes="*.list" />
</apply>
</target>
如果您可能遇到空格,应该这样做:如上所述,但将(希望明显的哪些行)改为:
<pathconvert property="cmdTxts" refid="myTxts" pathsep="' '" />
和
<arg line="'${cmdTxts}'"/>
https://stackoverflow.com/questions/2148390
复制相似问题