ONJava.com -- The Independent Source for Enterprise Java
oreilly.comSafari Books Online.Conferences.

advertisement

AddThis Social Bookmark Button

Open Source Java: Ant
Pages: 1, 2, 3

A Less Simple Example

As you can see, this file follows the same structure as the simple example above. This time, however, the project will by default create a jar file named LessSimple with the date appended. A target which acts to clean up the build areas is included too.



<?xml version="1.0"?>

<project name="LessSimple" default="dist" basedir=".">

  <!-- set global properties for this build -->
  <property name="src" value="." />
  <property name="build" value="build" />
  <property name="dist" value="dist" />

  <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${build}" />
  </target>

  <target name="compile" depends="init">
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${src}" destdir="${build}" />
  </target>

  <target name="dist" depends="compile">
    <!-- Create the ${dist}/lib directory -->
    <mkdir dir="${dist}/lib" />

    <!-- Put everything in ${build} into the LessSimple-${DSTAMP}.jar file -->
    <jar jarfile="${dist}/lib/LessSimple-${DSTAMP}.jar" basedir="${build}" />
  </target>

  <target name="clean">
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}" />
    <delete dir="${dist}" />
  </target>
</project>

Extending Ant

As mentioned previously, Ant can be extended with your existing Java skills in two different ways: through the build events mechanism and through adding new task objects.

Build Event Listeners

As with other areas of the Java platform, Ant generates build events as it runs through the build process. BuildListener objects can be attached to Ant. The listener receives BuildEvent objects for the following events:

  • Build started
  • Build finished
  • Target started
  • Target finished
  • Task started
  • Task finished
  • Message logged

Here's an example listener class to get you started. It simply outputs a message when the build begins and ends.

public class MyBuildListener implements BuildListener
{
public void buildStarted( BuildEvent event )
{
System.out.println( event.getProject().getName() + ": Build started..." );
}

public void buildFinished( BuildEvent event )
{
System.out.println( event.getProject().getName() + ": Build finished..." );
}

public void targetStarted( BuildEvent event )
{
System.out.println( event.getTarget().getName() + ": Target started..." );
}

public void targetFinished( BuildEvent event )
{
System.out.println( event.getTarget().getName() + ": Target finished..." );
}

public void taskStarted( BuildEvent event )
{
System.out.println( event.getTask().getTaskName() + ": Task started..." );
}

public void taskFinished( BuildEvent event )
{
System.out.println( event.getTask().getTaskName() + ": Task finished..." );
}

public void messageLogged( BuildEvent event )
{
System.out.println( "A Message: " + event.getTask().getMessage() );
}
}

If you wish to attach a listener from the command line you may use the -listener option. For example,

ant -listener org.apache.tools.ant.XmlLogger

This will run Ant with a listener which generates an XML representation of the build progress.

Pages: 1, 2, 3

Next Pagearrow