You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ant查找包含指定文件的子目录并执行<apply>任务

Ant 目录扫描执行任务实现方案

实现思路

你不需要手动关联dirset和fileset的匹配结果,直接用Ant内置的匹配规则就能筛选出存在foo.txt的子目录,两种实现方式如下:

方式1:原生Ant实现(无需扩展包,推荐)

直接通过<apply>的内置映射规则,匹配所有foo.txt后以文件所在目录为工作目录执行任务,示例代码:

<project name="fooProcess" default="run" basedir=".">
    <target name="run">
        <apply 
            executable="你要执行的命令路径" 
            parallel="false"
            relative="true"
        >
            <!-- 扫描TargetFolder下所有foo.txt文件 -->
            <fileset dir="TargetFolder" includes="**/foo.txt" />
            <!-- 配置映射:将foo.txt映射为其所属的父目录 -->
            <mapper type="regexp" from="^(.*[/\\])foo\.txt$" to="\1" />
            <!-- 配置命令参数,可按需调整,以下为示例 -->
            <arg value="--input-dir" />
            <targetfile/>
            <arg value="--config" />
            <srcfile/>
        </apply>
    </target>
</project>

方式2:预筛选目录后执行(适合需要额外处理目录的场景)

如果需要先拿到所有符合条件的目录列表,可以用<present>选择器先筛选目录,再批量执行:

<project name="fooProcess" default="run" basedir=".">
    <!-- 引入ant-contrib扩展,仅使用foreach时需要 -->
    <taskdef resource="net/sf/antcontrib/antcontrib.properties">
        <classpath>
            <pathelement location="你的ant-contrib.jar路径"/>
        </classpath>
    </taskdef>

    <target name="run">
        <!-- 筛选所有包含foo.txt的子目录 -->
        <dirset id="validDirs" dir="TargetFolder">
            <present targetdir="TargetFolder">
                <mapper type="glob" from="*" to="*/foo.txt"/>
            </present>
        </dirset>

        <!-- 循环每个符合条件的目录执行apply -->
        <foreach target="processSingleDir" param="currentDir">
            <path refid="validDirs"/>
        </foreach>
    </target>

    <target name="processSingleDir">
        <echo>当前处理目录: ${currentDir}</echo>
        <apply executable="你要执行的命令路径" dir="${currentDir}">
            <!-- 你的apply任务配置 -->
            <arg value="foo.txt"/>
        </apply>
    </target>
</project>

第二种方式依赖ant-contrib扩展包,无特殊需求优先使用第一种原生实现即可。

内容的提问来源于stack exchange,提问作者Mr Pablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:06:02