- XML parser framework rewrite
[mir.git] / build.xml
index d26d695..c130914 100755 (executable)
--- a/build.xml
+++ b/build.xml
@@ -1,13 +1,5 @@
 <project name="Mir" default="compile" basedir=".">
 
-
-<!-- What this file is all about
-
-     You can use this version of build.xml to use directly with ant
-     i.e. without the build.sh script. Simply call ant and let it all
-     happen.
--->
-
 <!-- Property Definitions
 
      Please not that only the first couple of properties have to be defined.
 
 -->
 
-  <property name="app.name"       value="Mir"/>
-  <property name="deploy.home"    value="../${app.name}"/>
+  <property name="app.name"       value="mir"/>
+  <property name="deploy.home"    value="./bin/${app.name}"/>
+
+  <!-- don't use unless your Jikes is >= v1.18 -->
+  <!-- <property name="build.compiler"   value="jikes"/>-->
 
 
 <!-- No customization required after this line -->
 
+  <property environment="env"/>
+  <property file="build.properties"/>
   <property name="dist.home"      value="${deploy.home}"/>
   <property name="deploy.webinf"  value="${deploy.home}/WEB-INF"/>
   <property name="deploy.classes" value="${deploy.webinf}/classes"/>
   <property name="dist.src"       value="${app.name}.jar"/>
   <property name="dist.war"       value="${app.name}.war"/>
   <property name="javadoc.home"   value="${deploy.home}/javadoc"/>
-
-  <!-- If you want to use the very good jikes compiler, uncomment this
-  <property name="build.compiler"   value="jikes"/>-->
-
-  <!-- The following 3 properties seem redundant -->
-  <property name="java.home"             value="/usr/lib/j2sdk1.3/"/>
-  <property name="java.localhome" value="/usr/share/java/"/>
-  <property name="tomcat.home"    value="/usr/share/tomcat/"/>
+  <property name="tomcat.home"    value="${env.TOMCAT_HOME}"/>
+  <property name="compile.optimize" value="off" />
+  <property name="compile.debug" value="on" />
 
 
   <!-- Construct the classpath -->
     <pathelement path="${deploy.home}"/>
     <pathelement path="${deploy.classes}"/>
     <pathelement path="source"/>
+    <pathelement path="etc/extrasource"/>
     <fileset dir="lib">
       <include name="*.jar"/>
     </fileset>
-<!--    <fileset dir="${java.home}/lib">
-      <include name="tools.jar"/>
-      <include name="rt.jar"/>
-    </fileset>
-    <fileset dir="${java.localhome}">
-      <include name="*.jar"/>
-    </fileset>
+
     <pathelement path="${tomcat.home}/lib/tomcat.jar"/>
--->
+  <!-- for libs shared between tomcat and webapps (tomcat 3.3.x) -->
+       <fileset dir="${tomcat.home}">
+               <include name="lib/common/*.jar" />
+       </fileset>
+  <!-- for libs shared between webapps (tomcat 3.3.x) -->
+       <fileset dir="${tomcat.home}">
+               <include name="lib/apps/*.jar" />
+       </fileset>
+  <!-- for libs shared between tomcat and webapps (tomcat 4.x.x) -->
+       <fileset dir="${tomcat.home}">
+               <include name="common/lib/*.jar" />
+       </fileset>
+  <!-- for libs shared between webapps (tomcat 4.0.x) -->
+       <fileset dir="${tomcat.home}">
+               <include name="lib/*.jar" />
+       </fileset>
+  <!-- for libs shared between webapps (tomcat 4.1.x) -->
+       <fileset dir="${tomcat.home}">
+               <include name="shared/lib/*.jar" />
+       </fileset>
+       <fileset dir="${tomcat.home}">
+               <include name="common/endorsed/*.jar" />
+       </fileset>
   </path>
 
-
-
-<!-- The "prepare" target is used to construct the deployment home
-     directory structure (if necessary), and to copy in static files
-     as required.  In the example below, Ant is instructed to create
-     the deployment directory, copy the contents of the "web/" source
-     hierarchy, and set up the WEB-INF subdirectory appropriately.
--->
-
   <target name="prepare">
     <mkdir  dir="${deploy.home}"/>
+    <mkdir  dir="${deploy.webinf}"/>
+    <mkdir  dir="${deploy.classes}"/>
+    <mkdir  dir="${deploy.webinf}/log"/>
+
     <copy todir="${deploy.home}">
       <fileset dir="web"/>
     </copy>
-    <mkdir  dir="${deploy.home}/templates"/>
-    <copy todir="${deploy.home}/templates">
-      <fileset dir="templates"/>
+
+    <copy todir="${deploy.webinf}/etc">
+      <fileset dir="etc" excludes="bundles/** web.xml"/>
     </copy>
-    <mkdir  dir="${deploy.home}/src"/>
-    <copy todir="${deploy.home}/src">
-      <fileset dir="source"/>
+    <copy todir="${deploy.classes}/bundles">
+        <fileset dir="etc/bundles"/>
     </copy>
+    <copy todir="${deploy.webinf}" file="etc/web.xml"/>
 
-    <mkdir  dir="${deploy.home}/WEB-INF"/>
-    <copy  file="etc/web.xml"          tofile="${deploy.home}/WEB-INF/web.xml"/>
-    <mkdir  dir="${deploy.classes}"/>
-    <mkdir  dir="${deploy.home}/WEB-INF/lib"/>
+    <copy todir="${deploy.webinf}/templates">
+      <fileset dir="templates"/>
+    </copy>
+    
+    <copy todir="${deploy.webinf}" file="source/default.properties" />
+    
+    <copy todir="${deploy.classes}/bundles">
+      <fileset dir="bundles"/>
+    </copy>
+    
     <copy todir="${deploy.home}/WEB-INF/lib">
