У меня есть некоторые файлы:
dir/foo.txt
dir/bar.txt
dir/foobar.txt
У муравья 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:
<fileset dir="dir" includes="*.txt"/>
Как я могу преобразовать этот fileset в arg
элементы - один на файл? Что-то как:
<arg>
<fileset dir="dir" includes="*.txt"/>
</arg>
вместо
<arg value="dir/foo.txt"/>
<arg value="dir/bar.txt"/>
<arg value="dir/foobar.txt"/>
(Этот пример не работает, потому что аргумент не поддерживает fileset),
Вот пример, иллюстрирующий использование задачи pathconvert .
Преобразованный путь передается исполняемому файлу с использованием
.
Это предполагает отсутствие пробелов в путях ваших файлов *. 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}'"/>