Index: axis/build.xml
===================================================================
--- axis/build.xml	(revision 6b25610e90059bc8e2e5b6acce5876bb280513d4)
+++ axis/build.xml	(revision 56baf92411943b863e8c3c3b105b2cc0d9cedc8c)
@@ -27,4 +27,6 @@
   <property name="wsdl.dir" value="../wsdl"/>
   <property name="cert.pem" value="./emulab.pem"/>
+  <property name="version" value="1.0"/>
+  <property name="fedd.jar" value="fedd-${version}.jar"/>
 
   <path id="compile.classpath">
@@ -32,8 +34,16 @@
   </path>
 
+  <path id="run.classpath">
+    <fileset dir="${lib.dir}" includes="**/*.jar"/>
+    <fileset dir="${jar.dir}" includes="**/*.jar"/>
+  </path>
+
+
   <taskdef resource="axis-tasks.properties" classpathref="compile.classpath" />
 
-  <target name="all" depends="clean" description="Clean then build" />
-
+  <target name="all" depends="clean,jar" description="Clean then build" />
+  <target name="run" depends="multistatus" description="Run multistatus" />
+
+  <!-- remove all derived and compiled files -->
   <target name="clean">
     <delete dir="${basedir}${file.separator}edu"/>
@@ -43,4 +53,13 @@
     <delete file="${keystore.file}"/>
   </target>
+
+  <!-- just remove command files -->
+  <target name="clean-commands" >
+    <delete>
+      <fileset dir="${classes.dir}"
+	includes="**/FeddCommand.class **/Create.class **/MultiStatus.class **/Terminate.class"/>
+    </delete>
+  </target>
+
 
   <!-- Check to see if the keystore file exists, if so the keystore.available
@@ -100,4 +119,5 @@
 
   <!-- Documentation targets -->
+  <!-- Generate basic javadoc -->
   <target name="doc" description="Generate API documentation">
     <mkdir dir="${doc.dir}"/>
@@ -107,4 +127,5 @@
   </target>
 
+  <!-- Generate pedentically complete javadoc -->
   <target name="dev-doc" 
     description="Generate detailed/developer API documentation">
@@ -131,7 +152,24 @@
   </target>
 
+  <!-- check to see if the test classes and are present.  If so
+       set the compile.done property -->
+  <target name="compile.check">
+    <condition property="compile.done">
+      <and>
+	<available file="${classes.dir}${file.separator}Create.class"/>
+	<available file="${classes.dir}${file.separator}MultiStatus.class"/>
+	<available file="${classes.dir}${file.separator}Terminate.class"/>
+	<available file="${classes.dir}${file.separator}FeddCommand.class"/>
+      </and>
+    </condition>
+  </target>
+
+
   <!-- compile the sources into the build directory.  Depends on the
-       wsdl-generated files being created. -->
-  <target name="compile" depends="wsdl-parse" description="Compile the source">
+       wsdl-generated files being created, and only happens if one if
+       one or more of the files checked for by the compile.check target
+       is missing. -->
+  <target name="compile" depends="wsdl-parse,compile.check" 
+    unless="compile.done" description="Compile the source">
     <mkdir dir="${classes.dir}" />
     <javac srcdir="${src.dir}" destdir="${classes.dir}" 
@@ -139,10 +177,17 @@
   </target>
 
+  <!-- Create the fedd jar file in ${jar.dir} (build/jar) -->
+  <target name="jar" depends="compile" description="make fedd jar">
+    <jar destfile="${jar.dir}${file.separator}${fedd.jar}"
+      basedir="${classes.dir}"
+      excludes="**/Create.class **/MultiStatus.class **/Terminate.class **/FeddCommand.class"/>
+  </target>
+
   <!-- Test programs -->
-  <target name="multistatus" depends="compile,keys"
+  <target name="multistatus" depends="compile,jar,keys"
     description="run visualizer">
     <java classname="MultiStatus" fork="true" >
       <classpath>
-	<path refid="compile.classpath"/>
+	<path refid="run.classpath"/>
 	<pathelement path="${classes.dir}"/>
       </classpath>
@@ -150,21 +195,22 @@
   </target>
 
-  <target name="create" depends="compile,keys"
+  <target name="create" depends="compile,jar,keys"
     description="run visualizer">
     <java classname="Create" fork="true" >
       <classpath>
-	<path refid="compile.classpath"/>
+	<path refid="run.classpath"/>
 	<pathelement path="${classes.dir}"/>
       </classpath>
       <arg value="${user.name}-test"/>
-    </java>
-  </target>
-
-
-  <target name="terminate" depends="compile,keys"
+      <arg file="./deter-only.tcl"/>
+    </java>
+  </target>
+
+
+  <target name="terminate" depends="compile,jar,keys"
     description="run visualizer">
     <java classname="Terminate" fork="true" >
       <classpath>
-	<path refid="compile.classpath"/>
+	<path refid="run.classpath"/>
 	<pathelement path="${classes.dir}"/>
       </classpath>
