【问题标题】:What is the core difference between ant-contrib's for and foreach?ant-contrib 的 for 和 foreach 的核心区别是什么?
【发布时间】:2013-11-25 22:09:15
【问题描述】:

for 和 for each 之间的主要区别是什么。 我正在使用 websphere mqfte 使用 ant 脚本传输文件。

我需要重命名我的文件并将其发送到另一个文件夹,如下所示:

eg: src : \src\*.txtdestination 中的文件应该是\dest\kk_*.cpp (* 表示文件名。需要将所有文件重命名如下)。

谁能帮我解决这个问题???。

【问题讨论】:

    标签: ant scripting


    【解决方案1】:

    antcontrib中for和foreach任务的主要区别 =

    for 使用类似宏定义的顺序,而 foreach 为每次迭代打开一个新的项目范围 - 就像其他任务一样 ant、antcall 和 subant。

    这意味着由于性能问题,应该优先使用 for task。

    对于您的重命名问题 => 您应该使用复制或移动任务 其他研究员已经说过的嵌套映射器。 反对标准蚂蚁用法的原因是什么!?

    顺便说一句。因为 antcontrib 开发似乎已经死了 - 最后一次发布是在 2006 年: 有一个具有类似功能的新 ant 插件 => ant flaka

    【讨论】:

      【解决方案2】:

      copy 任务与 glob 或正则表达式 mapper 一起使用。不过,不知道 for 和 for each 与这个问题有什么关系。

      【讨论】:

      • 问题是我需要在不使用复制和映射任务的情况下执行此重命名。
      • 为了后代 - 使用 ant-contrib 但不使用复制和映射任务是愚蠢的。这个答案是处理示例的最佳方式(尽管问题似乎与示例完全无关)。
      【解决方案3】:

      for 和 foreach 任务不是核心 Ant 的一部分,它们很可能是 ant-contrib 集合中的任务。

      根据 ant-contrib for task docs:

      此任务与<foreach> 相同 任务,除了

      * it uses a nested sequential for each iteration; and
      * it implements an additional "keepgoing" attribute. 
      

      <for> 使用 ant 的宏定义 任务,所以 @{} 符号用于 参数替换。

      【讨论】:

      • 克莱顿。您能否建议我一种在不使用映射器任务的情况下执行此重命名的方法。
      • 也许可以,但是为什么不能使用带有映射器的副本然后调用 fte:copy 来获取重命名的文件 - 您是否尝试过并遇到了问题?
      • 它很好用。但根据我的要求,我无法在源端或目标端创建任何暂存。
      • 有些作业会在源端检测到任何 cpp 文件时启动。当在目标端检测到任何 txt 文件时,某些作业的启动方式与此相同。所以我不能在任何地方暂存它并重命名。
      猜你喜欢
      • 2011-03-06
      • 2012-06-11
      • 1970-01-01
      • 2018-09-04
      • 2014-10-17
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      相关资源
      最近更新 更多