Как я могу повторить имя файла дважды, используя «FileSet» и «PathConvert»? - PullRequest
2 голосов
/ 02 июня 2010

У меня есть эта простая задача 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

Как я могу это сделать?

(Этот вопрос является продолжением до Как напечатать набор файлов в файл, по одному имени в строке? )

1 Ответ

1 голос
/ 03 июня 2010

Вы можете использовать regexp mapper (вместо выравнивания), которое реализует выравнивание и дублирование. Это довольно упрощенно, но может сделать:

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

Требуется настройка для вашего локального разделителя пути.

Лучше использовать цепочку вместо сглаживания:

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