我有一个包含目录列表的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>
我解决了这个问题。当我呼叫另一个target
时,我没有设置inheritrefs
的标志。这需要为真,以便其他target
将获得引用。