In this Ant tutorial installment, we’ll take a look at the conditional execution of targets. Let’s start with the simple Hello World build file from before. Modify the hello and goodbye targets to include the if and unless attributes as shown in bold.
The if=”named.property” attribute causes a target to be executed if the named property is set. And the unless=”named.property” attribute causes a target to be executed unless the named property is set. If we execute the build file without specifying a value for the property “hello.set”, then the hello target will be skipped and the goodbye target will be executed. And specifying a value for the property “hello.set” yields the opposite result.
Of course, we could just specify the desired target on the command line and avoid all that. But let’s take a look at how we can use this to cleanup after a failed target. Start with the build file we used to run multiple JUnit test cases and split the original target “test” into three pieces: test-execute, test-failed, and test. Target “test-execute” will contain the JUnit task, target “test-failed” will contain the cleanup code and be conditional on if=”test.failure”, and target “test” will tie it all together. This will execute our clean up code if a test fails and skip the clean up code if all tests pass. Note that we could consolidate targets “test-failed” and “test” together at the cost of some clarity about the intent of each target.
Execution with Test Failure
Execution with Test Success
Disclaimer: I don’t claim to be an expert on ant. Please send comments and corrections.