【发布时间】:2013-05-30 05:00:32
【问题描述】:
我在属性文件中定义了一个变量:
require.extensions = html, htm
我正在使用该变量,如下所示:
<for list="${require.extensions}" param="letter">
<sequential>
<copy todir="${dir.publish.html}">
<fileset dir="${project.dir}">
<include name="**/*.@{letter}"/>
</fileset>
</copy>
</sequential>
</for>
我想将所有扩展名为 html 和 htm 的文件复制到 ${project.dir} 目录到 ${dir.publish.html} 目录
但目前它只复制 html 文件而不是 htm 文件。为什么这样?因为我在@{letter} 中获取html 和htm 值,但我不能在里面使用echo,所以我无法检查@{letter} 的值。我的代码有问题吗?
<copy todir="${dir.publish.html}">
<fileset dir="${project.dir}">
<include name="**/*.html"/>
<include name="**/*.htm"/>
</fileset>
</copy>
如果我这样做,它将起作用。但是想制作.html | .htm 应该是动态插入的。
【问题讨论】:
-
您能否在 include 之后或之前添加此语句
Letter @{letter} 并查看打印的值是什么? -
显示文件集不支持嵌套的“echo”元素
-
如果我把它放在复制之前或之后,它会告诉我复制不支持嵌套的“echo”元素。
-
我不知道你为什么会收到这个错误。我用过 for 循环,看看这个例子thecafetechno.com/tutorials/ant/how-to-use-for-loop-in-ant
-
使用 verbose 选项,Luke。
<copy/>参数采用详细选项:<copy verbose="true">,它将向您显示正在考虑复制的内容和不考虑复制的内容。另一种是在调用 Ant 时使用-d开关:ant -d target。这将打印出一大堆东西(因此您可能希望将输出重定向到文件)。调试将向您显示<for/>循环正在执行什么。两者都会指出为什么事情没有按照您认为的方式进行。
标签: ant ant-contrib