package oata;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
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
ant compileant jarant run
Or shorter with
ant compile jar run
While having a look at the buildfile, we will see some similar steps between Ant and the java-only commands:
| java-only |
Ant |
md build\classes javac -sourcepath src -d build\classes src\oata\HelloWorld.java echo Main-Class: oata.HelloWorld>mf md build\jar jar cfm build\jar\HelloWorld.jar mf -C build\classes . java -jar build\jar\HelloWorld.jar |
<mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> <!-- automatically detected --> <!-- obsolete; done via manifest tag --> <mkdir dir="build/jar"/> <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes"> <manifest> <attribute name="Main-Class" value="oata.HelloWorld"/> </manifest> </jar> <java jar="build/jar/HelloWorld.jar" fork="true"/> |