Thanks for the help, guys... Shawn's approach gets me closest to where I
want to be (just need to work on the condition nesting now).

On Wed, May 18, 2011 at 11:29 AM, Shawn Castrianni <
shawn.castria...@halliburton.com> wrote:

> I didn't have to use a custom logger.  Instead, my custom EndTask is this:
>
> package com.lgc.btlite;
>
> import org.apache.tools.ant.Project;
> import org.apache.tools.ant.Task;
>
> public class EndTask extends Task {
>  protected String _message = null;
>
>  public void execute()
>  {
>    if((_message != null) && (_message.length() > 0))
>      log("\n" + _message,Project.MSG_INFO);
>    getProject().fireBuildFinished(null);
>    System.exit(0);
>  }
>
>  public void setMessage(String message)
>  {
>    _message = message;
>  }
> }
>
> ---
> Shawn Castrianni
>
> -----Original Message-----
> From: Matt Benson [mailto:gudnabr...@gmail.com]
> Sent: Wednesday, May 18, 2011 10:27 AM
> To: Ant Users List
> Subject: Re: Custom task to force build success
>
> On Wed, May 18, 2011 at 10:07 AM, Carlton Brown <cblists...@gmail.com>
> 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: user-unsubscr...@ant.apache.org For additional
> commands, e-mail: user-h...@ant.apache.org
>
> ----------------------------------------------------------------------
> This e-mail, including any attached files, may contain confidential and
> privileged information for the sole use of the intended recipient.  Any
> review, use, distribution, or disclosure by others is strictly prohibited.
>  If you are not the intended recipient (or authorized to receive information
> for the intended recipient), please contact the sender by reply e-mail and
> delete all copies of this message.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
> For additional commands, e-mail: user-h...@ant.apache.org
>
>

Reply via email to