CS5010, Fall 2008 - UMSL

Getting Started with Ant

by Dr. Wenjie He

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.

1. Installing Ant

2. Setting Up Ant Environment

Ant relies on Java. We assume that you have Java JDK installed in this tutorial.

Study Examples

Download Source Code

Download the source code for this tutorial AntExamples.zip, and extract the files in it to an approriate directory.

Example 1.   HelloWorld

Code Listing: 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>
      

Running Targets

Example 2.   HelloWorld2

Code Listing: 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>

      

Run the default main target.
  
ant
      

Example 3.   HelloAnt

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>
      

Run the default target.

Example 4.   MyTask

Code Listing: 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>
       

Run the default target.

Code Listing: 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.	}
      

Running Ant on School Machines

Many students use the school machines to work on their Java EE projects, and they do not have the privilege to set the environment variables on the school machines. In this situation, we can use a .bat script to set the environment variables as follows.

==========The End==========