Ant 嵌套循环

标签 ant copy ant-contrib

我有两个 txt 文件: File1.txt – 包含 src 目录列表;和 File2.txt – 包含目标目录列表。我需要使用从 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 中的嵌套循环有任何更好的想法,请告诉我。

最佳答案

@PulakAgrawal:我使用冒号作为行分隔符将两个文本文件合并为一个,魔法开始了:)

例如源路径:目标路径

     <loadfile property="allfiles" srcFile="mapping"/>

      <ac:for list="${allfiles}" param="line" delimiter="${line.separator}">

     <ac:sequential>

            <ac:propertyregex property="from" input="@{line}" regexp="(.*):(.*)" select="\1" override="true"/>

            <ac:propertyregex property="to" input="@{line}" regexp="(.*):(.*)" select="\2" override="true"/>

            <echo>Copying dir ${from} to ${to} ...</echo>

            <property name="src.dir" value="." /> <property name="dest.dir" value="." />

            <copy todir="${dest.dir}/${to}">     <fileset dir="${src.dir}/${from}">  </fileset> </copy>

     </ac:sequential>

     </ac:for>

关于 Ant 嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805554/

相关文章:

ant - 在 Flash Builder 4 中使用 Ant 任务

Ant 贡献 : equals doesn't work in for loop

unix - 如何使用 ant 将文件从 Unix 共享复制到 Windows 机器?

ant - 如何使用 "if-else"模拟 "condition"逻辑?

Ant 解压缩任务并且仅基于另一个目录提取文件

php - 警告 : PHPLoc enrichment not enabled or phploc. 在 phpDox 中未找到 xml

c# - 从 UNC 路径查找网络驱动器

powershell - 如何复制特定文件并将其粘贴到其他位置保存结构?

amazon-web-services - 将一个 s3 存储桶复制到另一个存储桶太慢了,我怎样才能做得更快?

java - 使用 Ant 和 Junit 执行单个测试方法