<?xml version="1.0"?>
<!--
   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.
-->
<project name="JMeter" default="package" basedir=".">

  <!-- Where the Sources live -->
  <property name="src.addons" value="addons"/>

  <!-- Temporary build directories: where the .class live -->
  <property name="build.addons" value="build/addons"/>

  <!-- Where the build result .jar will be placed -->
  <property name="jar.dest" value="lib/ext"/>
  <property name="jar.file" value="ApacheJMeter_addons.jar"/>

  <!-- Compilation parameters -->
  <property name="optimize" value="on"/>
  <property name="deprecation" value="off"/>
  <property name="target.java.version" value="1.7"/>
  <property name="src.java.version" value="1.7"/>
  <property name="encoding" value="UTF-8"/>

  <!-- Directory where the 3rd party libraries will live -->
  <property name="lib.dir" value="lib"/>

  <!-- Build classpath -->
  <path id="classpath">
    <fileset dir="${lib.dir}" includes="*.jar"/>
    <fileset dir="${jar.dest}" excludes="${jar.file}" includes="*.jar"/>
  </path>

  <target name="compile" description="Compile JMeter addons classes.">
    <mkdir dir="${build.addons}"/>
    <javac srcdir="${src.addons}" destdir="${build.addons}" optimize="${optimize}" 
        includeantruntime="false"
        source="${target.java.version}"
        debug="on" target="${target.java.version}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath refid="classpath"/>
    </javac>
  </target>

   <target name="package" depends="compile">
    <mkdir dir="${jar.dest}"/>
    <jar jarfile="${jar.dest}/${jar.file}" basedir="${build.addons}">
        <fileset dir="${src.addons}" includes="**/*.properties"/>
    </jar>
  </target>

  <target name="clean" description="Clean up to force a build from source.">
    <delete file="${jar.dest}/${jar.file}"/>
    <delete dir="${build.addons}"/>
  </target>

  <target name="rebuild" depends="clean,package" description="Re-build from source."/>
  
</project>
