2011-11-29 85 views
2

我有一个ant脚本,它可以编译我的程序,生成jar并运行它。我的程序有一个参数是一个文件。蚂蚁 - 迭代文件夹以获取运行参数

在我的运行目标中,我希望能够将指定文件夹中的所有文件一个一个地作为参数执行我的jar。

我必须通过像手工编写所有的不同的情况:

<target name="run" depends="jar"> 
    <mkdir dir="${output.dir}" /> 
    <java jar="${myjar}.jar" output="${output.dir}/${test1}" fork="true"> 
      <arg value="${test.dir}/${test1}" /> 
    </java> 
    <java jar="${myjar}.jar" output="${output.dir}/${test2}" fork="true"> 
      <arg value="${test.dir}/${test2}" /> 
    </java> 

    #and so on 

</target> 

或者是有办法也许迭代在我的测试目录并保存我的其他20例写作?

谢谢。

回答

1

我发现我的解决方案使用<apply>标记(doc)。

我的脚本现在看起来它和每一个执行中感谢<redirector>标签单独的文件输出:

<target name="run" depends="jar"> 
    <mkdir dir="${output.dir}" /> 
    <apply executable="java"> 
     <fileset dir="${test.dir}" /> 
     <arg value="-jar"/> 
     <arg path="${jar.dir}/${myjar}.jar" /> 
     <srcfile /> 
     <redirector> 
       <outputmapper id="out" type="glob" from="*" to="${output.dir}/*" /> 
     </redirector> 
    </apply> 
</target> 
0

ant-contrib中的foreach标签做你想要的。给它一个文件集并将它指向运行你的jar的目标。

+0

是的,我不希望有安装别的东西...我只是找到了答案我以前找不到,http://stackoverflow.com/questions/1467991/ant-how-to-execute-a-command-for-each-file-in-directory,使用'apply'标签。我会试试看。 – talnicolas