Вопрос

Я хотел бы написать общий сценарий сборки муравья с <copy> Задача, которая может при желании переименовать файлы на основе REGEXPS. Вложенный <regexpmapper> Загрузит шаблоны переименования из файлов свойств специфичных для проекта, если он существует.

Кто -то уже сделал это или мне нужно написать собственный Mapper?

Это было полезно?

Решение

Вот пример того, как вы можете это сделать.

Файл свойств проекта proj_props.txt содержит:

use.filter=regexp.mapper
from.regexp=(.*)_test(.*)
to.regexp=\\1\\2

(Обратите внимание на побеги \ в строке.)

BuildFile:

<property file="proj_props.txt" />

<!-- filter for regexp -->    
<filtermapper id="regexp.mapper">
    <tokenfilter>
        <replaceregex pattern="${from.regexp}"
                      replace="${to.regexp}" />
    </tokenfilter>
</filtermapper>

<!-- identity filter, used when no regexp needed -->
<filtermapper id="identity.mapper" />

<!-- decide which filter to use -->
<condition property="chosen.mapper"
           value="regexp.mapper" else="identity.mapper">
    <isset property="use.filter" />
</condition>

<copy todir="...">
    <fileset>
       ...
    </fileset>
    <filtermapper refid="${chosen.mapper}" />
</copy>

Вы определяете пару filtermapper Случай, один, который выполняет замену резервуара на основе свойств из файла свойств проекта, другой, который ничего не делает. А use.filter Собственность решает, что выбрано. Если файл свойств проекта не существует use.filter не будет установлен, поэтому будет использоваться идентификатор «не делать» идентификации.

Обратите внимание, что это работает только при использовании вложенных ресурсов в copy задача. Если у вас есть только один файл для копирования, и используйте <copy file="...", Filtermapper игнорируется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top