This document provides a step by step tutorial for starting Java programming with Apache Ant. It does not contain deeper knowledge about Java or Ant. This tutorial has the goal to let you see, how to do the easiest steps in Ant.
We want to separate the source from the generated files, so our Java source files will be in src
folder. All generated files should be under build
, and there split into several subdirectories for the individual steps: classes
for our compiled files and jar
for our own JAR-file.
We have to create only the src
directory. (Because I am working on Windows, here is the Windows syntax—translate to your shell):
md src
The following simple Java class just prints a fixed message out to STDOUT, so just write this code into src\\oata\\HelloWorld.java
.
package oata;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Now just try to compile and run that:
md build\\classes
javac -sourcepath src -d build\\classes src\\oata\\HelloWorld.java
java -cp build\\classes oata.HelloWorld
which will result in
Hello World
Creating a jar-file is not very difficult. But creating a startable jar-file needs more steps: create a manifest-file containing the start class, creating the target directory and archiving the files.
echo Main-Class: oata.HelloWorld>myManifest
md build\\jar
jar cfm build\\jar\\HelloWorld.jar myManifest -C build\\classes .
java -jar build\\jar\\HelloWorld.jar
Note: Do not have blanks around the >-sign in the echo Main-Class
instruction because it would falsify it!
After finishing the Java-only step we have to think about our build process. We have to compile our code, otherwise we couldn't start the program. Oh—start—yes, we could provide a target for that. We should package our application. Now it's only one class—but if you want to provide a download, no one would download several hundreds files ... (think about a complex Swing GUI—so let us create a jar file. A startable jar file would be nice ... And it's a good practise to have a clean target, which deletes all the generated stuff. Many failures could be solved just by a "clean build".
By default Ant uses build.xml
as the name for a buildfile, so our .\\build.xml
would be:
<project>
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
<target name="jar">
<mkdir dir="build/jar"/>
<jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="oata.HelloWorld"/>
</manifest>
</jar>
</target>
<target name="run">
<java jar="build/jar/HelloWorld.jar" fork="true"/>
</target>
</project>
Now you can compile, package and run the application via