【发布时间】:2012-08-02 01:58:53
【问题描述】:
我有两个 txt 文件: File1.txt - 包含 src 目录列表;和 File2.txt - 包含 dest 目录列表。我需要使用从 src 目录到 dest 目录的循环来进行复制。
File1.txt(SVN可怕的结构)
abcBIN
abcBIN/fdPro
...so on
File2.txt(LINUX结构)
apps/xxx/yyy/bin/abc
apps/xxx/yyy/bin/abc/fdpro
...so on
我需要将 abcBIN 文件目录复制到 apps/xxx/yyy/bin/abc 等。一对一映射。
<project xmlns:ac="antlib:net.sf.antcontrib">
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="path-to-ant-contrib.jar"/>
</classpath>
</taskdef>
<loadfile property="file1" srcfile="File1.txt"/>
<loadfile property="file2" srcfile="File2.txt"/>
<ac:for param="i" list="${file1}">
<ac:for param="j" list="${file2}">
<sequential>
<echo>@{i}@{j}</echo>
<echo>copying....</echo>
<property name="src.dir" value="/home/name/svn_repo/dir" />
<property name="dest.dir" value="/home/name/mapp" />
<copy todir="${dest.dir}/@{j}">
<fileset dir="${src.dir}/@{i}">
</fileset>
</copy>
</sequential>
</ac:for>
</ac:for>
</project>
但它不起作用。
我收到一个错误:
ac:for doesn't support the nested "for" element
我不能使用 UNIX shell 或 Perl。必须在 Ant 中完成。
如果您对 Ant 中的嵌套循环有更好的了解,请告诉我。
【问题讨论】:
-
我需要复制(file.txt 目录到 file2.txt 目录)例如 abcBIN 文件目录到 apps/xxx/yyy/bin/abc 等等。一对一映射。
-
如果你真的想这样做,你需要把第二个
<for>放在<sequential>里面,你还需要把<echo>.....</copy>部分放在第二个里面的<sequential>里面<for>. -
coolcfan,如果我使用你提到的逻辑。它不适用于一对一映射。例如来自 src 的一行,然后来自 dest dir 的一行
-
@ShwetaChandrakar 您可以发布您的解决方案,以便其他人可以从中受益。
-
@ShwetaChandrakar 我需要知道这个解决方案.. 谢谢
标签: ant copy ant-contrib