Using the built-in (with JDK 6) javascript mechanism, no additional libraries are needed (antcontrib .. etc.)!
1. Java System.exit ()
<script language="javascript"> self.log("Ending intentionally \n...\n..\n."); java.lang.System.exit(0); </script>
you can get BUILD FAILED when working in Eclipse: STRICTLY FAULT javax.script.ScriptException: sun.org.mozilla.javascript.internal.WrappedException: Wrapped org.eclipse.ant.internal.launching.remote.AntSecurityException => then use Ant api instead
2. Ant api
<script language="javascript"> self.log("Ending intentionally \n...\n..\n."); project.fireBuildFinished(null); </script>
Eclipse output, does not print BUILD SUCCESSFUL:
[script] Ending intentionally [script] ... [script] .. [script] . Total time: 410 milliseconds
The output console, BUILD SUCCESSFUL is printed 2 times:
[script] Ending intentionally [script] ... [script] .. [script] . BUILD SUCCESSFUL Total time: 0 seconds BUILD SUCCESSFUL Total time: 0 seconds
Wrap the macrodef for reuse, i.e.
<macrodef name="stopbuild"> <attribute name="condition"/> <attribute name="paramtype" default="math"/> <attribute name="param1"/> <attribute name="param2"/> <attribute name="when" default="true"/> <sequential> <script language="javascript"> falsecondition = false; switch ("@{condition}") { case "lt" : b = "@{paramtype}" == "math" ? parseInt("@{param1}") < parseInt("@{param2}") : "@{param1}" < "@{param2}"; break; case "gt" : b = "@{paramtype}" == "math" ? parseInt("@{param1}") > parseInt("@{param2}") : "@{param1}" > "@{param2}"; break; case "eq" : b = "@{paramtype}" == "math" ? parseInt("@{param1}") == parseInt("@{param2}") : "@{param1}" == "@{param2}"; break; default: self.log("Wrong condition : @{condition}, supported: lt, gt, eq"); falsecondition = true; } if(!falsecondition && b == java.lang.Boolean.valueOf("@{when}")) { self.log("Stopping Build because @{param1} @{condition} @{param2} is @{when} !!"); java.lang.System.exit(0); // alternatively use //project.fireBuildFinished(null); } </script> </sequential> </macrodef>
Examples
<stopbuild param1="10" param2="11" condition="lt"/>
output:
[script] Stopping Build because 10 lt 11 is true !!
<stopbuild param1="abc" param2="abcd" paramtype="foo" condition="lt"/>
output:
[script] Stopping Build because abc lt abcd is true !!
Rebse
source share