Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 从文件列表中的目录内部复制文件_Ant - Fatal编程技术网

Ant 从文件列表中的目录内部复制文件

Ant 从文件列表中的目录内部复制文件,ant,Ant,我有一个文件列表,其中包含一个目录列表。我需要遍历文件列表,从每个目录中获取一个文件并将其复制到另一个位置 我试图将filelist与foreach结合使用,但foreach不支持filelist。在ANT中是否还有其他方法可以做到这一点 我尝试使用for 这在任务中失败,表示找不到目录。它要查找的目录是${basedir}/bin/,而不是给定的文件列表中首先列出的目录。我认为这是因为它没有正确读取我的文件列表。我的foreach版本给出了相同的错误 <for

我有一个
文件列表
,其中包含一个目录列表。我需要遍历
文件列表
,从每个目录中获取一个文件并将其复制到另一个位置

我试图将
filelist
foreach
结合使用,但
foreach
不支持
filelist
。在ANT中是否还有其他方法可以做到这一点


我尝试使用
for

这在
任务中失败,表示找不到目录。它要查找的目录是
${basedir}/bin/
,而不是给定的
文件列表中首先列出的目录。我认为这是因为它没有正确读取我的
文件列表。我的
foreach
版本给出了相同的错误

    <for 
        list="devBuild"
        delimiter=","
        param="dirName"
        trim="true">
        <sequential>
            <copy
                todir="./apks/"
                failonerror="true"
                verbose="true">
                <fileset dir="@{dirName}/../bin/">
                    <include name="*/*.apk"/>
                </fileset>
            </copy>
        </sequential>
    </for>
下面的方法确实有效,但我希望使用引用ID,而不是再次创建
文件列表

    <for
        delimiter=","
        param="dirName"
        trim="true">
        <path>
            <filelist
                id="devBuild"
                dir="${basedir}"
                files="${build1},${build2},${build3},${build4}"
            />
        </path>
        <sequential>
            <echo>@{dirName}</echo>
            <copy
                todir="./apks/"
                failonerror="true"
                verbose="true">
                <fileset dir="@{dirName}/../bin/">
                    <include name="*/*.apk"/>
                </fileset>
            </copy>
        </sequential>
    </for>

@{dirName}

我解决了这个问题。当我调用另一个
目标时
我没有设置
inheritrefs
的标志。这需要为真,以便另一个
目标
将获得参考。

是且无分辨率。详细信息发布在op中。我取得了一些成功,但仍然无法获得
文件列表
参考ID。还将
*/*.apk
更改为
***.apk
。这修复了一个无关的问题。我解决了这个问题。当我调用另一个
目标时
我没有设置
inheritrefs
的标志。这需要为真,以便其他
目标
将获得引用。
    <for
        delimiter=","
        param="dirName"
        trim="true">
        <path>
            <filelist
                id="devBuild"
                dir="${basedir}"
                files="${build1},${build2},${build3},${build4}"
            />
        </path>
        <sequential>
            <echo>@{dirName}</echo>
            <copy
                todir="./apks/"
                failonerror="true"
                verbose="true">
                <fileset dir="@{dirName}/../bin/">
                    <include name="*/*.apk"/>
                </fileset>
            </copy>
        </sequential>
    </for>