我有一个包含目录列表的filelist
。我需要遍历filelist
并从每个目录中获取一个文件并将其复制到另一个位置。
我尝试将filelist
与foreach
结合使用,但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>
答案 0 :(得分:1)
我弄明白了这个问题。当我打电话给另一个人target
时,我没有为inheritrefs
设置标志。这必须是真的,因此其他target
将获得引用。