<?xml version="1.0" encoding="UTF-8"?>

<project default="jar" name="commons-fileupload" basedir=".">
  
  <property name="defaulttargetdir" value="target"></property> 
  <property name="classesdir" value="target/classes"></property>
  <property name="testclassesdir" value="target/test-classes"></property>
  <property name="testreportdir" value="target/test-reports"></property>
  <property name="distdir" value="dist"></property>
  <property name="javadocdir" value="target/docs/apidocs"></property>
  <property name="final.name" value="commons-fileupload-1.0-dev"></property>

  <!-- The test runner to execute -->
  <property name="test.runner"             value="junit.textui.TestRunner"/>

  <!-- Should all tests fail if one does? -->
  <property name="test.failonerror"        value="true"/>


  
  <target name="init" description="o Initializes some properties">

    <condition property="noget">
      <equals arg2="only" arg1="${build.sysclasspath}"></equals>
    </condition>
  </target>

  <target name="compile" description="o Compile the code" depends="get-deps">
    
    <mkdir dir="${classesdir}"></mkdir>

    <javac destdir="${classesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
      <src>
        <pathelement location="src/java"></pathelement>
      </src>
      <classpath>
        <fileset dir="lib">
          <include name="*.jar"></include>
        </fileset>
      </classpath>
    </javac>
    
    

  </target>
    
  <target name="jar" description="o Create the jar" depends="compile,test">

    <jar jarfile="target/${final.name}.jar" excludes="**/package.html" basedir="${classesdir}"></jar>

  </target>
  
  <target name="clean" description="o Clean up the generated directories">
    <delete dir="${defaulttargetdir}"></delete>
    <delete dir="${distdir}"></delete>
  </target>

  <target name="dist" description="o Create a distribution" depends="jar, javadoc">
    <mkdir dir="dist"></mkdir>
    <copy todir="dist">
      <fileset dir="${defaulttargetdir}"></fileset>
    </copy>
  </target>
 
  <target name="test" description="o Run the test cases" depends="compile-tests">
    <mkdir dir="${testreportdir}"></mkdir>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
          <arg value="org.apache.commons.fileupload.TestAll"/>
      <classpath>
        <fileset dir="lib">
          <include name="*.jar"></include>
        </fileset>
        <pathelement location="target/${final.name}.jar"></pathelement>
        <pathelement path="${testclassesdir}"></pathelement>
        <pathelement path="${classesdir}"></pathelement>
      </classpath>
    </java>
  </target>

  <target name="compile-tests" depends="compile">
    <mkdir dir="${testclassesdir}"></mkdir>
    <javac destdir="${testclassesdir}" deprecation="true" debug="true" optimize="false" excludes="**/package.html">
      <src>
        <pathelement location="src/test"></pathelement>
      </src>
      <classpath>
        <fileset dir="lib">
          <include name="*.jar"></include>
        </fileset>
        <pathelement location="target/${final.name}.jar"></pathelement>
        <pathelement path="${classesdir}"></pathelement>
      </classpath>
    </javac>

    <copy todir="${testclassesdir}">
      <fileset dir="src/test">
      </fileset>
    </copy>
    
  </target>

  <target name="javadoc" description="o Generate javadoc" depends="jar">
 
    <mkdir dir="${javadocdir}"></mkdir>
    
    <tstamp>
      <format pattern="2002-yyyy" property="year"></format>
    </tstamp>
 
    <property name="copyright" value="Copyright &amp;copy;  Apache Software Foundation. All Rights Reserved."></property>
 
    <property name="title" value="FileUpload 1.0-dev API"></property>
 
    <javadoc use="true" private="true" destdir="${javadocdir}" author="true" version="true" sourcepath="src/java" packagenames="org.apache.commons.fileupload.*">
      <classpath>
        <fileset dir="lib">
          <include name="*.jar"></include>
        </fileset>
        <pathelement location="target/${final.name}.jar"></pathelement>
      </classpath>
    </javadoc>
 
  </target>

  <target name="get-deps" unless="noget" depends="init">
  
    <mkdir dir="lib"></mkdir>
    
    <get dest="lib/commons-beanutils-1.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-beanutils/jars/commons-beanutils-1.3.jar"></get>
    <get dest="lib/servletapi-2.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/servletapi/jars/servletapi-2.3.jar"></get>
    <get dest="lib/junit-3.8.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/junit/jars/junit-3.8.1.jar"></get>
  
  </target>

  
  <target name="install-maven">

    <get dest="${user.home}/maven-install-latest.jar" usetimestamp="true" src="${maven.repo.remote}/maven/maven-install-latest.jar"></get>
    
    <unjar dest="${maven.home}" src="${user.home}/maven-install-latest.jar"></unjar>
    
  </target>

</project>
    
