Меня это некоторое время беспокоило - я надеялся, что будет хороший способ сделать это, но я пока не нашел его.
Я посмотрел исходный код Ant для задачи 'copy'. Фактическая копия выполняется в классе ResourceUtils , но имена исходных и целевых файлов не предоставляются таким образом, чтобы сделать их доступными из цепочки фильтров. Точно так же, итерация над набором файлов происходит в копировании taskdef, где «текущие» имена файлов не хранятся в открытых переменных.
Наименее плохой вариант, который я придумал, - это использовать ant-contrib 'for' task , чтобы перебрать набор файлов и скопировать каждый файл один за другим. После итерации имена файлов будут доступны в свойстве, указанном в атрибуте 'param':
<for param="file.name">
<path>
<fileset dir="${project.build.sourceDirectory}"/>
</path>
<sequential>
<local name="file.name"/>
<property name="file.name" value="@{file.name}"/>
<copy file="${file.name}" ... >
...
<filterchain>
<scriptfilter ...>
...
current_file = project.getProperty( "file.name" );
...
</scriptfilter>
</filterchain>
...
</copy>
</sequential>
</for>