While I'm digging around through Ant build scripts today, here's a sample Ant target I created that demonstrates how to compile a Java program, while also showing a few other things, including how to exclude your JUnit tests during the compile process.
This particular script happened to be used for building a Swing application, but it can really be used to build any Java application, command-line based or other.
Here's the source code for my Ant compile target:
<target name="compile" depends="clean-classes-dir">
<javac destdir="classes" source="1.5" >
<src path="src"/>
<exclude name="**/Test*.java"/>
<classpath refid="class.path"/>
</javac>
<copy todir="classes">
<fileset dir="src">
<include name="**/*.gif"/>
<include name="**/*.jpg"/>
<include name="**/*.png"/>
</fileset>
</copy>
</target>
Description
Here's a brief description of what this Ant target does:
-
The first part of the script runs the Ant
javactask. -
This task compiles all the files found in the
srcdirectory, excluding all files matching the naming patterTest*.java. By convention, I named all my unit test classes this way, so I am able to exclude them in the compiling process. -
When compiling, I set the classpath using the
class.pathvariable, which I created earlier in my build script. -
After the
javactask executes successfully, I copy a bunch of image files from thesrcdirectory structure to theclassesfolder structure. (This is a collection of images that are used by my application.)
Building the classpath
I mentioned that earlier in my build script I created the variable named class.path. For the purpose of completeness, I thought I better include the target I created that builds this classpath variable. Here's the source code for that part of my build process:
<path id="class.path">
<fileset dir="lib">
<include name="**/*.jar"/>
<include name="**/*.zip"/>
</fileset>
</path>
As you can see, this segment of code builds a variable named class.path based on all the jar and zip files that are in my project's lib folder.

