<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<!-- ====================================================================== -->
<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above.        -->
<!-- ====================================================================== -->

<!-- ====================================================================== -->
<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== -->
<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Any modifications will be overwritten.                                 -->
<!--                                                                        -->
<!-- Generated by Maven Ant Plugin on 3/8/13 12:53 PM                       -->
<!-- See: http://maven.apache.org/plugins/maven-ant-plugin/                 -->
<!--                                                                        -->
<!-- ====================================================================== -->

<project name="commons-fileupload-from-maven" default="package" basedir=".">

  <!-- ====================================================================== -->
  <!-- Build environment properties                                           -->
  <!-- ====================================================================== -->

  <property file="${user.home}/.m2/maven.properties"/>
  <property file="build.properties"/>

  <property name="maven.build.finalName" value="commons-fileupload-1.3-SNAPSHOT"/>
  <property name="maven.build.dir" value="target"/>
  <property name="maven.build.outputDir" value="${maven.build.dir}/classes"/>
  <property name="maven.build.srcDir.0" value="src/main/java"/>
  <property name="maven.build.resourceDir.0" value="src/main/resources"/>
  <property name="maven.build.resourceDir.1" value="."/>
  <property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes"/>
  <property name="maven.build.testDir.0" value="src/test/java"/>
  <property name="maven.build.testResourceDir.0" value="src/test/resources"/>
  <property name="maven.build.testResourceDir.1" value="."/>
  <property name="maven.test.reports" value="${maven.build.dir}/test-reports"/>
  <property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site"/>

  <property name="maven.repo.local" value="${user.home}/.m2/repository"/>
  <property name="maven.settings.offline" value="false"/>
  <property name="maven.settings.interactiveMode" value="true"/>

  <!-- ====================================================================== -->
  <!-- Defining classpaths                                                    -->
  <!-- ====================================================================== -->

  <path id="build.classpath">
    <pathelement location="${maven.repo.local}/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar"/>
    <pathelement location="${maven.repo.local}/portlet-api/portlet-api/1.0/portlet-api-1.0.jar"/>
    <pathelement location="${maven.repo.local}/commons-io/commons-io/2.2/commons-io-2.2.jar"/>
  </path>
  <path id="build.test.classpath">
    <pathelement location="${maven.repo.local}/junit/junit/4.11/junit-4.11.jar"/>
    <pathelement location="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"/>
    <pathelement location="${maven.repo.local}/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar"/>
    <pathelement location="${maven.repo.local}/portlet-api/portlet-api/1.0/portlet-api-1.0.jar"/>
    <pathelement location="${maven.repo.local}/commons-io/commons-io/2.2/commons-io-2.2.jar"/>
  </path>

  <!-- ====================================================================== -->
  <!-- Cleaning up target                                                     -->
  <!-- ====================================================================== -->

  <target name="clean" description="Clean the output directory">
    <delete dir="${maven.build.dir}"/>
  </target>

  <!-- ====================================================================== -->
  <!-- Compilation target                                                     -->
  <!-- ====================================================================== -->

  <target name="compile" depends="get-deps" description="Compile the code">
    <mkdir dir="${maven.build.outputDir}"/>
    <javac destdir="${maven.build.outputDir}" 
           encoding="iso-8859-1" 
           nowarn="false" 
           debug="true" 
           optimize="false" 
           deprecation="true" 
           target="1.5" 
           verbose="false" 
           fork="false" 
           source="1.5">
      <src>
        <pathelement location="${maven.build.srcDir.0}"/>
      </src>
      <classpath refid="build.classpath"/>
    </javac>
    <mkdir dir="${maven.build.outputDir}/META-INF"/>
    <copy todir="${maven.build.outputDir}/META-INF">
      <fileset dir="${maven.build.resourceDir.1}">
        <include name="NOTICE.txt"/>
        <include name="LICENSE.txt"/>
      </fileset>
    </copy>
  </target>

  <!-- ====================================================================== -->
  <!-- Test-compilation target                                                -->
  <!-- ====================================================================== -->

  <target name="compile-tests" 
          depends="compile" 
          description="Compile the test code" 
          unless="maven.test.skip">
    <mkdir dir="${maven.build.testOutputDir}"/>
    <javac destdir="${maven.build.testOutputDir}" 
           encoding="iso-8859-1" 
           nowarn="false" 
           debug="true" 
           optimize="false" 
           deprecation="true" 
           target="1.5" 
           verbose="false" 
           fork="false" 
           source="1.5">
      <src>
        <pathelement location="${maven.build.testDir.0}"/>
      </src>
      <classpath>
        <path refid="build.test.classpath"/>
        <pathelement location="${maven.build.outputDir}"/>
      </classpath>
    </javac>
    <mkdir dir="${maven.build.testOutputDir}/META-INF"/>
    <copy todir="${maven.build.testOutputDir}/META-INF">
      <fileset dir="${maven.build.testResourceDir.1}">
        <include name="NOTICE.txt"/>
        <include name="LICENSE.txt"/>
      </fileset>
    </copy>
  </target>

  <!-- ====================================================================== -->
  <!-- Run all tests                                                          -->
  <!-- ====================================================================== -->

  <target name="test" 
          depends="compile-tests, junit-missing" 
          unless="junit.skipped" 
          description="Run the test cases">
    <mkdir dir="${maven.test.reports}"/>
    <junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
      <sysproperty key="basedir" value="."/>
      <formatter type="xml"/>
      <formatter type="plain" usefile="false"/>
      <classpath>
        <path refid="build.test.classpath"/>
        <pathelement location="${maven.build.outputDir}"/>
        <pathelement location="${maven.build.testOutputDir}"/>
      </classpath>
      <batchtest todir="${maven.test.reports}" unless="test">
        <fileset dir="${maven.build.testDir.0}">
          <include name="**/Test*.java"/>
          <include name="**/*Test.java"/>
          <include name="**/*TestCase.java"/>
          <exclude name="**/*Abstract*Test.java"/>
        </fileset>
      </batchtest>
      <batchtest todir="${maven.test.reports}" if="test">
        <fileset dir="${maven.build.testDir.0}">
          <include name="**/${test}.java"/>
          <exclude name="**/*Abstract*Test.java"/>
        </fileset>
      </batchtest>
    </junit>
  </target>

  <target name="test-junit-present">
    <available classname="junit.framework.Test" property="junit.present"/>
  </target>

  <target name="test-junit-status" 
          depends="test-junit-present">
    <condition property="junit.missing">
      <and>
        <isfalse value="${junit.present}"/>
        <isfalse value="${maven.test.skip}"/>
      </and>
    </condition>
    <condition property="junit.skipped">
      <or>
        <isfalse value="${junit.present}"/>
        <istrue value="${maven.test.skip}"/>
      </or>
    </condition>
  </target>

  <target name="junit-missing" 
          depends="test-junit-status" 
          if="junit.missing">
    <echo>=================================== WARNING ===================================</echo>
    <echo> JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.</echo>
    <echo>===============================================================================</echo>
  </target>

  <!-- ====================================================================== -->
  <!-- Javadoc target                                                         -->
  <!-- ====================================================================== -->

  <target name="javadoc" description="Generates the Javadoc of the application">
    <javadoc sourcepath="${maven.build.srcDir.0}" 
             packagenames="*" 
             destdir="${maven.reporting.outputDirectory}/apidocs" 
             access="protected" 
             old="false" 
             verbose="false" 
             encoding="iso-8859-1" 
             version="true" 
             use="true" 
             author="true" 
             splitindex="false" 
             nodeprecated="false" 
             nodeprecatedlist="false" 
             notree="false" 
             noindex="false" 
             nohelp="false" 
             nonavbar="false" 
             serialwarn="false" 
             charset="ISO-8859-1" 
             docencoding="iso-8859-1" 
             source="1.5" 
             linksource="true" 
             breakiterator="false">
      <link href="http://download.oracle.com/javase/6/docs/api/"/>
      <link href="http://download.oracle.com/javaee/6/api/"/>
    </javadoc>
  </target>

  <!-- ====================================================================== -->
  <!-- Package target                                                         -->
  <!-- ====================================================================== -->

  <target name="package" depends="compile,test" description="Package the application">
    <jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar" 
         compress="true" 
         index="false" 
         manifest="${commons.manifestfile}" 
         basedir="${maven.build.outputDir}" 
         excludes="**/package.html">
      <manifest>
        <attribute name="Main-Class"/>
      </manifest>
    </jar>
  </target>

  <!-- ====================================================================== -->
  <!-- A dummy target for the package named after the type it creates         -->
  <!-- ====================================================================== -->

  <target name="jar" depends="package" description="Builds the jar for the application"/>

  <!-- ====================================================================== -->
  <!-- Download dependencies target                                           -->
  <!-- ====================================================================== -->

  <target name="test-offline">
    <condition property="maven.mode.offline">
      <equals arg1="${maven.settings.offline}" arg2="true"/>
    </condition>
  </target>

  <target name="get-deps" 
          depends="test-offline" 
          description="Download all dependencies" 
          unless="maven.mode.offline">
    <mkdir dir="${maven.repo.local}"/>
    <mkdir dir="${maven.repo.local}/junit/junit/4.11"/>
    <get src="http://repository.apache.org/snapshots/junit/junit/4.11/junit-4.11.jar" 
         dest="${maven.repo.local}/junit/junit/4.11/junit-4.11.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <get src="http://repo.maven.apache.org/maven2/junit/junit/4.11/junit-4.11.jar" 
         dest="${maven.repo.local}/junit/junit/4.11/junit-4.11.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <mkdir dir="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3"/>
    <get src="http://repository.apache.org/snapshots/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" 
         dest="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <get src="http://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" 
         dest="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <mkdir dir="${maven.repo.local}/javax/servlet/servlet-api/2.4"/>
    <get src="http://repository.apache.org/snapshots/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" 
         dest="${maven.repo.local}/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <get src="http://repo.maven.apache.org/maven2/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" 
         dest="${maven.repo.local}/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <mkdir dir="${maven.repo.local}/portlet-api/portlet-api/1.0"/>
    <get src="http://repository.apache.org/snapshots/portlet-api/portlet-api/1.0/portlet-api-1.0.jar" 
         dest="${maven.repo.local}/portlet-api/portlet-api/1.0/portlet-api-1.0.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <get src="http://repo.maven.apache.org/maven2/portlet-api/portlet-api/1.0/portlet-api-1.0.jar" 
         dest="${maven.repo.local}/portlet-api/portlet-api/1.0/portlet-api-1.0.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <mkdir dir="${maven.repo.local}/commons-io/commons-io/2.2"/>
    <get src="http://repository.apache.org/snapshots/commons-io/commons-io/2.2/commons-io-2.2.jar" 
         dest="${maven.repo.local}/commons-io/commons-io/2.2/commons-io-2.2.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
    <get src="http://repo.maven.apache.org/maven2/commons-io/commons-io/2.2/commons-io-2.2.jar" 
         dest="${maven.repo.local}/commons-io/commons-io/2.2/commons-io-2.2.jar" 
         usetimestamp="false" 
         ignoreerrors="true"/>
  </target>

</project>
