我知道这是微不足道的-但我一直在碰壁我试图采取一个目录的胡子模板(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>
,但不知道如何让脚本块显示
起初我想使用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>
注释:
我在echo任务中最左边的符号,以避免在结果文件中出现不必要的空白!
只需按照上面的示例编写,您的文件将看起来像您想要的输出
2. <![CDATA[...]]>
是必需的,否则你会得到一些错误,如"echo不支持嵌套的"script"元素。"