如何在密钥对样式中使用 ant 回显文件名列表?

how to echo a list of file names using ant in a key pair style?

我有一个 FileSet 并想在 PropertyFile 中回显文件名。像这样:

file.name.1=foo.txt
file.name.2=bar.pdf
file.name.3=bob.blah

我见过一些解决方案,其中可以将文件名连接在一个 Property 中,然后在一个步骤中回显。但是因为我正在使用 PropertyFile 我需要使用 Entry.

来写

当然我可以使用 Echo 并以模拟 属性 文件的方式打印每个文件名,但问题是一样的。如何制作计数器并打印所有的名字?

无法仅使用 Ant 来完成。有一个废弃的旧项目 Ant-Contrib 正是我所需要的。

<target name="print.names" >
    <taskdef resource="net/sf/antcontrib/antlib.xml"/>

    <var name="counter" value="0"></var>
    <for param="current.file">
        <fileset dir="path/to/dir"></fileset>
        <sequential>
            <var name="aux.name" unset="true"></var>
            <basename file="@{current.file}" property="aux.name"></basename>
            <math operand1="${counter}" operation="+" operand2="1" result="counter" datatype="int"></math>
            <echo file="path/to/output/file.txt" append="true" message="file.name.${counter}=${aux.name}${line.separator}"></echo>
        </sequential>
    </for>
</target>