ant任务将目录的内容打印到文件

时间:2011-05-04 22:09:28

标签: regex list ant build

作为自定义蚂蚁构建的一部分,我正在玩弄我想要构建

  1. 在html文档上执行<replaceregexp>
  2. 对于正则表达式的'替换',我想迭代.js文件的目录并注入一个标记指向每个文件。
  3. 我一直在浏览蚂蚁文档 http://ant.apache.org/manual/index.html

    但我没有看到任何可以帮助我迭代或列出文件的内容。

2 个答案:

答案 0 :(得分: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='&lt;script type="text/javascript" src="http://your.url/\1"&gt;&lt;/script&gt;' />
  </chainedmapper>
</pathconvert>

<echo>${js.html}</echo>

flatten删除文件路径的目录部分,只留下文件名。

然后回声产生类似于:

 [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 :(得分:0)

replaceregexp任务支持嵌套的fileset元素。 任务文档中的示例

<replaceregexp match="\s+" replace=" " flags="g" byline="true">
    <fileset dir="${html.dir}" includes="**/*.html"/>
</replaceregexp>

http://ant.apache.org/manual/Tasks/replaceregexp.html

这是你在找什么?