Как сделать набор файлов из списка каталогов, разделенных запятыми, в Ant? - PullRequest
2 голосов
/ 04 августа 2010

В цели Ant я получаю свойство, содержащее список каталогов, которые необходимо включить в дальнейшие действия (копирование, фильтрация и т. Д.).Это выглядит так:

directories=dir1, dir2, dir3

Мне нужен способ конвертировать этот список в набор файлов или набор шаблонов, который выбирает все файлы в этих каталогах.

Я знаюЯ могу использовать скрипт для генерации шаблонных строк, а затем использовать его в «include» или «exclude», но есть ли способ избежать скриптов?

Ответы [ 3 ]

2 голосов
/ 28 июня 2015

Обратите внимание, что в Ant 1.9.4 появилась новая конструкция , которая обеспечивает эту функциональность, даже если директории не являются братьями и сестрами:

<multirootfileset basedirs="${directories}" includes="**/*">
1 голос
/ 04 октября 2010

Как насчет использования задачи antcontrib propertyregex для преобразования списка через запятую в символы подстановки, подходящие для набора файлов?

<property name="directories" value="dir1, dir2, dir3" />

<property name="wildcard" value="${file.separator}**${file.separator}*" />
<propertyregex property="my_pattern"
               input="${directories}" 
               regexp=", " 
               replace="${wildcard}," />

На данный момент у нас есть:

my_pattern=dir1/**/*,dir2/**/*,dir3

Может использоваться с дополнительным подстановочным знаком с суффиксом для получения полного набора файлов:

<fileset dir="." id="my_fileset" includes="${my_pattern}${wildcard}" />

(Для обеспечения переносимости между файловыми системами Unix и Windows вы можете использовать /**/*, если вы чистый Unix.)

0 голосов
/ 04 августа 2010

Как-то так должно работать:

<dirset includes="${directories}"/>

Да, dirset не fileset.Однако этого может быть достаточно, иначе вы можете использовать for или foreach из ant-contrib для перебора каталогов в вашей цели.Вы также можете определить ResourceCollection на основе набора.Это может помочь узнать, каким будет «дальнейшее действие».

Однако, это похоже на слишком большую работу ...

...