Jmi*_*ini 17 ant arguments fileset
我有一些文件:
dir/foo.txt
dir/bar.txt
dir/foobar.txt
Run Code Online (Sandbox Code Playgroud)
在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>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我想使用文件集动态选择文件列表,该怎么办:
<fileset dir="dir" includes="*.txt"/>
Run Code Online (Sandbox Code Playgroud)
如何将此文件集转换为arg元素 - 每个文件一个?就像是:
<arg>
<fileset dir="dir" includes="*.txt"/>
</arg>
Run Code Online (Sandbox Code Playgroud)
代替
<arg value="dir/foo.txt"/>
<arg value="dir/bar.txt"/>
<arg value="dir/foobar.txt"/>
Run Code Online (Sandbox Code Playgroud)
(此示例不起作用,因为arg不支持文件集)
mar*_*ton 27
这是一个说明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>
Run Code Online (Sandbox Code Playgroud)
如果你可能遇到空格,这应该做:如上所述,但改变(希望明显哪些行):
<pathconvert property="cmdTxts" refid="myTxts" pathsep="' '" />
Run Code Online (Sandbox Code Playgroud)
和
<arg line="'${cmdTxts}'"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6266 次 |
| 最近记录: |