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