Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Ant Wiki" for change 
notification.

The following page has been changed by DavidOram:
http://wiki.apache.org/ant/AntOnWindows

------------------------------------------------------------------------------
   * Add your java JDK Path to the user variables as well.  The name should be 
JAVA_HOME and the value should be the path to the JDK software on your 
hard-drive.  (i.e. JAVA_HOME = C:\Program Files\java\jdk1.6.0_02)
   * If there is already a PATH variable, edit it and add to it.  Otherwise, 
create one more variable named PATH, and add to it ;%ANT_HOME%\bin
  
+ 
+ = Executing batch files =
+ When executing batch files on windows through the <exec> task you commonly 
execute the cmd.exe program to run the batch file.  However this means that any 
ERRORLEVEL reported by the batch file is not propagated up to ant.  If you want 
to run a batch file, and fail if the batchfile sets the ERRORLEVEL, then you 
can try this recipe:
+ 
+       <!--
+       When running a batch files from ant, it cannot detect the %ERRORLEVEL% 
as set by 'exit /B 1'
+       This macro is inspired from 
http://marc.info/?l=ant-user&m=117748848509224&q=raw 
+       and provides a wrapper to detect this correctly
+       -->
+       <macrodef name="runBat">
+               <attribute name="batch"/>
+               <attribute name="args"/>
+               <sequential>
+                       <delete file="${user.dir}/runBat.err" 
failonerror="false"/>
+                       <echo file="${user.dir}/runBat.bat">
+ call @{batch} @{args}
+ if ERRORLEVEL 1 ( 
+    echo %ERRORLEVEL% &gt; ${user.dir}\runBat.err 
+ )
+                       </echo>
+                       <exec executable="cmd">
+                                       <arg value="/c"/>
+                                       <arg value="${user.dir}\runBat.bat"/>
+                               </exec>                         
+                       <delete file="${user.dir}/runBat.bat"/>
+                   <fail message="ERROR: @{batch} failed">
+                       <condition>
+                           <available file="${user.dir}/runBat.err"/>
+                       </condition>
+                   </fail>
+               </sequential>
+       </macrodef>
+ 
+ 
+ And to execute a batch file:
+ <runBat batch="mycommand.bat" args="foo bar moo"/>
+ 
+ This will fail the ant script if mycommand.bat fails, ie: if the batchfile 
executes "exit /b 1"
+ 

Reply via email to