【问题标题】:Copy is not working in Ant Script复制在 Ant 脚本中不起作用
【发布时间】: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。 &lt;copy/&gt; 参数采用详细选项:&lt;copy verbose="true"&gt;,它将向您显示正在考虑复制的内容和不考虑复制的内容。另一种是在调用 Ant 时使用-d 开关:ant -d target。这将打印出一大堆东西(因此您可能希望将输出重定向到文件)。调试将向您显示 &lt;for/&gt; 循环正在执行什么。两者都会指出为什么事情没有按照您认为的方式进行。

标签: ant ant-contrib


【解决方案1】:

给定documentation of the for task,用于将字符串拆分为标记的默认分隔符是,。这意味着您的列表将包含两个令牌:html&lt;space&gt;htm。因此,您的任务会复制所有以 .&lt;space&gt;htm 结尾的文件。

【讨论】:

  • 是的!您是正确的,因为它忽略了第二个扩展名,即 .htm 。感谢您指出并让我很清楚。我们可以在这里使用修剪来删除每个扩展名的前导空格吗?
  • 哦!是的。我们有 For 循环的 trim 属性
猜你喜欢
  • 2023-03-05
  • 2018-07-08
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 2021-10-04
  • 1970-01-01
相关资源
最近更新 更多