#regex #list #ant #build
#регулярное выражение #Список #ant #сборка
Вопрос:
В рамках пользовательской сборки ant, с которой я играю, я хотел бы иметь сборку
- Выполните
<replaceregexp>
в HTML-документе - Для ‘replace’ в регулярном выражении я хотел бы выполнить итерацию каталога с файлами .js и ввести тег, указывающий на каждый файл.
Я просматривал документы ant наhttp://ant.apache.org/manual/index.html
но я не видел ничего, что помогло бы мне выполнить итерацию или составить список файлов.
Ответ №1:
Вероятно, вы захотите сначала сгенерировать текст для замены, обработав каталог, содержащий файлы .js.
Одним из подходов может быть использование fileset
для сбора имен файлов, затем pathconvert
задача создания фрагмента html для использования заменяющего текста. Для каталога ‘my_dir’, например:
<fileset id="dir.contents" dir="my_dir">
<include name="*.js"/>
</fileset>
<pathconvert pathsep="${line.separator}" property="js.html" refid="dir.contents">
<chainedmapper>
<mapper type="flatten" />
<regexpmapper from="(.*)"
to='amp;<script type="text/javascript" src="http://your.url/1"amp;>amp;</scriptamp;>' />
</chainedmapper>
</pathconvert>
<echo>${js.html}</echo>
flatten
Удаляет часть пути к файлу, содержащую каталог, оставляя только имя файла.
Затем echo выдает что-то вроде:
[echo] <script type="text/javascript" src="http://your.url/a.js"></script>
[echo] <script type="text/javascript" src="http://your.url/b.js"></script>
[echo] <script type="text/javascript" src="http://your.url/c.js"></script>
Таким образом, вы можете затем использовать ${js.html}
в качестве регулярного выражения для замены текста.
Комментарии:
1. Спасибо! Я собираюсь попробовать это и вернуться назад.
Ответ №2:
Задача replaceregexp поддерживает вложенный элемент fileset. Пример из task doc
<replaceregexp match="s " replace=" " flags="g" byline="true">
<fileset dir="${html.dir}" includes="**/*.html"/>
</replaceregexp>
в http://ant.apache.org/manual/Tasks/replaceregexp.html
Это то, что вы ищете?