在Ant中是否可以使用不同的参数多次调用同一目标?
我的命令如下所示:
ant unittest -Dproject='proj1' unittest -Dproject='proj2'
问题是unittest运行两次,但仅适用于proj2:
unittest:
[echo] Executing unit test for project proj2
unittest:
[echo] Executing unit test for project proj2
我知道我可以运行两个单独的ant命令,但这会导致单元测试报告文件出现其他问题。
答案 0 :(得分:23)
你可以使用antcall任务添加另一个目标,使用不同的参数调用你的unittest目标两次,例如。
<project name="test" default="test">
<target name="test">
<antcall target="unittest">
<param name="project" value="proj1"/>
</antcall>
<antcall target="unittest">
<param name="project" value="proj2"/>
</antcall>
</target>
<target name="unittest">
<echo message="project=${project}"/>
</target>
</project>
输出:
test:
unittest:
[echo] project=proj1
unittest:
[echo] project=proj2
BUILD SUCCESSFUL
Total time: 0 seconds
或者,您可以将unittest目标更改为macrodef:
<project name="test" default="test">
<target name="test">
<unittest project="proj1"/>
<unittest project="proj2"/>
</target>
<macrodef name="unittest">
<attribute name="project"/>
<sequential>
<echo message="project=@{project}"/>
</sequential>
</macrodef>
</project>