Windows installation

There are two ways to install Ant on Windows.

WinAnt

For a quick and easy installation, use the Windows installer for Apache Ant. This installation of Ant will automatically install Ant into the C:\Program Files\WinAnt path by default. It also sets up your ANT_HOME and PATH variables to point at the new installation.

Manual Install

  • Download a .zip binary distribution from the ANT Binary Page.
  • Save the .zip file to a temporary location on your hard-disk (such as the desktop)
  • Expand the contents the folder inside of the .zip file into a directory on your hard drive (i.e. C:\dev\ant)
  • Go to your "System" Control Panel. In Vista, click the "Change Settings" button under the "Computer name, domain, and workgroup" heading.
  • On the "Advanced" tab, click the button at the bottom labeled "Environment Variables"
  • At the top of the screen, add a new User variable. The name should be ANT_HOME, and the value should be the path your zip file was extracted to. (i.e. ANT_HOME = C:\dev\ant)
  • 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"

  • No labels