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.

1

1 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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy