Enhance the build file
Now we have a working buildfile we could do some enhancements: many time you are referencing the same directories, main-class and jar-name are hard coded, and while invocation you have to remember the right order of build steps.
The first and second point would be addressed with properties, the third with a special property - an attribute of the <project>-tag and the fourth problem can be solved using dependencies.
<project name="HelloWorld" basedir="." default="main"><property name="src.dir" value="src"/><property name="build.dir" value="build"/><property name="classes.dir" value="build/classes"/><property name="jar.dir" value="build/jar"/><property name="main-class" value="oata.HelloWorld"/><target name="clean"><delete dir="build"/></target><target name="compile"><mkdir dir="${classes.dir}"/><javac srcdir="src" destdir="${classes.dir}"/></target><target name="jar" depends="compile"><mkdir dir="${jar.dir}"/><jar destfile="${jar.dir}/apache-ant.jar" basedir="${classes.dir}"><manifest><attribute name="Main-Class" value="${main-class}"/></manifest></jar></target><target name="run" depends="jar"><java jar="${jar.dir}/apache-ant.jar" fork="true"/></target><target name="clean-build" depends="clean,jar"/><target name="main" depends="clean,run"/></project>
Now it's easier, just do a ant and you will get
Buildfile: build.xmlclean:compile:[mkdir] Created dir: C:\...\build\classes[javac] Compiling 1 source file to C:\...\build\classesjar:[mkdir] Created dir: C:\...\build\jar[jar] Building jar: C:\...\build\jar\HelloWorld.jarrun:[java] Hello Worldmain:BUILD SUCCESSFUL