Apache Ant添加标题&在concat作业中的每个文件的页脚

时间:2011-08-31 16:42:59

标签: ant concat

我确信这是微不足道的 - 但是我一直在靠墙撞击 我正在尝试一个充满胡子模板的目录(基本上是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 个答案:

答案 0 :(得分:1)

起初我想过以某种方式在页眉和页脚中使用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不支持嵌套的”脚本“元素。”