Exits the current build (just throwing a BuildException), optionally printing additional information.
The message of the Exception can be set via the message attribute or character data nested into the element.
| Attribute | Description | Required | 
| message | A message giving further information on why the build exited | No | 
| if | Only fail if a property of the given name exists in the current project | No | 
| unless | Only fail if a property of the given name doesn't exist in the current project | No | 
| status | Exit using the specified status code; assuming the generated Exception is not caught, the JVM will exit with this status. Since Ant 1.6.2 | No | 
As an alternative to the if/unless attributes,
  conditional failure can be achieved using a single nested
  <condition> element, which should contain exactly one
  core or custom condition.  For information about conditions, see
  here.
Since Ant 1.6.2
<fail/>
will exit the current build with no further information given.
BUILD FAILED build.xml:4: No message
<fail message="Something wrong here."/>
will exit the current build and print something like the following to wherever your output goes:
BUILD FAILED build.xml:4: Something wrong here.
<fail>Something wrong here.</fail>
will give the same result as above.
<fail unless="thisdoesnotexist"/>
will exit the current build and print something like the following to wherever your output goes:
BUILD FAILED build.xml:2: unless=thisdoesnotexistUsing a condition to achieve the same effect:
  <fail>
     <condition>
       <not>
         <isset property="thisdoesnotexist"/>
       </not>
     </condition>
   </fail>
Output:
BUILD FAILED build.xml:2: condition satisfied