Преобразование Муравья fileset нескольким применяет args

У меня есть некоторые файлы:

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),

17
задан martin clayton 28 November 2011 в 23:20
поделиться

1 ответ

Вот пример, иллюстрирующий использование задачи 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}'"/>
27
ответ дан 30 November 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: