我有一个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个其他案例的时间?谢谢。
我找到了使用<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>
ant-contrib中的foreach标签可以满足您的要求。给它一个文件集,并把它指向运行jar的目标。