Is it possible in Ant to call the same target multiple times with different parameters?
My command looks like the following:
ant unittest -Dproject='proj1' unittest -Dproject='proj2' The problem is that unittest gets run twice, but only for proj2:
unittest: [echo] Executing unit test for project proj2 unittest: [echo] Executing unit test for project proj2 I know that I can run two separate ant commands, but that is going to cause additional problems with the unit test report files.
11 Answer
You could add another target to invoke your unittest target twice, with different parameters, using the antcall task e.g.
<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> Output:
test: unittest: [echo] project=proj1 unittest: [echo] project=proj2 BUILD SUCCESSFUL Total time: 0 seconds Alternatively, you could change the unittest target to be a 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> 4