【问题标题】:Iterating over libraries and execute task in Ant迭代库并在 Ant 中执行任务
【发布时间】:2011-02-22 13:59:07
【问题描述】:

我需要能够在 Ant 中为所有具有特定名称的子目录执行任务。 对于每个子目录,我需要执行一个 exec 任务

我该怎么做?我发现的示例将文件集用于复制任务,我不能将其与 exec 任务一起使用,或者使用我无法工作的 for 循环。

我也尝试了一些 Javascript,但我根本无法让 FSO 工作。

【问题讨论】:

    标签: ant loops directory


    【解决方案1】:

    您可以使用 Ant apply task 执行此操作。 该任务遍历类似文件集的对象的成员, 它也可以处理dirset

    这是一个例子:

    <!-- all directories directly under working dir -->
    <dirset id="my.dirs" dir="." includes="*" />
    
    <apply executable="ls">
        <arg value="-l" />
        <dirset refid="my.dirs" />
    </apply>
    

    Apply 与 one-shot exec 任务具有相似的属性。

    【讨论】:

      【解决方案2】:

      你有没有尝试过这样的事情(你需要antcontrib for task):

      <for param="file">
        <path>
          <fileset dir="${yourdirectory}"/>
        </path>
        <sequential>
          <!-- do the work you need to here -->   
          <echo>Filename === @{file}
        </sequential>
      </for>
      

      此引用取自here

      【讨论】:

      • 如何安装 antcontrib ?上次我试过了,根本没用。
      • 我还需要能够检索子目录名称并将其用于命令,我需要执行。对于每个子目录,我需要执行 jar -cvfM ${subdir}.jar *png *jpg *gif
      • @Dennis Dahl Christensen - 对于 antcontrib 安装,请在此处查看:ant-contrib.sourceforge.net 另外,我认为您可以编写一些以 @{file} 作为参数的脚本,这个脚本就可以了解析子目录名称并进行 jar 调用的工作。您只需从上面的 ant 摘录中调用该脚本(例如,“做你需要的工作”部分在哪里)。
      • 好的。非常感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 2011-04-23
      • 2014-02-14
      • 2011-02-07
      • 1970-01-01
      相关资源
      最近更新 更多