我正在为其基本运行、清理和编译属性编写构建文件。这是我所拥有的:
<?xml version="1.0" encoding="ISO-8859-1"?>
<project default="compile">
<description>
Compile and run the Java files for Lab7
</description>
<target name="prob1" depends='compile'>
<java classname='prob1'>
<classpath path='./'/>
<arg value='Gertrude'/>
<arg value='Justin'/>
</java>
</target>
<target name="prob2" depends='compile'>
<java classname='prob2'>
<classpath path='./'/>
<arg value='28'/>
</java>
</target>
<target name="prob3" depends='compile'>
<java classname='prob3'>
<classpath path='./'/>
<arg value='2000'/>
</java>
</target>
<target name="prob4" depends='compile'>
<java classname='prob4'>
<classpath path='./'/>
<arg value='2'/>
</java>
</target>
<target name="compile">
<javac srcdir='./' includeantruntime="false"/>
</target>
<target name="clean">
<delete>
<fileset dir="./">
<include name='*.class'/>
</fileset>
</delete>
</target>
</project>
我试图一次一个地用不同的参数运行每个 prob。就像在 prob1 中一样,我想用第一个名称运行它,然后再用第二个名称运行它,我该怎么做?
最佳答案
是的,使用 antlib 可以实现类似的功能,它提供了广泛的功能,例如 for 循环、if 条件和宏。您可以定义一个宏,如
<macrodef name="call-cc">
<attribute name="target"/>
<attribute name="param1">
<attribute name="param2">
<element name="yourtask">
<java classname='$name'>
<classpath path='./'/>
<arg value='@{param1}'/>
<arg value='@{param2}'/>
</java>
</element>
</macrodef>
然后你可以这样称呼它
<call-cc target="unittests" param1="bla" param2="blabla"/>
您可以在 the manual 中阅读有关 antlib 的信息