如何使用'FileSet'和'PathConvert'回显文件名两次?

时间:2010-06-02 11:43:43

标签: ant fileset

我有一个简单的Ant任务,列出文件夹中的所有'.png'文件:

<target name="listimages">
    <!-- Assume files a A and B -->
    <fileset id="dist.contents" dir="${basedir}">
        <include name="**/*.png"/>
    </fileset>

    <pathconvert pathsep="${line.separator}"
                 property="prop.dist.contents" 
                 refid="dist.contents">
        <mapper type="flatten" />
        <map from="${basedir}" to=""/>
    </pathconvert>
    <echo>${prop.dist.contents}</echo>
</target>

打印

[echo] A.png
[echo] B.png

但是,我想要的是文件名在每一行上显示两次

[echo] A.png,A.png
[echo] B.png,B.png

我该怎么做?

(这个问题是对How can I print a fileset to a file, one file name per line?

的跟进

1 个答案:

答案 0 :(得分:1)

您可以使用实现展平和复制的regexp mapper(而不是展平)。这非常简单,但可能会这样做:

<mapper type="regexp" from=".*/(.*)" to="\1,\1" />

需要调整本地路径分隔符。

但更好的是,使用chainedmapper代替flatten:

<chainedmapper>
    <mapper type="flatten" />
    <mapper type="regexp" from="(.*)" to="\1,\1" />
</chainedmapper>