diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d61fac5854fad22abbc4adc636873543df4c9f8e
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+
+<!--
+
+  Ant build file for Artemis
+
+-->
+
+<project default="package" basedir=".">
+
+  <target name="init">
+    <tstamp />
+    <property name="name" value="artemis" />
+    <property name="version" value="live" />
+
+    <property name="build.compiler" value="modern" />
+
+    <property name="classpath" value="" />
+
+    <property name="src.dir" value="./" />
+    <property name="docs.dir" value="./docs" />
+
+    <property name="packages" value="uk.* diana.*" />
+
+    <property name="build.dir" value="./ant-build" />
+    <!-- Subdirectories for main source and classes -->
+    <property name="build.src.main" value="${build.dir}/src/main" />
+    <property name="build.dest.main" value="${build.dir}/classes/main" />
+
+    <!-- Subdirectories for tests source and classes -->
+    <property name="build.src.tests" value="${build.dir}/src/tests" />
+    <property name="build.dest.tests" value="${build.dir}/classes/tests" />
+
+    <!-- Subdirectories for docs -->
+    <property name="build.src.docs" value="${build.dir}/src/docs" />
+    <property name="build.dest.docs" value="${build.dir}/docs" />
+    <property name="build.dest.javadocs" value="${build.dest.docs}/api" />
+
+    <!-- Subdirectory for libraries used during build -->
+    <property name="build.lib" value="${build.dir}/lib" />
+
+    <!-- Subdirectory for test reports -->
+    <property name="reports.tests" value="./reports/tests" />
+
+    <property name="dist.root" value="./dist" />
+    <property name="dist.dir" value="${dist.root}/${name}-${version}" />
+  </target>
+
+  <!-- Prepares the build directory -->
+  <target name="prepare" depends="init">
+    <mkdir dir="${build.dir}" />
+  </target>
+
+  <!-- Prepares the source code -->
+  <target name="prepare-core" depends="init,prepare">
+
+    <!-- Creates directories -->
+    <mkdir dir="${build.src.main}" />
+    <mkdir dir="${build.dest.main}" />
+    <mkdir dir="${build.src.tests}" />
+    <mkdir dir="${build.dest.tests}" />
+    <mkdir dir="${reports.tests}" />
+    <mkdir dir="${build.src.docs}" />
+    <mkdir dir="${build.dest.docs}" />
+    <mkdir dir="${build.dest.javadocs}" />
+    <mkdir dir="${build.lib}" />
+
+    <!-- Copies src files -->
+    <copy todir="${build.src.main}">
+      <fileset dir="${src.dir}">
+        <include name="*.class" />
+      </fileset>
+    </copy>
+
+    <!-- Copies docs files -->
+    <copy todir="${build.src.docs}">
+      <fileset dir="${docs.dir}">
+        <exclude name="**/CVS/**" />
+      </fileset>
+    </copy>
+
+    <!-- Copies jars -->
+    <copy todir="${build.dir}">
+      <fileset dir=".">
+        <include name="*.jar" />
+        <exclude name="${docbook.tools.file}" />
+      </fileset>
+    </copy>
+  </target>
+
+  <target name="prepare-src" depends="init,prepare-core" />
+
+  <!-- Compiles the source directory -->
+  <target name="compile" depends="init,prepare-src">
+    <javac
+      srcdir="${build.src.main}"
+      destdir="${build.dest.main}"
+      classpath="${classpath}"
+      deprecation="false"
+      depend="no"
+      debug="true"
+    />
+  </target>
+
+  <!-- Compiles the tests directory -->
+  <target name="compile-tests" depends="init,prepare-src,compile">
+    <javac
+      srcdir="${build.src.tests}"
+      destdir="${build.dest.tests}"
+      debug="true"
+      deprecation="false"
+      depend="yes">
+      <classpath>
+        <pathelement path="${classpath}" />
+        <pathelement path="${build.dest.main}" />
+      </classpath>
+    </javac>
+  </target>
+
+  <!-- Creates the class package (tests are left in the parallel tree) -->
+  <target name="package" depends="init,compile">
+    <jar
+      jarfile="${build.dir}/${name}.jar"
+      basedir="${build.dest.main}"
+      manifest="META-INF/MANIFEST.MF"
+      includes="**"
+    />
+  </target>
+  
+  <!-- Runs tests if the Ant optional JUnit support is available -->
+  <target name="runtests" depends="init,compile-tests" >
+    <junit maxmemory="128m" printsummary="yes" haltonfailure="no" dir="${build.dest.tests}">
+      <formatter type="plain" usefile="true" />
+      <classpath>
+        <!-- main classes from build -->
+        <pathelement path="${build.dest.main}" />
+        <!-- test classes from build -->
+        <pathelement path="${build.dest.tests}" />
+        <!-- test data from build -->
+        <pathelement path="${build.src.tests}" />
+        <!-- classes specified in this file -->
+        <pathelement path="${classpath}" />
+        <!-- classes specified in system classpath -->
+        <pathelement path="${java.class.path}" />
+      </classpath>
+      <batchtest fork="yes" todir="${reports.tests}">
+        <fileset dir="${build.dest.tests}">
+          <include name="**/*Test.class" />
+          <include name="**/*TestSuite.class" />
+        </fileset>
+      </batchtest>
+    </junit>
+  </target>
+
+  <!-- Cleans everything -->
+  <target name="clean" depends="init">
+    <delete dir="${build.dir}" />
+    <delete dir="${dist.root}" />
+    <delete file="${name}-${version}.tar.gz" />
+    <delete file="${name}-${version}.tar" />
+    <delete file="${name}-${version}.zip" />
+  </target>
+</project>