-      <fileset dir="lib">
-        <exclude name="ant.jar"/>
-        <exclude name="xerces.jar"/>
-      </fileset>
+      <fileset dir="lib" />
     </copy>
-    <mkdir  dir="${javadoc.home}"/>
-    <mkdir  dir="${deploy.home}/log"/>
-
   </target>
 
-
-
-<!-- The "clean" target removes the deployment home directory structure,
-     so that the next time the "compile" target is requested, it will need
-     to compile everything from scratch.
--->
-
-
   <target name="clean">
     <delete dir="${deploy.classes}"/>
-       <mkdir dir="${deploy.classes}"/>
+    <mkdir dir="${deploy.classes}"/>
   </target>
 
-
-
-<!-- The "mrproper" target removes the entire deploy dir - including all
-       built pages and images.
--->
-
   <target name="mrproper">
     <delete dir="${deploy.home}"/>
   </target>
-
-
-
-<!-- The "compile" target is used to compile (or recompile) the Java classes
-     that make up this web application.  The recommended source code directory
-     structure makes this very easy because the <javac> task automatically
-     works its way down a source code hierarchy and compiles any class that
-     has not yet been compiled, or where the source file is newer than the
-     class file.
-
-     Feel free to adjust the compilation option parameters (debug,
-     optimize, and deprecation) to suit your requirements.  It is also
-     possible to base them on properties, so that you can adjust this
-     behavior at runtime.
-
-     The "compile" task depends on the "prepare" task, so the deployment
-     home directory structure will be created if needed the first time.
--->
+  
+  <!-- drop out if $TOMCAT_HOME is not set>-->
+  <target name="testtomcat" unless="tomcat.present">
+    <fail message="the $$TOMCAT_HOME environment variable is not set or is set to the wrong path. Please set it first. giving up!"/>
+  </target>
 
   <target name="compile" depends="prepare">
-       <antcall target="clean"/>
-    <javac srcdir="source" destdir="${deploy.classes}"
-           debug="on" optimize="off" deprecation="on">
+    <!-- check to see if $TOMCAT_HOME was set to something useful.. -->
+    <available file="${tomcat.home}/conf" property="tomcat.present"/>
+    <antcall target="testtomcat"/>
+    <dependset>
+      <srcfileset dir="source" includes="**/*.java"/>
+      <srcfileset dir="lib" includes="*.jar"/>         
+      <targetfileset dir="${deploy.classes}" includes="**/*.class"/>
+       <!-- ML: now why can't this be added?
+      <srcfileset dir="etc/extrasource" includes="**/*.java"/> -->   
+    </dependset>
+    <javac destdir="${deploy.classes}"
+           debug="${compile.debug}" optimize="${compile.optimize}" deprecation="on">
+      <src path="source"/>
+      <src path="etc/extrasource"/>
       <classpath refid="project.class.path"/>
-       </javac>
-    <copy   todir="${deploy.classes}">
-      <fileset dir="source" includes="**/*.properties"/>
-    </copy>
-    <copy   todir="${deploy.home}">
-      <fileset dir="source" includes="**/content-types.properties"/>
-      <fileset dir="source" includes="**/server.xml"/>
-    </copy>
-    <copy   todir="${deploy.classes}/bundles">
-      <fileset dir="bundles" includes="**/*.properties"/>
-    </copy>
-  <!-- I really don't think this is needed by default. maybe make it a targe?
-    -mh -->
-       <!--<exec executable="./perms.sh"/>-->
+    </javac>
   </target>
 
-
-<!-- The "javadoc" target is used to create the Javadoc API documentation
-     for the Java classes in this web application.  It is assumed that
-     this documentation is included in the deployed application, so the
-     example below generates the Javadoc HTML files in a subdirectory under
-     the deployment home directory.  Feel free to customize the options for
-     the JavaDoc task, after consulting the Ant documentation.
--->
-
   <target name="javadoc" depends="prepare">
     <javadoc packagenames="mir.*, mircoders.*"
-            sourcefiles="source/${app.name}.java,source/Open${app.name}.java"
+            sourcefiles="source/Mir.java,source/OpenMir.java"
             sourcepath="source"
              destdir="${javadoc.home}">
          <classpath refid="project.class.path"/>
        </javadoc>
   </target>
 
-
-<!-- The "all" target rebuilds everything by executing the "clean"
-     target first, which forces the "compile" target to compile all
-     source code instead of just the files that have been changed.
--->
-
   <target name="all" depends="clean,prepare,compile,javadoc"/>
 
-
-<!-- The "dist" target builds the distribution Web ARchive (WAR) file
-     for this application, suitable for distribution to sites that wish
-     to install your application.  It also creates a JAR file containing
-     the source code for this application, if you wish to distribute
-     that separately.
--->
-  <target name="dist" depends="prepare,compile">
-    <jar jarfile="${dist.home}/mirbase.jar"
-        includes="mir/**"
-        basedir="${deploy.classes}"/>
-    <jar jarfile="${dist.home}/${dist.src}"
-         basedir="./source"/>
-    <jar jarfile="${dist.home}/${dist.war}"
-         basedir="${deploy.home}"
-         excludes="${dist.war}"/>
-  </target>
-
 </project>