On Wed, May 18, 2011 at 10:07 AM, Carlton Brown <[email protected]> wrote:
> I'm struggling to write a custom task that is essentially the opposite of
> "fail". I've seen it mentioned on this list before, but never found a
> conclusive answer.
>
> To be successful, a task expressed like this:
> <my:win message="You win!" if="${winning}" unless="${failing}">
> <!-- ideally, a nested condition would be permitted here, if it's easy to
> implement -->
> </my:win>
>
> The task would halt the build, and I would see the following output:
> You win!
> BUILD SUCCESSFUL
> Total time: 2 seconds
>
> and the exit code would be zero.
>
> The closest I got was to print the exit message and set the exit status to
> zero, but I still get this frustrating "BUILD FAILED" message, which is
> incompatible with the aesthetic of winning.
>
> Help?
>
Hi, Carlton. I think that you're going to need to provide a custom
logger. I would try:
public class FalseFailureSuppressingLogger extends
org.apache.tools.ant.DefaultLogger {
public void buildFinished(BuildEvent event) {
Throwable error = event.getException();
if (error instanceof ExitStatusException &&
((ExitStatusException) error).getStatus() == 0) {
event.setException(null);
}
try {
super.buildFinished(event);
} finally {
event.setException(error);
}
}
}
Then simply use <fail message="You win!" status="0" /> in your buildfile.
HTH,
Matt
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]