Apache Ant is a Java-based build tool that is platform independent. The configuration files are XML-based. The Eclipse has Ant built-in. Although we will use Eclipse and its built-in Ant to develop most of our web applications, we also install an Ant version outside the Eclipse, so that we can run Ant at the command line.
Ant relies on Java. We assume that you have Java JDK installed in this tutorial.
build.xml
1. <project name="HelloWorld" basedir="." default="main"> 2. 3. <target name="clean"> 4. <delete dir="build"/> 5. </target> 6. 7. <target name="compile"> 8. <mkdir dir="build/classes"/> 9. <javac srcdir="src" destdir="build/classes"/> 10. </target> 11. 12. <target name="jar"> 13. <mkdir dir="build/jar"/> 14. <jar destfile="build/jar/${ant.project.name}.jar" 15 basedir="build/classes"> 16. <manifest> 17. <attribute name="Main-Class" 18. value="org.apache.ant.HelloWorld"/> 19. </manifest> 20. </jar> 21. </target> 22. 23. <target name="run"> 24. <java jar="build/jar/${ant.project.name}.jar" fork="true"/> 25. </target> 26. 27. <target name="main"> 28. </target> 29. 30. </project>
HelloWorld.java
1. package org.apache.ant; 2. 3. public class HelloWorld { 4. public static void main(String[] args) { 5. System.out.println("Hello World"); 6. } 7. }The directory structure under src is org/apache/ant.
ant compile
ant jar
ant run
ant clean
build.xml
1. <project name="HelloWorld2" basedir="." default="main"> 2. 3. <property name="src.dir" value="src"/> 4. <property name="build.dir" value="build"/> 5. <property name="classes.dir" value="${build.dir}/classes"/> 6. <property name="jar.dir" value="${build.dir}/jar"/> 7. <property name="main-class" value="org.apache.ant.HelloWorld2"/> 8. 9. <target name="clean"> 10. <delete dir="${build.dir}"/> 11. </target> 12. 13. <target name="compile"> 14. <mkdir dir="${classes.dir}"/> 15. <javac srcdir="${src.dir}" destdir="${classes.dir}"/> 16. </target> 17. 18. <target name="jar" depends="compile"> 19. <mkdir dir="${jar.dir}"/> 20. <jar destfile="${jar.dir}/${ant.project.name}.jar" 21. basedir="${classes.dir}"> 22. <manifest> 23. <attribute name="Main-Class" value="${main-class}"/> 24. </manifest> 25. </jar> 26. </target> 27. 28. <target name="run" depends="jar"> 29. <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> 30. </target> 31. 32. <target name="clean-build" depends="clean,jar"/> 33. 34. <target name="main" depends="clean,run"/> 35. 36. </project>
antHelloAnt Code Listing:
build.xml
1. <project name="HelloAnt" basedir="." default="main"> 2. 3. <property name="src.dir" value="src"/> 4. <property name="build.dir" value="build"/> 5. <property name="classes.dir" value="${build.dir}/classes"/> 6. <property name="jar.dir" value="${build.dir}/jar"/> 7. <property name="browser" 8. location="C:/Program Files/Internet Explorer/iexplore.exe"/> 9. <property name="file" location="HelloAnt.html"/> 10. 11. <property name="main-class" value="myant.HelloAnt"/> 12. 13. <target name="clean"> 14. <delete dir="${build.dir}"/> 15. <delete file="${file}"/> 16. </target> 17. 18. <target name="compile"> 19. <mkdir dir="${classes.dir}"/> 20. <javac srcdir="${src.dir}" destdir="${classes.dir}"/> 21. </target> 22. 23. <target name="jar" depends="compile"> 24. <mkdir dir="${jar.dir}"/> 25. <jar destfile="${jar.dir}/${ant.project.name}.jar" 26. basedir="${classes.dir}"> 27. <manifest> 28. <attribute name="Main-Class" value="${main-class}"/> 29. </manifest> 30. </jar> 31. </target> 32. 33. <target name="run" depends="jar"> 34. <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> 35. <exec executable="${browser}"> 36. <arg value="${file}"/> 37. </exec> 38. </target> 39. 40. <target name="clean-build" depends="clean,jar"/> 41. 42. <target name="main" depends="clean,run"/> 43. 44. </project>
build.xml
1. <?xml version="1.0" encoding="ISO-8859-1"?> 2. <project name="MyTask" basedir="." default="use"> 3. 4. <property name="src.dir" value="src"/> 5. <property name="classes.dir" value="classes"/> 6. 7. <target name="clean" description="Delete all generated files"> 8. <delete dir="${classes.dir}" failonerror="false"/> 9. <delete file="${ant.project.name}.jar"/> 10. </target> 11. 12. <target name="compile" description="Compiles the Task"> 13. <mkdir dir="${classes.dir}"/> 14. <javac srcdir="${src.dir}" destdir="${classes.dir}"/> 15. </target> 16. 17. <target name="jar" description="JARs the Task" depends="compile"> 18. <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/> 19. </target> 20. 21. <target name="use" description="Use the Task" depends="jar"> 22. <taskdef name="hellotask" classname="org.apache.ant.HelloTask" 23. classpath="${ant.project.name}.jar"/> 24. <hellotask/> 25. </target> 26. 27. </project>
HelloTask.java
1. package org.apache.ant; 2. 3. public class HelloTask { 4. 5. public void execute() { 6. String message = "Hello Task"; 7. System.out.println("Here is the message: " + message ); 8. } 9. }
.bat
script to set the environment variables as follows.
setEnvAntYou would see all the environment variables needed for Ant are set in this window. If you use a new window, all these environment variavles are gone. You need to reset them if you want to use them.