Apache Ant добавляет верхний и нижний колонтитулы в КАЖДЫЙ файл в задании Concat - PullRequest
3 голосов
/ 31 августа 2011

Я уверен, что это тривиально - но я бился головой о стену Я пытаюсь взять каталог, полный шаблонов усов (по сути, html-файлов) и объединить их в один файл - оборачивая каждый тегом

Пример:

File1 = <a>This is a Link</a>
File2 = <b>This is in bold</b>

Я хочу, чтобы вывод выглядел следующим образом:

<script type="text/mustache" id="File1">
 <a>This is a Link</a>
</script>
<script type="text/mustache" id="File2">
 <b>This is in bold</b>
</script>

Я использую задачу Concat

<concat destfile="mustache.js" fixlastline="yes">
 <fileset dir="." includes="**/*.mustache"/>
</concat>

но не могу понять, как заставить блоки скрипта отображаться

1 Ответ

1 голос
/ 01 сентября 2011

Сначала я подумал об использовании concat как-то с верхним и нижним колонтитулами, но не нашел рабочего решения.
Если вы не отказываетесь от использования какого-либо Ant-аддона, вот решение, основанное на Flaka =

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">

 <!-- make standard ant tasks understand EL expressions -->
  <fl:install-property-handler />

  <!-- we use path instead of pure fileset because we need
       absolute filenames for loadfile later in for loop -->
  <path id="foo">
   <fileset dir="/some/path"  includes="**/*.mustache"/>
  </path>

  <!-- iterate over the path/fileset -->
  <fl:for var="file" in="split('${toString:foo}', ':')">
   <!-- unset property for next loop -->
   <fl:unset>content</fl:unset>
   <!-- load file contents to property -->
   <loadfile property="content" srcFile="#{file}"/>

   <echo file="/some/path/foobar/mustache.js" append="true">
   <!-- the id attribute gets filled with the basename of the current fileitem -->
<![CDATA[<script type="text/mustache" id="#{replace(file, '$1' , '.+?(\w+)\..+' )}">
#{trim('${content}')}
</script>]]></echo>
  </fl:for>

</project>

Примечание :
1. моя самая левая запись в задаче эха, чтобы избежать ненужных пробелов в результирующем файле!
просто напишите, как в моем примере выше, и ваш файл будет выглядеть так, как вы хотели
2. необходим <![CDATA[...]]>, в противном случае вы получите сообщение об ошибке типа "echo не поддерживает вложенный элемент" script "."

...