从文件列表中的目录中复制文件

  • 本文关键字:文件 复制 列表 ant
  • 更新时间 :
  • 英文 :


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

我试图将filelistforeach结合使用,但foreach不支持filelist。在ANT中还有其他方法吗?


我对for的尝试

这在<copy>任务中失败,表示找不到目录。它要查找的目录是${basedir}/bin/,而不是它给出的filelist中首先列出的目录。我认为这是因为它没有正确读取我的filelist。我的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>

部分工作

现在,for循环正在工作。。。有点我希望它的工作方式直接显示在下面。然而,这并不能说明找不到devBuild引用。然而,filelist是在不同的target中较早创建的,并且是使用该引用创建的。为什么我不能在其他目标中使用该引用ID?

    <for
        delimiter=","
        param="dirName"
        trim="true">
        <path>
            <filelist
                refid="devBuild"></filelist>
        </path>
        <sequential>
            <echo>@{dirName}</echo>
            <copy
                todir="./apks/"
                failonerror="true"
                verbose="true">
                <fileset dir="@{dirName}/../bin/">
                    <include name="*/*.apk"/>
                </fileset>
            </copy>
        </sequential>
    </for>

以下方式确实有效,但我希望使用引用ID,而不是再次创建filelist

    <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>

我解决了这个问题。当我呼叫另一个target时,我没有设置inheritrefs的标志。这需要为真,以便其他target将获得引用。

相关内容

  • 没有找到相关文章

最新更新