<!--
========================================================================
 Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
 $Id: build.xml,v 3.45 2001/10/10 03:25:24 gregwilkins Exp $
========================================================================
 This build file specifies how to build Jetty3 using ANT, the
 build tool from the Apache/Jakarta project.
  <http://jakarta.apache.org/ant/index.html>
========================================================================

The default target is "webapp", which will build and package everything
needed to run Jetty's demo application.

Other targets:

  clean         - Remove all generated files.
  prepare       - Set up build directory structure.
  servlet.jar   - Buils the servlet library.
  jasper.jar    - Builds the Jasper JSP engine library.
  jetty.jar     - Builds the Jetty library.
  jars          - Builds the above three libraries.
  dist          - Constructs a distribution file with all the source.
  webapp        - Builds the demo web application.
  javadoc       - Builds the API documentation.
  demo          - Runs the demo web application.
  run           - Runs the jetty.xml configuration.
  test          - Runs the Jetty test harnesses.
  all           - Almost everything.
  mini.http.jar - Build a minimal HTTP server jar.

-->
<project name="Jetty3 HTTP Server" default="webapp" basedir=".">
  <property environment="env"/>
  <property name="src"            value="${basedir}/src" />
  <property name="etc"            value="${basedir}/etc" />
  <property name="lib"            value="${basedir}/lib"/>
  <property name="classes"        value="${basedir}/classes"/>
  <property name="javadoc"        value="${basedir}/javadoc"/>
  <property name="logs"           value="${basedir}/logs"/>
  <property name="webapps"        value="${basedir}/webapps"/>
  <property name="webappsrc"      value="${basedir}/webappsrc"/>
  <property name="build.compiler" value="jikes"/>
  <!-- property name="build.compiler" value="classic"/ -->
  <!-- property name="build.compiler" value="modern" -->

  <property name="jetty.home"             value="${basedir}" />
  <property name="jetty.webapp"           value="${webapps}/jetty"/>
  <property name="jetty.war"              value="${webapps}/jetty.war"/>
  <property name="jetty.webapp.webinf"    value="${jetty.webapp}/WEB-INF"/>
  <property name="jetty.webapp.classes"   value="${jetty.webapp.webinf}/classes"/>

  <property name="jetty.jar"      value="${lib}/org.mortbay.jetty.jar"/>
  <property name="mini.http.jar"  value="${basedir}/org.mortbay.http.jar"/>
  <property name="servlet.jar"    value="${lib}/javax.servlet.jar"/>
  <property name="jasper.jar"     value="${lib}/org.apache.jasper.jar"/>
  <property name="jaxp.jar"       value="${lib}/javax.xml.jaxp.jar"/>
  <property name="xml.jar"        value="${lib}/org.apache.crimson.jar"/>
  <property name="jsse.jar"       value="${lib}/com.sun.net.ssl.jar"/>

  <property name="classpath"      value="${jetty.jar};${jasper.jar};${servlet.jar};${jsse.jar};${jaxp.jar};${xml.jar}"/>


  <target name="prepare">
    <mkdir dir="${jetty.webapp.classes}"/>
    <mkdir dir="${javadoc}" />
    <mkdir dir="${classes}" />
    <mkdir dir="${logs}" />
    <mkdir dir="${etc}/dtd" />
    <copy file="${src}/org/mortbay/xml/configure.dtd" tofile="${etc}/dtd/configure.dtd" />
    <copy file="${src}/org/mortbay/xml/configure_1_0.dtd" tofile="${etc}/dtd/configure_1_0.dtd" />
    <copy file="${src}/org/mortbay/xml/configure_1_1.dtd" tofile="${etc}/dtd/configure_1_1.dtd" />
    <copy file="${src}/org/mortbay/jetty/servlet/web.dtd" tofile="${etc}/dtd/web.dtd" />
  </target>


  <target name="tidy">
    <delete dir="${classes}" quiet="true"/>
    <delete file="${mini.http.jar}" quiet="true"/>
  </target>


  <target name="clean" depends="tidy">
    <delete dir="${jetty.webapp.classes}" quiet="true"/>
    <delete dir="${javadoc}" quiet="true"/>
    <delete dir="${etc}/dtd"  quiet="true"/>
    <delete file="${jetty.jar}" quiet="true"/>
    <delete file="${servlet.jar}" quiet="true"/>
    <delete file="${jasper.jar}" quiet="true"/>
  </target>


  <target name="classes" depends="prepare">
    <copy todir="${classes}">
      <fileset dir="${src}">
        <include name="**/defaultManifest.mf" />
        <include name="**/*.properties" />
        <include name="**/*.dtd" />
      </fileset>
    </copy>
    <javac srcdir="${src}"
           destdir="${classes}"
           classpath="${classpath}"
           debug="on"
           optimize="off"
           deprecation="off"
           >
       <include name="**/*.java"/>
       <exclude name="**/nbio/*.java"/>
       <exclude name="com/**/*.java"/>
    </javac>
  </target>

  <target name="nbio" depends="classes">
    <javac srcdir="${src}"
           destdir="${classes}"
           classpath="${classpath}"
           debug="on"
           optimize="off"
           deprecation="off"
           >
       <include name="**/NBIO/*.java"/>
    </javac>
  </target>

  <target name="servlet.jar" depends="classes">
    <jar jarfile="${servlet.jar}" basedir="${classes}" >
       <include name="javax/servlet/**" />
    </jar>
  </target>

  <target name="jetty.jar" depends="classes,servlet.jar">
    <delete file="${mini.http.jar}" quiet="true"/>
    <jar jarfile="${jetty.jar}" basedir="${classes}" manifest="${src}/org/mortbay/MANIFEST.MF" >
       <include name="org/mortbay/**"  />
       <exclude name="org/mortbay/**/TestHarness*.class" />
       <exclude name="org/mortbay/util/DataClass/*" />
       <exclude name="org/mortbay/util/TestConfiguration.class" />
       <exclude name="org/mortbay/util/PropertyTreeTest.class" />
       <exclude name="org/mortbay/util/DictionaryConverterTest*.class" />
       <exclude name="org/mortbay/http/**/Test*.class" />
       <exclude name="org/mortbay/http/Http10TestClient.class" />
       <exclude name="org/mortbay/html/Test*.class" />
       <exclude name="org/mortbay/jetty/**/Test*.class" />
    </jar>
  </target>

  <target name="mini.http.jar" depends="classes,servlet.jar">
    <delete file="${jetty.jar}" quiet="true"/>
    <delete file="${servlet.jar}" quiet="true"/>
    <delete file="${jasper.jar}" quiet="true"/>
    <jar jarfile="${mini.http.jar}" basedir="${classes}" manifest="${src}/org/mortbay/MANIFEST.MF" compress="true">
       <include name="org/mortbay/util/**" />
       <include name="org/mortbay/http/**" />
       <include name="javax/servlet/http/Cookie.class" />
       <include name="javax/servlet/http/LocalStrings*.properties" />
       <exclude name="org/mortbay/**/*Test*" />
       <exclude name="org/mortbay/util/DataClass/*" />
       <exclude name="org/mortbay/http/JsseListener.class" />
       <exclude name="org/mortbay/http/SunJsseListener.class" />
       <exclude name="org/mortbay/util/Converter" />
       <exclude name="org/mortbay/util/KeyPairTool.class" />
    </jar>
  </target>


  <target name="jasper.jar" depends="classes">
    <jar jarfile="${jasper.jar}"
         basedir="${classes}"  >
       <include name="org/apache/jasper/**"  />
    </jar>
  </target>


  <target name="jars" depends="servlet.jar,jetty.jar,jasper.jar">
  </target>

  <target name="webapp" depends="jars">
    <copy todir="${jetty.webapp.classes}">
      <fileset dir="${webappsrc}">
        <include name="org/mortbay/webapps/jetty/defaultManifest.mf" />
        <include name="org/mortbay/webapps/jetty/*.properties" />
      </fileset>
    </copy>
    <copy file="${jetty.webapp.classes}/org/mortbay/webapps/jetty/JettyIndex.properties" 
        tofile="${jetty.webapp.classes}/org/mortbay/webapps/jetty/JettyIndex_en.properties" />
    <javac srcdir="${webappsrc}"
           destdir="${jetty.webapp.classes}"
           classpath="${jetty.jar};${servlet.jar}"
           debug="on"
           optimize="off"
           deprecation="off"
           >
      <include name="org/mortbay/webapps/jetty/*.java" />
    </javac>
    <copy file="LICENSE.html" tofile="${jetty.webapp}/LICENSE.html" />
    <copy file="VERSION.TXT" tofile="${jetty.webapp}/versions.txt" />
    <!-- jar jarfile="${jetty.war}" basedir="${jetty.webapp}"/ -->
  </target>


  <target name="javadoc" depends="jars">
    <mkdir dir="${javadoc}"/>
    <javadoc packagenames="org.mortbay.*,javax.servlet.*,org.apache.jasper.*"
             sourcepath="${src}"
	     classpath="${classpath}"
             destdir="${javadoc}"
             author="true"
             version="true"
             public="true"
             windowtitle="${ant.project.name} API"
             doctitle="${ant.project.name}"
             bottom="Copyright &#169; 2000 Mortbay Consulting Pty. Ltd. All Rights Reserved.">
    </javadoc>
  </target>

  <target name="testUtil" depends="jars">
    <property name="classpath" value="${jetty.jar};${servlet.jar}" />
    <java classname="org.mortbay.util.TestHarness"
          classpath="${classes}"
          fork="yes"
          failonerror="yes"
          />
  </target>

  <target name="testXML" depends="jars">
    <property name="classpath" value="${jetty.jar};${servlet.jar}" />
    <java classname="org.mortbay.xml.TestHarness"
          classpath="${classes};${xml.jar};${jaxp.jar}"
          fork="yes"
          failonerror="yes"
          />
  </target>

  <target name="testHTTP" depends="jars">
    <property name="classpath" value="${jetty.jar};${servlet.jar}" />
    <java classname="org.mortbay.http.TestHarness"
          classpath="${classes};${xml.jar};${jaxp.jar}"
          fork="yes"
          failonerror="yes"
          />
  </target>

  <target name="test" depends="testUtil,testXML,testHTTP" />

  <target name="all" depends="prepare,jars,webapp,javadoc,test"/>

  <target name="demo" >
    <java classname="org.mortbay.jetty.Server"
          classpath="${env.CLASSPATH}:${classpath}"
          dir="${jetty.home}"
          fork="yes"
          failonerror="yes"
          >
       <jvmarg line="-Djetty.home=${jetty.home} -Djetty.log=${jetty.home}/logs" />
       <arg line="${etc}/admin.xml ${etc}/demo.xml" />
    </java>
  </target>

  <target name="run" >
    <java classname="org.mortbay.jetty.Server"
          classpath="${env.CLASSPATH}:${classpath}"
          dir="${jetty.home}"
          fork="yes"
          failonerror="yes"
          >
       <jvmarg line="-Djetty.home=${jetty.home} -Djetty.log=${jetty.home}/logs" />
       <arg line="${etc}/admin.xml ${etc}/jetty.xml" />
    </java>
  </target>

</project>







