4

2 つの txt ファイルがあります。 File1.txt – src dir のリストが含まれています。および File2.txt – dest dir のリストが含まれています。src dir から dest dir へのループを使用してコピーを行う必要があります。

File1.txt (SVN dire 構造)

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 などにコピーする必要があります。1 対 1 のマッピング。

<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 シェルまたは Perl を使用できません。Antで行う必要があります。

Ant のネストされたループについて何か良いアイデアがあれば教えてください。

4

1 に答える 1

2

@PulakAgrawal: 行区切りとしてコロンを使用して 2 つのテキスト ファイルを 1 つに結合し、魔法が始まりました :)

例: src パス:dest パス

     <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>
于 2012-08-24T00:51:55.480 に答える