首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ant:如何对目录中的每个文件执行命令?

Ant:如何对目录中的每个文件执行命令?
EN

Stack Overflow用户
提问于 2009-09-23 19:04:18
回答 6查看 133.2K关注 0票数 98

我想从一个Ant构建文件中为一个目录中的每个文件执行一个命令。

我正在寻找一个独立于平台的解决方案。

我该怎么做呢?

当然,我可以用某种脚本语言编写脚本,但这会进一步增加项目的依赖性。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-23 19:17:19

简短的回答

对嵌套的<FileSet>使用<foreach>

Foreach需要ant-contrib

更新了最近的ant-contrib示例:

代码语言:javascript
复制
<target name="foo">
  <foreach target="bar" param="theFile">
    <fileset dir="${server.src}" casesensitive="yes">
      <include name="**/*.java"/>
      <exclude name="**/*Test*"/>
    </fileset>
  </foreach>
</target>

<target name="bar">
  <echo message="${theFile}"/>
</target>

这将使用导致当前文件的${theFile}反调用目标"bar“。

票数 61
EN

Stack Overflow用户

发布于 2010-10-26 17:47:25

使用 task

它为每个文件执行一次命令。通过文件集或任何其他资源指定文件。是内置的;不需要额外的依赖;不需要自定义任务实现。

也可以只运行该命令一次,将所有文件作为参数一次性附加。使用parallel属性切换行为。

对不起,我迟到了一年。

票数 88
EN

Stack Overflow用户

发布于 2012-03-15 14:43:50

以下是使用javascript和ant scriptdef任务完成此任务的方法,因为scriptdef是一个核心ant任务,所以您不需要ant-contrib就可以让此代码工作。

代码语言:javascript
复制
<scriptdef name="bzip2-files" language="javascript">
<element name="fileset" type="fileset"/>
<![CDATA[
  importClass(java.io.File);
  filesets = elements.get("fileset");

  for (i = 0; i < filesets.size(); ++i) {
    fileset = filesets.get(i);
    scanner = fileset.getDirectoryScanner(project);
    scanner.scan();
    files = scanner.getIncludedFiles();
    for( j=0; j < files.length; j++) {

        var basedir  = fileset.getDir(project);
        var filename = files[j];
        var src = new File(basedir, filename);
        var dest= new File(basedir, filename + ".bz2");

        bzip2 = self.project.createTask("bzip2");        
        bzip2.setSrc( src);
        bzip2.setDestfile(dest ); 
        bzip2.execute();
    }
  }
]]>
</scriptdef>

<bzip2-files>
    <fileset id="test" dir="upstream/classpath/jars/development">
            <include name="**/*.jar" />
    </fileset>
</bzip2-files>
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1467991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档