<?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="install" basedir="."
    xmlns:rat="antlib:org.apache.rat.anttasks"
    xmlns="antlib:org.apache.tools.ant">
  <description>

  N.B. To build JMeter from a release you need both the binary and source archives,
  and these must be unpacked into the same directory structure.

  To download additional jars needed for building the code and documentation:

      ant download_jars


    To build JMeter from source:
      ant [install]

    To rebuild:
      ant clean install

    To update documentation
      ant docs-site [-Ddocs.force=true]
      ant docs-printable [-Ddocs.force=true]
    To build API documentation (Javadoc)
      ant docs-api
    To build all the docs
      ant docs-all [-Ddocs.force=true]

    To build all and package up the files for distribution
      ant distribution -Djmeter.version=vvvv [-Dsvn.revision=nnnnn]

    Add -Ddisable-svnCheck=true to disable svn check, if you build from src archive or offline
    Add -Ddisable-check-versions=true to disable matching current svn revision and JMeterVersion.java,
      if you want build your own custom JMeter package.

    To create a nightly build (separate bin/src/lib jars):
      ant nightly [-Dsvn.revision=nnnnn]

    To create tar and tgz of the web-site documentation (docs and api)
      ant site [ -Djmeter.version=vvvv ]


    For more info:
      ant -projecthelp

    To diagnose usage of deprecated APIs:
      ant -Ddeprecation=on clean compile
  </description>

  <!--

  Note
  ====
  As with most other Apache projects, Gump (http://gump.apache.org/) is used to
  perform automated builds and tests on JMeter.

  Gump uses its project/jmeter.xml file to determine which target to use.
  The current setting is: <ant target="dist">

  Any changes to the dependency list for dist may affect Gump.

  Now the dist target depends on "assume-libs-present", so if additional libraries are added to that,
  the Gump project file for JMeter must also be updated.

  Jars that are not required by the dist target do not need to be added to the Gump project file.

  -->

  <!-- Are we running under Gump? -->
  <property name="gump.run" value="false"/>

  <!-- The version of this file -->
  <property name="version.build" value="$Revision$"/>

  <script language="javascript">
    project.setProperty('EPOCHSECONDS', new Date().getTime());
  </script>

  <property file="build-local.properties"/> <!-- allow local overrides -->

  <!-- Remove .gitignore from the Ant's default excludes -->
  <!-- to allow to have the .gitignore in the source archive -->
  <defaultexcludes remove="**/.gitignore"/>

   <!-- Findbugs task and target -->
   <!--
   Findbugs is licensed under the Lesser GNU Public License
   HomePage: http://www.cs.umd.edu/~pugh/java/bugs/

   To use the findbugs target, download and install the findbugs binary distribution
   Set the value of findbugs.homedir according to where you installed findbugs, for example:
   ant findbugs -Dfindbugs.homedir=/etc/findbugs -Dfindbugs.level=medium
  [The defaults are /findbugs and medium]
   -->
  <property name="findbugs.homedir" value="/findbugs" />
  <property name="findbugs.level" value="medium" />
  <property name="findbugs.xsldir" value="${findbugs.homedir}/src/xsl" />
  <property name="findbugs.xslname" value="fancy" />
  <property name="findbugs.outName" value="reports/jmeter-fb" />

  <target name="findbugs" description="Run the stand-alone Findbugs detector">
    <echoproperties prefix="findbugs"/>
    <mkdir dir="reports"/>
    <taskdef name="findbugs"
        classpath="${findbugs.homedir}/lib/findbugs-ant.jar"
        classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>
    <findbugs home="${findbugs.homedir}"
              output="xml:withMessages"
              reportlevel="${findbugs.level}"
              excludeFilter="fb-excludes.xml"
              jvmargs="-Xms512m -Xmx512m"
              outputFile="${findbugs.outName}.xml" >
      <sourcePath path="${src.core}" />
      <sourcePath path="${src.http}" />
      <sourcePath path="${src.ftp}" />
      <sourcePath path="${src.java}" />
      <sourcePath path="${src.junit}" />
      <sourcePath path="${src.jdbc}" />
      <sourcePath path="${src.ldap}" />
      <sourcePath path="${src.mail}" />
      <sourcePath path="${src.components}" />
      <sourcePath path="${src.functions}" />
      <class location="${lib.dir}/jorphan.jar" />
      <class location="${lib.dir}/ApacheJMeter_slf4j_logkit.jar"/>
      <class location="${dest.jar}/ApacheJMeter_components.jar"/>
      <class location="${dest.jar}/ApacheJMeter_components.jar"/>
      <class location="${dest.jar}/ApacheJMeter_core.jar"/>
      <class location="${dest.jar}/ApacheJMeter_ftp.jar"/>
      <class location="${dest.jar}/ApacheJMeter_functions.jar"/>
      <class location="${dest.jar}/ApacheJMeter_http.jar"/>
      <class location="${dest.jar}/ApacheJMeter_java.jar"/>
      <class location="${dest.jar}/ApacheJMeter_jdbc.jar"/>
      <class location="${dest.jar}/ApacheJMeter_jms.jar"/>
      <class location="${dest.jar}/ApacheJMeter_junit.jar"/>
      <class location="${dest.jar}/ApacheJMeter_ldap.jar"/>
      <class location="${dest.jar}/ApacheJMeter_mail.jar"/>
      <class location="${dest.jar}/ApacheJMeter_monitors.jar"/>
      <class location="${dest.jar}/ApacheJMeter_native.jar"/>
      <class location="${dest.jar}/ApacheJMeter_mongodb.jar"/>
      <class location="${dest.jar}/ApacheJMeter_tcp.jar"/>
      <class location="${dest.jar.jmeter}/ApacheJMeter.jar" />
      <sourcePath path="${src.slf4j_logkit}" />
      <sourcePath path="${src.jorphan}" />
      <sourcePath path="${src.tcp}" />
      <sourcePath path="${src.jms}" />
      <sourcePath path="${src.native}" />
      <sourcePath path="${src.mongodb}" />

      <auxClasspath>
        <fileset dir="${lib.dir}">
          <include name="*.jar"/>
        </fileset>
      </auxClasspath>

      <auxClasspath>
        <fileset dir="${lib.opt}">
          <include name="*.jar"/>
        </fileset>
      </auxClasspath>

      <auxClasspath>
        <fileset dir="${lib.api}">
          <include name="*.jar"/>
        </fileset>
      </auxClasspath>

    </findbugs>
    <antcall target="findbugs-style"/>
    <antcall target="findbugs-xsl"/>
  </target>

  <!-- Convert findbugs XML output to CSV -->
  <target name="findbugs-style">
    <xslt style="fb-csv.xsl"
       force="true"
       in="${findbugs.outName}.xml"
       out="${findbugs.outName}.csv">
    </xslt>
  </target>

  <!-- Convert findbugs XML output to HTML -->
  <target name="findbugs-xsl">
    <xslt style="${findbugs.xsldir}/${findbugs.xslname}.xsl"
       force="true"
       in="${findbugs.outName}.xml"
       out="${findbugs.outName}_${findbugs.xslname}.html">
    </xslt>
  </target>

  <!-- Where the Sources live -->
  <property name="src.dir" value="src"/>
  <property name="src.core" value="src/core"/>
  <property name="src.http" value="src/protocol/http"/>
  <property name="src.ftp" value="src/protocol/ftp"/>
  <property name="src.test" value="test/src"/>
  <property name="src.jdbc" value="src/protocol/jdbc"/>
  <property name="src.java" value="src/protocol/java"/>
  <property name="src.junit" value="src/junit"/>
  <property name="src.components" value="src/components"/>
  <property name="src.functions" value="src/functions"/>
  <property name="src.jorphan" value="src/jorphan"/>
  <property name="src.ldap" value="src/protocol/ldap"/>
  <property name="src.tcp" value="src/protocol/tcp"/>
  <property name="src.examples" value="src/examples"/>
  <property name="src.mail" value="src/protocol/mail"/>
  <property name="src.monitor.components" value="src/monitor/components"/>
  <property name="src.monitor.model" value="src/monitor/model"/>
  <property name="src.jms" value="src/protocol/jms"/>
  <property name="src.native" value="src/protocol/native"/>
  <property name="src.mongodb" value="src/protocol/mongodb"/>
  <property name="src.slf4j_logkit" value="src/slf4j-logkit"/>

  <!-- Where the documentation sources live -->
  <property name="src.docs" value="xdocs"/>
  <property name="src.css" value="xdocs/css"/>
  <property name="src.images" value="xdocs/images"/>
  <property name="src.demos" value="xdocs/demos"/>

  <!-- Javadoc sources -->
  <path id="srcpaths">
    <pathelement location="${src.core}"/>
    <pathelement location="${src.components}"/>
    <pathelement location="${src.functions}"/>
    <pathelement location="${src.http}"/>
    <pathelement location="${src.ftp}"/>
    <pathelement location="${src.jdbc}"/>
    <pathelement location="${src.java}"/>
    <pathelement location="${src.junit}"/>
    <pathelement location="${src.jorphan}"/>
    <pathelement location="${src.ldap}"/>
    <pathelement location="${src.tcp}"/>
    <pathelement location="${src.examples}"/>
    <pathelement location="${src.mail}"/>
    <pathelement location="${src.monitor.components}"/>
    <pathelement location="${src.monitor.model}"/>
    <pathelement location="${src.jms}"/>
    <pathelement location="${src.native}"/>
    <pathelement location="${src.mongodb}"/>
    <pathelement location="${src.slf4j_logkit}"/>
  </path>

  <!-- Temporary build directories: where the .class live -->
  <property name="build.dir" value="build"/>
  <property name="build.core" value="build/core"/>
  <property name="build.http" value="build/protocol/http"/>
  <property name="build.ftp" value="build/protocol/ftp"/>
  <property name="build.jdbc" value="build/protocol/jdbc"/>
  <property name="build.java" value="build/protocol/java"/>
  <property name="build.junit" value="build/junit"/>
  <property name="build.components" value="build/components"/>
  <property name="build.functions" value="build/functions"/>
  <property name="build.jorphan" value="build/jorphan"/>
  <property name="build.ldap" value="build/protocol/ldap"/>
  <property name="build.mail" value="build/protocol/mail"/>
  <property name="build.tcp" value="build/protocol/tcp"/>
  <property name="build.examples" value="build/examples"/>
  <property name="build.monitor.components" value="build/monitor/components"/>
  <property name="build.monitor.model" value="build/monitor/model"/>
  <property name="build.jms" value="build/protocol/jms"/>
  <property name="build.native" value="build/protocol/native"/>
  <property name="build.mongodb" value="build/protocol/mongodb"/>
  <property name="build.slf4j_logkit" value="build/slf4j-logkit"/>
  <property name="build.test" value="build/test"/>
  <property name="build.res" value="build/res"/>
  <property name="build.test-res" value="test/resources"/>

  <!-- Path prefix to allow Anakia to find stylesheets if running under Eclipse -->
  <!--
  Anakia looks for stylesheets relative to the java launch directory.
  Use the External Tools properties page to define the variable
  as the relative path to the directory where this build file is found.
  For example:
               eclipse.anakia=workspace/jmeter

  An alternative is to define it as a command-line argument on the Main page;
  this allows one to use a macro name, so is more portable.
  For example:
               -Declipse.anakia=workspace/${project_name}
  WARNING: you must ensure that you have selected a file or directory in
  the Navigator pane before attempting to run the build, or Eclipse will
  complain that it cannot resolve the variable name, and it can mark the
  launch configuration as having failed.
  -->
  <property name="eclipse.anakia" value="."/>

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

  <!-- Where the API documentation lives -->
  <property name="dest.docs.api" value="docs/api"/>

  <!-- Where the doc results live -->
  <property name="dest.docs" value="docs"/>
  <property name="dest.printable_docs" value="printable_docs"/>

  <!-- Whether to force docs to be rebuilt -->
  <property name="docs.force" value="false"/>

  <!-- Default is for Anakia to only rebuild if the target file is older than the source -->
  <condition property="anakia.lastModifiedCheck" value="true" else="false">
    <!-- docs.force uses the opposite sense to the anakia check -->
    <isfalse value="${docs.force}"/>
  </condition>

  <!-- Directory where jars needed for creating documentation live -->
  <property name="lib.doc" value="lib/doc"/>

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

  <!-- Directory where API spec libraries live -->
  <property name="lib.api" value="lib/api"/>

  <!-- Directory where Optional 3rd party libraries live -->
  <property name="lib.opt" value="lib/opt"/>

  <!-- Other stuff -->
  <property name="extras.dir" value="extras"/>

  <!-- Some resources to add to jars -->
  <property name="res.dir" value="res"/>

  <!-- Where the distribution packages will be created -->
  <property name="dist.dir" value="dist"/>

  <!-- Where the Maven artifacts will be created -->
  <property name="maven.dir" value="${dist.dir}/maven"/>

  <!-- Where the Maven template poms are located -->
  <property name="maven.poms" value="res/maven"/>

  <!-- 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"/>
  <!-- Set test encoding to the same default, but allow override -->
  <property name="test.encoding" value="${encoding}"/>
  <!-- Set javadoc encoding to the same default, but allow override -->
  <property name="javadoc.encoding" value="${encoding}"/>
  <property name="includeAntRuntime" value="false"/>

  <!-- 3rd party libraries to be included in the binary distribution -->
  <property file="build.properties"/> <!-- defines the library version numbers -->

  <property name="resources.meta-inf"      value="${build.res}/META-INF"/>

  <patternset id="external.jars.notices">
    <include name="LICENSE"/>
    <include name="NOTICE"/>
    <include name="README"/>
  </patternset>

  <!-- Jars for binary release -->
  <patternset id="external.jars">
    <include name="${lib.dir}/${accessors-smart.jar}"/>
    <include name="${lib.dir}/${apache-bsf.jar}"/>
    <include name="${lib.dir}/${asm.jar}"/>
    <include name="${lib.dir}/${avalon-framework.jar}"/>
    <include name="${lib.dir}/${beanshell.jar}"/>
    <include name="${lib.dir}/${commons-codec.jar}"/>
    <include name="${lib.dir}/${commons-collections.jar}"/>
    <include name="${lib.dir}/${commons-dbcp2.jar}"/>
    <include name="${lib.dir}/${commons-httpclient.jar}"/>
    <include name="${lib.dir}/${commons-io.jar}"/>
    <include name="${lib.dir}/${commons-jexl.jar}"/>
    <include name="${lib.dir}/${commons-jexl2.jar}"/>
    <include name="${lib.dir}/${commons-jexl3.jar}"/>
    <include name="${lib.dir}/${commons-lang3.jar}"/>
    <include name="${lib.dir}/${commons-logging.jar}"/>
    <include name="${lib.dir}/${commons-math3.jar}"/>
    <include name="${lib.dir}/${commons-net.jar}"/>
    <include name="${lib.dir}/${commons-pool2.jar}"/>
    <include name="${lib.dir}/${dnsjava.jar}"/>
    <include name="${lib.dir}/${excalibur-logger.jar}"/>
    <include name="${lib.dir}/${freemarker.jar}"/>
    <include name="${lib.dir}/${groovy-all.jar}"/>
    <include name="${lib.dir}/${hamcrest-core.jar}"/>
    <include name="${lib.dir}/${httpclient.jar}"/>
    <include name="${lib.dir}/${httpcore.jar}"/>
    <include name="${lib.dir}/${httpmime.jar}"/>
    <include name="${lib.dir}/${jakarta-oro.jar}"/>
    <include name="${lib.dir}/${javamail.jar}"/>
    <include name="${lib.dir}/${jcharts.jar}"/>
    <include name="${lib.dir}/${jms.jar}"/>
    <include name="${lib.dir}/${rhino.jar}"/>
    <include name="${lib.dir}/${jodd-core.jar}"/>
    <include name="${lib.dir}/${jodd-lagarto.jar}"/>
    <include name="${lib.dir}/${jodd-log.jar}"/>
    <include name="${lib.dir}/${jodd-props.jar}"/>
    <include name="${lib.dir}/${json-path.jar}"/>
    <include name="${lib.dir}/${json-smart.jar}"/>
    <include name="${lib.dir}/${jsoup.jar}"/>
    <include name="${lib.dir}/${junit.jar}"/>
    <include name="${lib.dir}/${logkit.jar}"/>
    <include name="${lib.dir}/${mongo-java-driver.jar}"/>
    <include name="${lib.dir}/${ph-css.jar}"/>
    <include name="${lib.dir}/${ph-commons.jar}"/>
    <include name="${lib.dir}/${rsyntaxtextarea.jar}"/>
    <include name="${lib.dir}/${serializer.jar}"/>
    <include name="${lib.dir}/${slf4j-api.jar}"/>
    <include name="${lib.dir}/${jtidy.jar}"/>
    <include name="${lib.dir}/${tika-core.jar}"/>
    <include name="${lib.dir}/${tika-parsers.jar}"/>
    <include name="${lib.dir}/${xalan.jar}"/>
    <include name="${lib.dir}/${xerces.jar}"/>
    <include name="${lib.dir}/${xml-apis.jar}"/>
    <include name="${lib.dir}/${xmlgraphics-commons.jar}"/>
    <include name="${lib.dir}/${xmlpull.jar}"/>
    <include name="${lib.dir}/${xpp3.jar}"/>
    <include name="${lib.dir}/${xstream.jar}"/>
  </patternset>

  <!--
  Optional jars, not included in distribution.
  Any such jars need to be downloaded separately.
  These can be put into ${lib.dir} or ${lib.opt}
  - both of these are included in the build classpath

  Any jars put into ${lib.dir} will be included in
  the classpath used by JMeter to load classes.
  Jars in ${lib.opt} are NOT normally included by JMeter.

  Placing an optional jar in ${lib.opt} means that it
  will be included in the build classpath, but it will
  not be included in the runtime classpath. This is intended
  for testing JMeter without the optional Jar file(s).
  -->

  <!-- Build classpath (includes the optional jar directory) -->
  <path id="classpath">
    <!-- Externally produced jars -->
    <pathelement location="${lib.dir}/${accessors-smart.jar}"/>
    <pathelement location="${lib.dir}/${apache-bsf.jar}"/>
    <pathelement location="${lib.dir}/${asm.jar}"/>
    <pathelement location="${lib.dir}/${avalon-framework.jar}"/>
    <pathelement location="${lib.dir}/${beanshell.jar}"/>
    <pathelement location="${lib.dir}/${commons-codec.jar}"/>
    <pathelement location="${lib.dir}/${commons-collections.jar}"/>
    <pathelement location="${lib.dir}/${commons-dbcp2.jar}"/>
    <pathelement location="${lib.dir}/${commons-httpclient.jar}"/>
    <pathelement location="${lib.dir}/${commons-io.jar}"/>
    <pathelement location="${lib.dir}/${commons-jexl.jar}"/>
    <pathelement location="${lib.dir}/${commons-jexl2.jar}"/>
    <pathelement location="${lib.dir}/${commons-jexl3.jar}"/>
    <pathelement location="${lib.dir}/${commons-lang3.jar}"/>
    <pathelement location="${lib.dir}/${commons-logging.jar}"/>
    <pathelement location="${lib.dir}/${commons-math3.jar}"/>
    <pathelement location="${lib.dir}/${commons-net.jar}"/>
    <pathelement location="${lib.dir}/${commons-pool2.jar}"/>
    <pathelement location="${lib.dir}/${dnsjava.jar}"/>
    <pathelement location="${lib.dir}/${excalibur-logger.jar}"/>
    <pathelement location="${lib.dir}/${freemarker.jar}"/>
    <pathelement location="${lib.dir}/${groovy-all.jar}"/>
    <pathelement location="${lib.dir}/${hamcrest-core.jar}"/>
    <pathelement location="${lib.dir}/${httpclient.jar}"/>
    <pathelement location="${lib.dir}/${httpcore.jar}"/>
    <pathelement location="${lib.dir}/${httpmime.jar}"/>
    <pathelement location="${lib.dir}/${jakarta-oro.jar}"/>
    <pathelement location="${lib.dir}/${javamail.jar}"/>
    <pathelement location="${lib.dir}/${jcharts.jar}"/>
    <pathelement location="${lib.dir}/${jms.jar}"/>
    <pathelement location="${lib.dir}/${rhino.jar}"/>
    <pathelement location="${lib.dir}/${jodd-core.jar}"/>
    <pathelement location="${lib.dir}/${jodd-lagarto.jar}"/>
    <pathelement location="${lib.dir}/${jodd-log.jar}"/>
    <pathelement location="${lib.dir}/${jodd-props.jar}"/>
    <pathelement location="${lib.dir}/${json-path.jar}"/>
    <pathelement location="${lib.dir}/${json-smart.jar}"/>
    <pathelement location="${lib.dir}/${jsoup.jar}"/>
    <pathelement location="${lib.dir}/${junit.jar}"/>
    <pathelement location="${lib.dir}/${logkit.jar}"/>
    <pathelement location="${lib.dir}/${mongo-java-driver.jar}"/>
    <pathelement location="${lib.dir}/${ph-css.jar}"/>
    <pathelement location="${lib.dir}/${ph-commons.jar}"/>
    <pathelement location="${lib.dir}/${rsyntaxtextarea.jar}"/>
    <pathelement location="${lib.dir}/${serializer.jar}"/>
    <pathelement location="${lib.dir}/${slf4j-api.jar}"/>
    <pathelement location="${lib.dir}/${jtidy.jar}"/>
    <pathelement location="${lib.dir}/${tika-core.jar}"/>
    <pathelement location="${lib.dir}/${tika-parsers.jar}"/>
    <pathelement location="${lib.dir}/${xalan.jar}"/>
    <pathelement location="${lib.dir}/${xerces.jar}"/>
    <pathelement location="${lib.dir}/${xml-apis.jar}"/>
    <pathelement location="${lib.dir}/${xmlgraphics-commons.jar}"/>
    <pathelement location="${lib.dir}/${xmlpull.jar}"/>
    <pathelement location="${lib.dir}/${xpp3.jar}"/>
    <pathelement location="${lib.dir}/${xstream.jar}"/>
    <!-- Generated jars -->
    <fileset dir="${lib.dir}" includes="jorphan.jar"/>
  	<fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
    <!-- API-only jars-->
    <fileset dir="${lib.api}" includes="*.jar"/>
    <!-- Optional jars -->
    <fileset dir="${lib.opt}" includes="*.jar"/>
  </path>

	
  <path id="slf4j_logkit_classpath">
    <!-- Externally produced jars -->
    <pathelement location="${lib.dir}/${logkit.jar}"/>
    <pathelement location="${lib.dir}/${slf4j-api.jar}"/>
  </path>
	
  <!-- Anakia classpath -->
  <path id="anakia.classpath">
    <pathelement location="${lib.doc}/${velocity.jar}"/>
    <pathelement location="${lib.doc}/${jdom.jar}"/>
    <pathelement location="${lib.dir}/${commons-collections.jar}"/>
    <pathelement location="${lib.doc}/${commons-lang.jar}"/>
    <pathelement location="${lib.dir}/${logkit.jar}"/>
  </path>

  <!-- Version info filter set -->
  <tstamp>
    <format property="year" pattern="yyyy" locale="en"/>
  </tstamp>

  <filterset id="year.filters">
    <filter token="YEAR" value="${year}"/>
  </filterset>

  <target name="init-version">
    <tstamp/>
    <!--
        JMeter version
        This is overridden for formal releases.
    -->
    <property name="jmeter.version" value="3.1-SNAPSHOT"/>
    <!-- Remember to change "docversion" below if necessary -->
    <condition property="implementation.version"
          value="${jmeter.version} r${svn.revision}" else="${jmeter.version}.${DSTAMP}">
      <isset property="svn.revision"/>
    </condition>
    <property name="display.version" value="${implementation.version}"/>
    <echo level="info">jmeter.version = ${jmeter.version}</echo>
    <echo level="info">display.version = ${display.version}</echo>
    <echo level="info">implementation.version = ${implementation.version}</echo>
    <filterset id="version.filters">
      <filter token="VERSION" value="${display.version}"/>
    </filterset>
  </target>

  <!-- Get version from SVN status -->
  <target name="init-svnVersion" depends="svnCheck">
    <fail message="Could not get SVN revision" unless="svn.revision"/>
    <property name="jmeter.version" value="r${svn.revision}"/>
    <!-- Copy the value to avoid duplication of revision in Manifests -->
    <property name="implementation.version" value="${jmeter.version}"/>
    <property name="display.version" value="${jmeter.version}"/>
    <echo level="info">svn.revision = ${svn.revision}</echo>
    <echo level="info">jmeter.version = ${jmeter.version}</echo>
    <echo level="info">display.version = ${display.version}</echo>
    <echo level="info">implementation.version = ${implementation.version}</echo>
  </target>


  <target name="init-docs" depends="report-anakia-missing">
    <echo level="info">eclipse.anakia = ${eclipse.anakia}</echo>
  </target>

  <!--
    - Check for anakia task
  -->
  <target name="check-anakia">
    <available classpathref="anakia.classpath" classname="org.apache.velocity.anakia.AnakiaTask" property="AnakiaTask.present"/>
    <!-- Check for Velocity version 1.5 -->
    <available classpathref="anakia.classpath" classname="org.apache.velocity.io.UnicodeInputStream" property="velocity.version.15"/>
    <antcall target="report-old-velocity"></antcall>
  </target>

  <target name="report-anakia-missing" depends="check-anakia" unless="AnakiaTask.present">
    <echo>
      AnakiaTask is not present, documentation will not be generated.
    </echo>
  </target>

  <target name="report-old-velocity" unless="velocity.version.15" if="AnakiaTask.present">
    <echo>
      Velocity version appears to be older than 1.5: the documentation may be generated with incorrect line endings.
    </echo>
  </target>

  <target name="compile-core" depends="compile-jorphan" description="Compile JMeter core classes.">
    <mkdir dir="${build.core}"/>
    <javac srcdir="${src.core}" destdir="${build.core}" optimize="${optimize}" source="${src.java.version}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-components" depends="compile-jorphan,compile-core" description="Compile generic (protocol-independent) components.">
    <mkdir dir="${build.components}"/>
    <javac srcdir="${src.components}" destdir="${build.components}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-functions" depends="compile-jorphan,compile-core" description="Compile functions.">
    <mkdir dir="${build.functions}"/>
    <javac srcdir="${src.functions}" destdir="${build.functions}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-http" depends="compile-jorphan,compile-core,compile-components" description="Compile components specific to HTTP sampling.">
    <mkdir dir="${build.http}"/>
    <!-- Directory needs to exist, or jar will fail -->
    <javac srcdir="${src.http}" destdir="${build.http}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <pathelement location="${build.components}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <!-- Tests need main classes -->
  <target name="compile-tests" depends="compile" description="Compile test components">
    <mkdir dir="${build.test}"/>
    <javac srcdir="${src.test}" destdir="${build.test}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <pathelement location="${build.components}"/>
        <pathelement location="${build.http}"/>
        <pathelement location="${build.ftp}"/>
        <pathelement location="${build.functions}"/>
        <pathelement location="${build.java}"/>
        <pathelement location="${build.jdbc}"/>
        <pathelement location="${build.ldap}"/>
        <pathelement location="${build.mail}"/>
        <pathelement location="${build.monitor.components}"/>
        <pathelement location="${build.monitor.model}"/>
        <pathelement location="${build.tcp}"/>
        <!-- Also include compiled jars to allow running tests without rebuilding source -->
        <fileset dir="${dest.jar}" includes="*.jar"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-ftp" depends="compile-jorphan,compile-core" description="Compile components specific to FTP sampling.">
    <mkdir dir="${build.ftp}"/>
    <javac srcdir="${src.ftp}" destdir="${build.ftp}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-jdbc" depends="compile-jorphan,compile-core" description="Compile components specific to JDBC sampling.">
    <mkdir dir="${build.jdbc}"/>
    <javac srcdir="${src.jdbc}" destdir="${build.jdbc}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-ldap" depends="compile-jorphan,compile-core"
    description="Compile components specific to LDAP sampling.">
    <mkdir dir="${build.ldap}"/>
    <javac srcdir="${src.ldap}" destdir="${build.ldap}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="create-mail-dir">
    <mkdir dir="${build.mail}"/>
  </target>

  <target name="compile-mail" depends="compile-jorphan,compile-core,create-mail-dir"
    description="Compile components specific to IMAP and POP3 sampling.">
    <javac srcdir="${src.mail}" destdir="${build.mail}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-java" depends="compile-jorphan,compile-core" description="Compile components specific to Java sampling.">
    <mkdir dir="${build.java}"/>
    <javac srcdir="${src.java}" destdir="${build.java}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-junit" depends="compile-jorphan,compile-core" description="Compile components specific to JUnit sampling.">
    <mkdir dir="${build.junit}"/>
    <javac srcdir="${src.junit}" destdir="${build.junit}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-tcp" depends="compile-jorphan,compile-core" description="Compile components specific to TCP sampling.">
    <mkdir dir="${build.tcp}"/>
    <javac srcdir="${src.tcp}" destdir="${build.tcp}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-protocols" depends="compile-http,compile-ftp,compile-jdbc,compile-java,compile-ldap,compile-mail,compile-tcp" description="Compile all protocol-specific components."/>

  <target name="compile-examples" depends="compile-jorphan,compile-core" description="Compile example components.">
    <mkdir dir="${build.examples}"/>
    <javac srcdir="${src.examples}" destdir="${build.examples}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-monitor" depends="compile-monitor-model,compile-monitor-components"/>

  <target name="compile-monitor-components"
    depends="compile-jorphan,compile-core,compile-components,compile-monitor-model">
    <mkdir dir="${build.monitor.components}"/>
    <javac srcdir="${src.monitor.components}" source="${src.java.version}" destdir="${build.monitor.components}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.monitor.model}"/>
        <pathelement location="${build.http}"/>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <pathelement location="${build.components}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-monitor-model" depends="compile-jorphan,compile-core">
    <mkdir dir="${build.monitor.model}"/>
    <javac srcdir="${src.monitor.model}" destdir="${build.monitor.model}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-jorphan" depends="init-version" description="Compile JOrphan utility classes.">
    <mkdir dir="${build.jorphan}"/>
    <javac srcdir="${src.jorphan}" destdir="${build.jorphan}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>
	
  <target name="compile-slf4j_logkit" description="Compile JMeter slf4j LogKit bootstrap classes.">
    <mkdir dir="${build.slf4j_logkit}"/>
    <javac srcdir="${src.slf4j_logkit}" destdir="${build.slf4j_logkit}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
	    <path refid="slf4j_logkit_classpath"/>
	  </classpath>
    </javac>
  </target>

  <target name="compile-jms" depends="compile-jorphan,compile-core,compile-components"
        description="Compile components specific to JMS sampling.">
    <mkdir dir="${build.jms}"/>
    <javac srcdir="${src.jms}" destdir="${build.jms}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-native" depends="compile-jorphan,compile-core,compile-components"
        description="Compile components specific to Native sampling.">
    <mkdir dir="${build.native}"/>
    <javac srcdir="${src.native}" destdir="${build.native}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile-mongodb" depends="compile-jorphan,compile-core,compile-components"
        description="Compile components specific to MongoDB sampling.">
    <mkdir dir="${build.mongodb}"/>
    <javac srcdir="${src.mongodb}" destdir="${build.mongodb}" source="${src.java.version}" optimize="${optimize}" debug="on" target="${target.java.version}"
           includeAntRuntime="${includeAntRuntime}" deprecation="${deprecation}" encoding="${encoding}">
      <include name="**/*.java"/>
      <classpath>
        <pathelement location="${build.jorphan}"/>
        <pathelement location="${build.core}"/>
        <path refid="classpath"/>
      </classpath>
    </javac>
  </target>

  <target name="compile"
  depends="_message_3rdParty,compile-slf4j_logkit,compile-core,compile-components,compile-functions,compile-protocols,compile-monitor,compile-junit,compile-jms,compile-native, compile-mongodb"
  description="Compile everything."/>

  <target name="run_gui" depends="package" description="Run the JMeter GUI off the jar files">
    <java classname="org.apache.jmeter.NewDriver" fork="true">
      <classpath>
        <pathelement location="${dest.jar.jmeter}/ApacheJMeter.jar"/>
      </classpath>
      <sysproperty key="jmeter.home" value="${basedir}"/>
    </java>
  </target>

  <target name="package" depends="compile, prepare-resources, package-only"
     description="Compile everything and create the jars"/>

  <target name="package-and-check" depends="clean, package, checkstyle, rat"
     description="Compile, create jars and apply checkstyle before commiting code"/>

  <target name="prepare-resources"
     description="Prepare some resources files, update date">
    <mkdir dir="${build.res}" />
    <mkdir dir="${resources.meta-inf}" />
    <copy todir="${resources.meta-inf}" overwrite="yes" filtering="yes"
        encoding="${encoding}">
      <filterset refid="year.filters"/>
      <filterset refid="version.filters" />
      <fileset dir="${res.dir}/META-INF" >
        <include name="*.license" />
        <include name="*.notice" />
        <include name="jmeter_as_ascii_art.txt" />
      </fileset>
    </copy>
    <fixcrlf encoding="${encoding}" srcdir="${resources.meta-inf}" eol="crlf" includes="*.license *.notice"/>
  </target>

<!--
N.B. Eclipse (and perhaps other Java IDEs) copies all files to the build directory, unless
told otherwise. This means that there might be copies of property and image files in the
build directory. To avoid including the files twice in the jar file, we include only .class
files in the list of files to be processed from the build tree.

Eclipse has been fixed so that it no longer shows files in the build tree in the Open Resource dialogue,
so having duplicates in the build tree no longer causes confusion.

Note: if built from Eclipse, the build directory will include resources and images,
and Eclipse will thus be able to run JMeter from the default path.

If built using Ant, the build tree will not contain any resources, and thus Eclipse will not be able to
run JMeter unless all the JMeter jars are added.

-->
  <target name="package-only" description="Package already-compiled classes (shortcut for IDE users)">
    <manifest file="${build.dir}/MANIFEST_BIN.MF">
      <attribute name="Built-By" value="${user.name}"/>
      <attribute name="Extension-Name" value=" JMeter"/>
      <attribute name="Specification-Title" value=" Apache JMeter"/>
      <attribute name="Specification-Vendor" value=" Apache Software Foundation"/>
      <attribute name="Implementation-Vendor" value=" Apache Software Foundation"/>
      <attribute name="Implementation-Vendor-Id" value=" org.apache"/>
      <attribute name="Implementation-Version" value="${implementation.version}"/>
      <attribute name="X-Compile-Source-JDK" value="${src.java.version}"/>
      <attribute name="X-Compile-Target-JDK" value="${target.java.version}"/>
    </manifest>

    <manifest file="${build.dir}/MANIFEST_SRC.MF">
      <attribute name="Built-By" value="${user.name}"/>
      <attribute name="Extension-Name" value=" JMeter"/>
      <attribute name="Specification-Title" value=" Apache JMeter"/>
      <attribute name="Specification-Vendor" value=" Apache Software Foundation"/>
      <attribute name="Implementation-Vendor" value=" Apache Software Foundation"/>
      <attribute name="Implementation-Vendor-Id" value=" org.apache"/>
      <attribute name="Implementation-Version" value="${implementation.version}"/>
   </manifest>

    <mkdir dir="${dest.jar}"/>

    <!-- perhaps ought to include a basic jmeter.properties file in one of the jars,
    given that JMeterUtils looks for it if it cannot find the external one
    - otherwise, change utils to ignore it -->

    <!-- JMeter launch jar -->
    <jar jarfile="${dest.jar.jmeter}/ApacheJMeter.jar"
        includes="**/NewDriver*,**/DynamicClassLoader*,**/ShutdownClient.class"
        basedir="${build.core}"
        manifest="${build.dir}/MANIFEST_BIN.MF">
      <manifest>
        <attribute name="Main-Class" value="org.apache.jmeter.NewDriver"/>
      </manifest>
      <zipfileset file="${resources.meta-inf}/default.notice"
          fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
          fullpath="META-INF/LICENSE" />
      <zipfileset file="${resources.meta-inf}/jmeter_as_ascii_art.txt"
          fullpath="org/apache/jmeter/jmeter_as_ascii_art.txt" />
    </jar>

    <!-- core -->
    <jar jarfile="${dest.jar}/ApacheJMeter_core.jar"
        manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <!-- add license details for images -->
      <zipfileset file="licenses/src/openiconlibrary.txt"
        fullpath="META-INF/LICENSE-openiconlibrary.txt" />
      <!-- Only include class files from build tree - see above -->
      <fileset dir="${build.core}" includes="**/*.class"
        excludes="**/BeanShellClient*.class,**/NewDriver*,**/DynamicClassLoader*"/>
      <fileset dir="${src.core}" includes="org/apache/jmeter/images/**"
        excludes="**/*.properties,org/apache/jmeter/images/toolbar/icons-custom/**"/>
      <fileset dir="${src.core}" includes="**/*.properties">
        <exclude name="*eucJP*"/>
      </fileset>
      <!-- This file is used by the jmeter -h option -->
      <fileset dir="${src.core}" includes="org/apache/jmeter/help.txt"/>
    </jar>

    <!-- components -->
    <jar jarfile="${dest.jar}/ApacheJMeter_components.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.components}" includes="**/*.class" />
      <fileset dir="${src.components}" includes="**/*.properties" />
    </jar>

    <!-- functions -->
    <jar jarfile="${dest.jar}/ApacheJMeter_functions.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.functions}" includes="**/*.class" />
      <fileset dir="${src.functions}" includes="**/*.properties" />
    </jar>

    <!-- http -->
    <jar jarfile="${dest.jar}/ApacheJMeter_http.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.http}" includes="**/*.class"/>
      <fileset dir="${src.http}" includes="**/*.properties" />
    </jar>

    <!-- ftp -->
    <jar jarfile="${dest.jar}/ApacheJMeter_ftp.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.ftp}" includes="**/*.class" />
      <fileset dir="${src.ftp}" includes="**/*.properties" />
    </jar>

    <!-- jdbc -->
    <jar jarfile="${dest.jar}/ApacheJMeter_jdbc.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.jdbc}" includes="**/*.class" />
      <fileset dir="${src.jdbc}" includes="**/*.properties" />
    </jar>

    <!-- java -->
    <jar jarfile="${dest.jar}/ApacheJMeter_java.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.java}" includes="**/*.class" />
      <fileset dir="${src.java}" includes="**/*.properties" />
    </jar>

    <!-- BeanShell Client -->
    <jar jarfile="${lib.dir}/bshclient.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <manifest>
         <attribute name="Main-Class" value="org.apache.jmeter.util.BeanShellClient"/>
      </manifest>
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.core}" includes="**/BeanShellClient*.class" />
    </jar>

    <!-- junit -->
    <jar jarfile="${dest.jar}/ApacheJMeter_junit.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.junit}" includes="org/**/*.class" />
      <fileset dir="${src.junit}" includes="**/*.properties" />
    </jar>

    <!-- Build junit/test.jar sample -->
    <jar jarfile="${lib.dir}/junit/test.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.junit}" excludes="org/**/*" />
      <fileset dir="${src.junit}"   excludes="org/**/*" />
    </jar>

    <!-- ldap -->
    <jar jarfile="${dest.jar}/ApacheJMeter_ldap.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.ldap}" includes="**/*.class" />
      <fileset dir="${src.ldap}" includes="**/*.properties" />
    </jar>

    <!-- mail -->
    <jar jarfile="${dest.jar}/ApacheJMeter_mail.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.mail}" includes="**/*.class"  />
      <fileset dir="${src.mail}" includes="**/*.properties" />
      <fileset dir="${src.mail}" includes="**/*.providers" />
    </jar>

    <!-- tcp -->
    <jar jarfile="${dest.jar}/ApacheJMeter_tcp.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.tcp}" includes="**/*.class" />
      <fileset dir="${src.tcp}" includes="**/*.properties" />
    </jar>

    <!-- monitor -->
    <jar jarfile="${dest.jar}/ApacheJMeter_monitors.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.monitor.model}" includes="**/*.class" />
      <fileset dir="${build.monitor.components}" includes="**/*.class" />
    </jar>

    <!-- jms -->
    <!-- Ensure that build dir exists, even if JMS has not been built -->
    <mkdir dir="${build.jms}"/>
    <jar jarfile="${dest.jar}/ApacheJMeter_jms.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.jms}" includes="**/*.class" />
      <fileset dir="${src.jms}" includes="**/*.properties" />
    </jar>

    <!-- native -->
    <!-- Ensure that build dir exists, even if Native has not been built -->
    <mkdir dir="${build.native}"/>
    <jar jarfile="${dest.jar}/ApacheJMeter_native.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.native}" includes="**/*.class" />
      <fileset dir="${src.native}" includes="**/*.properties" />
    </jar>

    <!-- mongodb -->
    <!-- Ensure that build dir exists, even if MongoDB has not been built -->
    <mkdir dir="${build.mongodb}"/>
    <jar jarfile="${dest.jar}/ApacheJMeter_mongodb.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.mongodb}" includes="**/*.class" />
      <fileset dir="${src.mongodb}" includes="**/*.properties" />
    </jar>

    <!-- slf4j-logkit -->
    <!-- Ensure that build dir exists, even if slf4j-logkit has not been built -->
    <mkdir dir="${build.slf4j_logkit}"/>
    <jar jarfile="${lib.dir}/ApacheJMeter_slf4j_logkit.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.slf4j_logkit}" includes="**/*.class" />
      <fileset dir="${src.slf4j_logkit}" includes="**/*.properties" />
    </jar>

    <jar jarfile="${lib.dir}/jorphan.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
          fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
          fullpath="META-INF/LICENSE" />
      <fileset dir="${build.jorphan}" includes="**/*.class"/>
      <fileset dir="${src.jorphan}" includes="**/*.properties"/>
    </jar>
  </target>

  <!-- Check the Ant version -->
  <available property="Ant-1.8.0-or-later" classname="org.apache.tools.ant.taskdefs.Local"/>
  <fail message="This build requires Ant 1.8.0 or later" unless="Ant-1.8.0-or-later"/>

  <!-- Check that the 3rd party libraries are present -->
  <target name="_check_3rdparty">
    <condition property="3rdparty.present">
      <and>
        <!-- No need to check all jars; just check a few -->
        <available classpathref="classpath" classname="org.apache.bsf.BSFEngine"/>
        <available classpathref="classpath" classname="com.thoughtworks.xstream.XStream"/>
      </and>
    </condition>
  </target>

  <target name="_message_3rdParty" depends="_check_3rdparty" unless="3rdparty.present">
    <echo>Cannot find all the required 3rd party libraries.</echo>
    <echo>If building from a release, you can get most of them from the binary archive.</echo>
    <echo>Use "ant download_jars" to download any missing jars.</echo>
    <fail message="Cannot find required classes"/>
  </target>

  <target name="setup-eclipse-project" description="Setup eclipse project to contribute to JMeter">
    <echo>Creating eclipse project</echo>
    <copy overwrite="false" file="eclipse.project" tofile=".project" />
    <copy overwrite="false" file="eclipse.classpath" tofile=".classpath"/>
    <input message="Next step will download dependencies for JMeter, do you agree with the download ?" addproperty="do.download" validargs="y,n"/>
    <condition property="do.abort">
      <equals arg1="n" arg2="${do.download}"/>
    </condition>
    <fail message="You didn't agree to download dependencies, ensure you call Ant target 'download_jars when importing project" if="do.abort"/>
    <echo>Downloading dependencies</echo>
    <antcall target="download_jars" />
    <echo>Project has been successfully created, you can now import it in Eclipse using Right click > Import > Existing projects into Workspace</echo>
  </target>

  <target name="install" depends="package,docs-printable" description="Install JMeter. (Compiles code and creates jars)">
    <fixcrlf encoding="${encoding}" srcdir="." eol="lf" includes="bin/*.sh bin/jmeter bin/jmeter-server bin/mirror-server"/>
    <chmod perm="+x" dir="." includes="${dist.executables}"/>
  </target>

  <target name="install-examples" depends="compile-examples" description="Build and installs the example components.">
    <jar jarfile="${dest.jar}/ApacheJMeter_examples.jar" manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
        fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
        fullpath="META-INF/LICENSE" />
      <fileset dir="${build.examples}" includes="**/*.class" />
      <fileset dir="${src.examples}" includes="**/*.properties" />
    </jar>
  </target>

  <!-- lists of files needed for a binary distribution (excluding library files) -->
  <!-- Source files also needed at runtime -->
  <patternset id="dist.common.native">
    <include name="${dest.jar.jmeter}/BeanShell*.bshrc"/>
    <include name="${dest.jar.jmeter}/jaas.conf"/>
    <include name="${dest.jar.jmeter}/krb5.conf"/>
    <include name="${dest.jar.jmeter}/hc.parameters"/>
    <include name="${dest.jar.jmeter}/jmeter.properties"/>
    <include name="${dest.jar.jmeter}/log4j.conf"/>
    <include name="${dest.jar.jmeter}/logkit.xml"/>
    <include name="${dest.jar.jmeter}/reportgenerator.properties"/>
    <include name="${dest.jar.jmeter}/upgrade.properties"/>
    <include name="${dest.jar.jmeter}/saveservice.properties"/>
    <include name="${dest.jar.jmeter}/users.dtd"/>
    <include name="${dest.jar.jmeter}/users.xml"/>
    <!-- Sample override properties files -->
    <include name="${dest.jar.jmeter}/httpclient.parameters"/>
    <include name="${dest.jar.jmeter}/system.properties"/>
    <include name="${dest.jar.jmeter}/user.properties"/>
    <!-- Exclude any files that might be present from testing the release -->
    <exclude name="${dest.jar.jmeter}/*.log"/>
    <include name="${dest.jar.jmeter}/examples/**"/>
    <include name="${dest.jar.jmeter}/templates/*.dtd"/>
    <!-- report-templates files which need to have native eol -->
    <include name="${dest.jar.jmeter}/report-template/README.TXT"/>
    <include name="${dest.jar.jmeter}/report-template/**/*.fmkr"/>
    <include name="${dest.jar.jmeter}/report-template/content/**/*.css"/>
    <include name="${dest.jar.jmeter}/report-template/content/**/*.js"/>
    <!-- JMX files are in the non-native section -->
    <exclude name="${dest.jar.jmeter}/examples/*.jmx"/>
    <include name="${extras.dir}/**"/>
    <!-- Binary file types -->
    <exclude name="${extras.dir}/*.jar"/>
    <exclude name="${extras.dir}/*.jpg"/>
    <exclude name="${extras.dir}/*.png"/>
    <!-- File types that need to retain their EOL setting -->
    <exclude name="${extras.dir}/*.jmx"/>
    <exclude name="${extras.dir}/*.cmd"/>
    <exclude name="${extras.dir}/*.sh"/>
  </patternset>

  <patternset id="dist.binaries.native">
    <include name="LICENSE"/>
    <include name="licenses/**"/>
    <include name="NOTICE"/>
    <include name="README"/>
    <patternset refid="dist.common.native"/>
    <!-- Help documentation -->
    <include name="${dest.printable_docs}/**"/>
    <!-- Binary file types -->
    <exclude name="${dest.printable_docs}/**/*.pdf"/>
    <exclude name="${dest.printable_docs}/**/*.jmx"/>
    <!-- We also need the shared CSS for the printable docs -->
    <include name="${dest.docs}/css/**"/>
  </patternset>

  <!-- Source files also needed at runtime -->
  <patternset id="dist.common.non.native">
    <include name="${dest.jar.jmeter}/heapdump.*"/>
    <include name="${dest.jar.jmeter}/jmeter*"/>
    <exclude name="${dest.jar.jmeter}/jmeter.properties"/>
    <exclude name="${dest.jar.jmeter}/reportgenerator.properties"/>
    <include name="${dest.jar.jmeter}/mirror-server*"/>
    <include name="${dest.jar.jmeter}/shutdown.*"/>
    <include name="${dest.jar.jmeter}/stoptest.*"/>
    <!-- Fake SSL cert for JMeter proxy recorder in https -->
    <include name="${dest.jar.jmeter}/proxyserver.jks"/>
    <!-- Exclude any files that might be present from testing the release -->
    <exclude name="${dest.jar.jmeter}/*.log"/>
    <!-- report-template files non native -->
    <include name="${dest.jar.jmeter}/report-template/content/pages/*.png"/>
    <include name="${dest.jar.jmeter}/report-template/sbadmin2*/**"/>
    <include name="${dest.jar.jmeter}/templates/*.jmx"/>
    <include name="${dest.jar.jmeter}/templates/*.xml"/>
    <include name="${dest.jar.jmeter}/examples/*.jmx"/>
    <include name="${extras.dir}/*.jar"/>
    <include name="${extras.dir}/*.jpg"/>
    <include name="${extras.dir}/*.png"/>
    <!-- File types that need to retain their EOL setting -->
    <include name="${extras.dir}/*.jmx"/>
    <include name="${extras.dir}/*.cmd"/>
    <include name="${extras.dir}/*.sh"/>
  </patternset>

  <patternset id="dist.binaries.non.native">
    <patternset refid="dist.common.non.native"/>
    <include name="${dest.jar}/"/>
    <include name="${lib.dir}/bshclient.jar"/>
    <include name="${lib.dir}/jorphan.jar"/>
  	<include name="${lib.dir}/ApacheJMeter_slf4j_logkit.jar"/>
    <include name="${lib.dir}/junit/test.jar"/>
    <include name="${dest.jar.jmeter}/ApacheJMeter.jar"/>
    <!-- Help documentation, binary files -->
    <include name="${dest.printable_docs}/**/*.pdf"/>
    <include name="${dest.printable_docs}/**/*.jmx"/>
    <!-- We also need the shared images for the printable docs -->
    <include name="${dest.docs}/images/**"/>
  </patternset>

  <!--
      List of Unix executable files in the binary distribution
      These need special handling to create the correct file mode
  -->
  <property name="dist.executables"
    value="${dest.jar.jmeter}/jmeter ${dest.jar.jmeter}/jmeter-server ${dest.jar.jmeter}/mirror-server ${dest.jar.jmeter}/*.sh ${extras.dir}/*.sh"/>

  <!-- List of files in source distribution that are eol=native -->
  <!--
  N.B. dist.sources[.non].native sets exclude source files present in dist.binaries[.non].native
  so that the nightly build src archive does not duplicate stuff in the binary archive
  (This may change, as the overlap does not waste much space)
  -->
  <patternset id="dist.sources.native">
    <include name="LICENSE"/>
    <!-- Include all the licenses; they are needed to build the distribution -->
    <include name="licenses/**"/>
    <include name="NOTICE"/>
    <include name="README"/>
    <include name="${src.dir}/**"/>
    <exclude name="**/messages.metaprops"/>
    <!-- Exclude binary types -->
    <exclude name="**/*.gif"/>
    <exclude name="**/*.jpg"/>
    <exclude name="**/*.png"/>
    <include name="${src.docs}/**"/>
    <!-- Include some resources -->
    <include name="${res.dir}/**"/>
    <!-- Exclude binary types (and JMX/JTL, which are not OS-dependent) -->
    <exclude name="${src.docs}/images/**"/>
    <exclude name="${src.docs}/**/*.jmx"/>
    <exclude name="${src.docs}/**/*.odt"/>
    <exclude name="${src.docs}/**/*.pdf"/>
    <exclude name="${src.docs}/**/*.sxi"/>
    <exclude name="${src.docs}/**/*.sxw"/>
    <include name="${src.test}/**"/>
    <include name="build.xml"/>
    <include name="build.properties"/>
    <include name="${dest.jar.jmeter}/testfiles/**"/>
    <exclude name="${dest.jar.jmeter}/testfiles/*.jmx"/>
    <exclude name="${dest.jar.jmeter}/testfiles/*.jtl"/>
    <!-- These are generated with EOL=LF -->
    <exclude name="${dest.jar.jmeter}/testfiles/*.xml"/>
    <!-- Ignore unit test output -->
    <exclude name="${dest.jar.jmeter}/testfiles/*.out"/>
    <exclude name="${dest.jar.jmeter}/testfiles/Sample_*.png"/>
    <include name="eclipse.classpath"/>
    <include name="eclipse.project"/>
    <include name="eclipse.readme"/>
    <include name=".gitignore"/>
    <include name=".travis.yml"/>
    <include name="checkstyle.xml"/>
    <include name="checkstyle-suppressions.xml"/>
    <include name="rat-excludes.txt"/>
    <include name="${build.test-res}/**"/>
    <include name="${lib.dir}/aareadme.txt"/>
    <include name="${lib.dir}/**/readme.txt"/>
    <include name="fb-*.x*"/>
    <!-- Make sure that the lib/opt directory is included in the archives -->
    <include name="${lib.opt}/README.txt"/>
  </patternset>

  <!-- Non-native items -->
  <patternset id="dist.sources.non.native">
    <include name="${src.dir}/**/*.gif"/>
    <include name="${src.dir}/**/*.jpg"/>
    <include name="${src.dir}/**/*.png"/>
    <include name="${src.docs}/images/**"/>
    <include name="${src.docs}/**/*.jmx"/>
    <include name="${src.docs}/**/*.odt"/>
    <include name="${src.docs}/**/*.pdf"/>
    <include name="${src.docs}/**/*.sxi"/>
    <include name="${src.docs}/**/*.sxw"/>
    <include name="${dest.jar.jmeter}/testfiles/*.jmx"/>
    <include name="${dest.jar.jmeter}/testfiles/*.jtl"/>
    <!-- These are generated with EOL=LF -->
    <include name="${dest.jar.jmeter}/testfiles/*.xml"/>
    <!-- Include the image files used in parsing / embedded download tests -->
    <include name="${dest.jar.jmeter}/testfiles/**/*.gif"/>
    <include name="${dest.jar.jmeter}/testfiles/**/*.jpg"/>
    <include name="${dest.jar.jmeter}/testfiles/**/*.png"/>
  </patternset>

    <!-- Convert eol:native source files to appropriate format if required -->
    <target name="_filter" unless="native.${eoltype}">
      <property name="workdir" value="${dist.dir}/${eoltype}"/>
      <echo level="info">Converting work files to eol=${eoltype} in ${workdir}</echo>
      <mkdir dir="${workdir}"/>
      <copy includeemptydirs="false" todir="${workdir}" encoding="${encoding}">
        <fileset dir=".">
          <patternset refid="${fileset}"/>
        </fileset>
        <filterchain>
          <fixcrlf encoding="${encoding}" fixlast="false" eol="${eoltype}" srcdir="${workdir}"/>
        </filterchain>
      </copy>
    </target>

    <!-- Files to be included in full source download -->
    <patternset id="dist_src_files_native">
      <patternset refid="dist.sources.native"/>
      <patternset refid="dist.common.native"/>
    </patternset>

    <patternset id="dist_src_files_non_native">
      <patternset refid="dist.sources.non.native"/>
      <patternset refid="dist.common.non.native"/>
    </patternset>

    <!-- Files to be included in full binary download -->
    <patternset id="dist_bin_files_native">
      <patternset refid="dist.binaries.native"/>
      <patternset refid="external.jars.notices"/>
      <!-- We don't need the site docs, but we do want Javadoc (e.g. for BeanShell) -->
      <include name="${dest.docs.api}/**"/>
      <exclude name="${dest.docs.api}/resources/**"/>
    </patternset>

    <patternset id="dist_bin_files_non_native">
      <patternset refid="dist.binaries.non.native"/>
      <patternset refid="external.jars"/>
      <include name="${dest.docs.api}/resources/**"/>
    </patternset>

    <!-- NOTE: the site documents are not included in either archive -->

    <!-- Invoke with -Djmeter.version=m.n -Duser.name=xyz@apache.org [-Dsvn.revision=nnnnn] [-Ddisplay.version=xxxx]
    Creates clean build and all documentation
    Creates runtime and source distributions and site documentation
    -->
    <target name="distribution"
        depends="svnCheck,check-versions,clean,install,docs-printable,docs-api,test,_distribution"
        description="Build JMeter for end-user distribution"/>

    <target name="check-versions" unless="disable-check-versions">
      <fail message="jmeter.version must be defined" unless="jmeter.version"/>
      <fail message="svn.revision must be defined" unless="svn.revision"/>
      <local         name="version.match"/>
      <condition property="version.match">
        <resourcecontains resource="${src.core}/org/apache/jmeter/util/JMeterVersion.java"
                substring='VERSION = "${jmeter.version}";'/>
      </condition>
      <fail message="jmeter.version (${jmeter.version}) must be same as JMeterVersion.VERSION" unless="version.match"/>
    </target>

    <!--
    <target
        name="nightly"
        depends="init-svnVersion,package,docs-printable,pack-nightly"
        description="Build JMeter for nightly dir (package docs-printable pack-nightly)"/>
    -->
   <target
        name="nightly-setup"
        description="Disables some checks"
        depends="clean,clean-docs,clean-apidocs,clean-dist">
      <property name="disable-check-versions" value="true" />
      <property name="docs.force" value="true" />
    </target>
    <target
        name="nightly"
        depends="nightly-setup,init-svnVersion,install,docs-printable,docs-api,test,_distribution"
        description="Build JMeter for nightly distribution (include docs)"/>

    <target name="_eolcheck">
      <!-- Determine if the native format is CRLF or LF (or neither) -->
      <condition property="native.lf">
        <os family="unix"/>
      </condition>
      <condition property="native.crlf">
        <os family="dos"/>
      </condition>
      <!-- Define native.dir.x as either the source or updated directory as appropriate -->
      <condition property="native.dir.lf" value="." else="${dist.dir}/lf">
        <isset property="native.lf"/>
      </condition>
      <condition property="native.dir.crlf" value="." else="${dist.dir}/crlf">
        <isset property="native.crlf"/>
      </condition>
      <echoproperties prefix="native"></echoproperties>
    </target>

    <!-- Internal target -->
    <target name="_distribution" depends="check-versions,_eolcheck,check_jars">
    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
    <property name="pack.name" value="${dist.name}"/>
    <echo level="info">Creating JMeter distribution ${dist.name} ${svn.revision}</echo>
    <mkdir dir="${dist.dir}"/>

    <!-- Delete work directories just in case -->
    <delete dir="${dist.dir}/crlf" quiet="true"/>
    <delete dir="${dist.dir}/lf" quiet="true"/>

    <!-- Runtime archives -->
    <antcall target="_filter">
      <param name="eoltype" value="lf"/>
      <param name="fileset" value="dist_bin_files_native"/>
    </antcall>

    <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu">
      <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}" defaultexcludes="yes">
        <patternset refid="dist_bin_files_non_native"/>
      </tarfileset>
      <tarfileset mode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/>
      <tarfileset dir="${native.dir.lf}" prefix="${dist.name}">
        <patternset refid="dist_bin_files_native"/>
      </tarfileset>
    </tar>
    <!-- Delete work directory (may not exist) -->
    <delete dir="${dist.dir}/lf" quiet="true"/>

    <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" />
    <!-- no longer needed -->
    <delete file="${dist.dir}/${pack.name}.tar"/>
    <antcall target="_hash">
      <param name="path" value="${dist.dir}/${dist.name}.tgz"/>
    </antcall>

    <antcall target="_filter">
      <param name="eoltype" value="crlf"/>
      <param name="fileset" value="dist_bin_files_native"/>
    </antcall>
    <zip  destfile="${dist.dir}/${pack.name}.zip">
      <zipfileset excludes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist_bin_files_non_native"/>
      </zipfileset>
      <zipfileset filemode="755" dir="." includes="${dist.executables}" prefix="${dist.name}" defaultexcludes="yes"/>
      <zipfileset dir="${native.dir.crlf}" prefix="${dist.name}">
        <patternset refid="dist_bin_files_native"/>
      </zipfileset>
    </zip>
    <antcall target="_hash">
      <param name="path" value="${dist.dir}/${dist.name}.zip"/>
    </antcall>
    <!-- Delete work directory (may not exist) -->
    <delete dir="${dist.dir}/crlf" quiet="true"/>

    <!-- Source archives -->
    <antcall target="_filter">
      <param name="eoltype" value="lf"/>
      <param name="fileset" value="dist_src_files_native"/>
    </antcall>
    <tar destfile="${dist.dir}/${pack.name}_src.tar" longfile="gnu">
      <tarfileset dir="${native.dir.lf}" prefix="${dist.name}">
        <patternset refid="dist_src_files_native"/>
      </tarfileset>
      <tarfileset excludes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist_src_files_non_native"/>
      </tarfileset>
      <tarfileset mode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/>
    </tar>
    <!-- Delete work directory (may not exist) -->
    <delete dir="${dist.dir}/lf" quiet="true"/>

    <gzip destfile="${dist.dir}/${pack.name}_src.tgz" src="${dist.dir}/${pack.name}_src.tar" />
    <!-- no longer needed -->
    <delete file="${dist.dir}/${pack.name}_src.tar"/>
    <antcall target="_hash">
      <param name="path" value="${dist.dir}/${dist.name}_src.tgz"/>
    </antcall>

    <antcall target="_filter">
      <param name="eoltype" value="crlf"/>
      <param name="fileset" value="dist_src_files_native"/>
    </antcall>

    <zip  destfile="${dist.dir}/${pack.name}_src.zip">
      <zipfileset dir="${native.dir.crlf}" prefix="${dist.name}">
        <patternset refid="dist_src_files_native"/>
      </zipfileset>
      <zipfileset excludes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist_src_files_non_native"/>
      </zipfileset>
      <zipfileset filemode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/>
    </zip>
    <antcall target="_hash">
      <param name="path" value="${dist.dir}/${dist.name}_src.zip"/>
    </antcall>
    <!-- Delete work directory (may not exist) -->
    <delete dir="${dist.dir}/crlf" quiet="true"/>
  </target>

  <!-- Set up files for distribution to Maven via Nexus -->
  <target name="_dist_maven" depends="init-version">
    <!-- Ensure there aren't any stale files left -->
    <delete dir="${maven.dir}" includes="*.pom" quiet="true"/>
    <echo>Updating POM files to version ${jmeter.version}</echo>
    <copy todir="${maven.dir}">
      <fileset dir="${maven.poms}" includes="*.pom"/>
      <filterset>
        <filter token="MAVEN.DEPLOY.VERSION" value="${jmeter.version}"/>
      </filterset>
    </copy>
    <delete dir="${maven.dir}" includes="*.jar" quiet="true"/>
    <echo>Copying jar files ready for signing</echo>
    <copy todir="${maven.dir}">
      <fileset dir="${dest.jar}" includes="ApacheJMeter*.jar"/>
      <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
      <fileset dir="${lib.dir}" includes="jorphan.jar"/>
      <fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
    </copy>
    <copy tofile="${maven.dir}/ApacheJMeter_junit-test.jar" file="${lib.dir}/junit/test.jar"/>
    <!--
        Create the Maven jar needed to hold configuration data
        Cannot be added to any of the other jars as that would cause problems for stand-alone JMeter usage.
    -->
    <jar jarfile="${maven.dir}/ApacheJMeter_config.jar" manifest="${build.dir}/MANIFEST_SRC.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
          fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
          fullpath="META-INF/LICENSE" />
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="*.bshrc"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="*.parameters"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="*.properties"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="jaas.conf"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="krb5.conf"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="log4j.conf"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="logkit.xml"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="proxyserver.jks"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="users.dtd"/>
      <zipfileset dir="${dest.jar.jmeter}" prefix="bin" includes="users.xml"/>
    </jar>
  </target>

  <!--
      Beanshell script to create the svnmucc scripts for upload, delete and publish.

      The generated script assumes svnmucc is invoked with a root URL of
      https://dist.apache.org/repos/dist/
      This means that the jmeter files are at:
      dev/jmeter/[binaries|source]
      and
      release/jmeter/[binaries|source]
  -->
  <scriptdef name="svnmuccScript" language="beanshell">
    <classpath>
      <pathelement location="${lib.dir}/${beanshell.jar}"/>
      <!-- Needed to work with Java 1.5 -->
      <pathelement location="${lib.dir}/${apache-bsf.jar}"/>
      <pathelement location="${lib.dir}/${commons-logging.jar}"/>
    </classpath>
    <!-- type of script to create: upload, publish or delete -->
    <attribute name="type"/>
    <!-- Name of file to create -->
    <attribute name="tempfile"/>
    <![CDATA[
    void upload(source) {
      self.log("Will upload " + source + " to " + RCdir);
      outstream.println("put");
      outstream.println(source); // source
      outstream.print("dev/jmeter/");
      outstream.print(RCdir);
      outstream.println(source); // dest
      outstream.println();
    }
    void publish(source, targetDir) {
      self.log("Will publish " + source + " to " + targetDir);
      outstream.println("mv");
      outstream.print("dev/jmeter/");
      outstream.print(RCdir);
      outstream.println(source); // source
      outstream.print("release/jmeter/");
      outstream.print(targetDir);
      outstream.println(source); // source
      outstream.println();
    }
    void delete(source, targetDir) {
      self.log("Will delete " + source + " from " + targetDir);
      outstream.println("rm");
      outstream.print("release/jmeter/");
      outstream.print(targetDir);
      outstream.println(source); // source
      outstream.println();
    }
    void processFiles(basename, targetDir) {
      // combine all the extensions in one list
      extensions = new String[]{".zip", ".zip.asc", ".zip.md5", ".zip.sha", ".tgz", ".tgz.asc", ".tgz.md5", ".tgz.sha"};
      for (i = 0; i < extensions.length; ++i) {
        extension = extensions[i];
        srcFile = basename + extension;

        if ("upload".equals(type)) {
            upload(srcFile);
        } else if ("publish".equals(type)) {
            publish(srcFile, targetDir);
        } else if ("delete".equals(type)) {
            delete(srcFile, targetDir);
        }
      }
    }
      type = attributes.get("type");
      if (type.equals("delete")) {
        version = project.getProperty("jmeter.old.version");
        RC="";
      } else {
        version = project.getProperty("jmeter.version");
        RC = project.getProperty("RC");
        RCdir = "v"+version+"_"+RC+"/";
      }
      tempfile = attributes.get("tempfile");
      self.log("Writing " + type + " script for version " + version + " " + RC + " into " + tempfile);
      distname = project.getProperty("dist.name");
      outstream = new PrintStream(new File(tempfile));
      if ("upload".equals(type)) { // make the initial directory
        outstream.println("mkdir");
        outstream.print("dev/jmeter/");
        outstream.println(RCdir);
        outstream.println();
      }
      processFiles(distname, "binaries/");
      processFiles(distname+"_src", "source/");
      // TODO could remove RCdir, but safer to do that manually after checking it is empty
      outstream.close();
    ]]>
  </scriptdef>

  <!--
      Run svnnmucc against the svnpubsub distribution area
  -->
  <target name="_svnmucc">
    <property name="repoType" value="test"/>
    <condition property="repo"
            value="https://dist.apache.org/repos/dist/"
            else="https://svn.apache.org/repos/asf/jmeter/test/" >
      <equals arg1="live" arg2="${repoType}"/>
    </condition>
    <echo level="info">Processing ${tempfile} using svnmucc on repo: ${repoType}</echo>
    <echo level="info">${repo}</echo>
    <echo level="info">${message}</echo>
    <!-- Only one of the following will execute -->
    <antcall target="_svnmucc_storedPass"/>
    <antcall target="_svnmucc_providedPass"/>
  </target>

  <!-- run svnmucc using stored credentials -->
  <target name="_svnmucc_storedPass" unless="asf.ldap.password">
    <echo level="info" message="Using stored credentials"/>
    <exec executable="svnmucc" dir="${dist.dir}" logerror="true" failonerror="true" failifexecutionfails="true">
      <arg value="--non-interactive"/> <!-- -n alias was removed in svnmucc 1.8.0 -->
      <!-- not strictly necessary, but does no harm and agrees with password version -->
      <arg value="--no-auth-cache"/>
      <arg value="--message"/> <!-- -m -->
      <arg value="${message}"/>
      <arg value="--root-url"/> <!-- -U -->
      <arg value="${repo}"/>
      <arg value="--extra-args"/> <!-- -X -->
      <arg value="${tempfile}"/>
    </exec>
  </target>

  <!-- run svnmucc using password provided as a property -->
  <target name="_svnmucc_providedPass" if="asf.ldap.password">
    <!-- provide default user name -->
    <property name="asf.ldap.username" value="${user.name}"/>
    <echo level="info" message="Using provided credentials for user ${asf.ldap.username}"/>
    <exec executable="svnmucc" dir="${dist.dir}" logerror="true" failonerror="true" failifexecutionfails="true">
      <arg value="--non-interactive"/>
      <!-- we don't want to cache the provided credentials -->
      <arg value="--no-auth-cache"/>
      <arg value="--message"/> <!-- -m -->
      <arg value="${message}"/>
      <arg value="--root-url"/> <!-- -U -->
      <arg value="${repo}"/>
      <arg value="--extra-args"/> <!-- -X -->
      <arg value="${tempfile}"/>
      <!-- Add credentials provided on command-line -->
      <arg value="--username"/> <!-- -u -->
      <arg value="${asf.ldap.username}"/>
      <arg value="--password"/> <!-- -p -->
      <arg value="${asf.ldap.password}"/>
    </exec>
  </target>

  <!--
        Targets for deploying release candidates via svnpubsub.

        By default, deploys the artifacts under the JMeter test repo:
        https://svn.apache.org/repos/asf/jmeter/test/

        The live repo is:
        https://dist.apache.org/repos/dist/

        The JMeter files are to be found under:

        dev/jmeter/[source|binaries]
        and
        release/jmeter/[source|binaries]

        Files that are expected to be present:
        apache-jmeter-<version>.[tgz|zip] + [.asc|.md5|.sha]
        apache-jmeter-<version>_src.[tgz|zip] + [.asc|.md5|.sha]

        Must have SVN installed, in particular the svnmucc command-line client.


        Pre-requisites:
        The distribution files must have been built and signed and placed in the dist/ directory.
        If any required files are missing, then upload will fail.

        Usage:
          ant RC_upload  [-DrepoType=test|live] [-Djmeter.version=2.9] -DRC=RCn [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ]
          ant RC_publish [-DrepoType=test|live] [-Djmeter.version=2.9] -DRC=RCn [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ]
          ant release_delete  [-DrepoType=test|live]  -Djmeter.old.version=2.8      [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ]
          (the old version must be specified and different from the current version!)

        If the ldap password is not provided, svnmucc is invoked without the username (-u) and password (-p) parameters.
        In this case, svnmucc will use whatever stored credentials are present for the svn host.

        If not using stored credentials, provide at least the ldap password.
        The ldap username defaults to the login name (i.e. the Java user.name property) but can also be provided.

        Note: svnmucc can only move or copy files where the target does not exist.
        This is perfect for deploying an RC or new release as these use unique names.
        However, any existing files such as HEADER.html will need to be handled separately.
  -->


  <target name="RC_upload"
    description="Upload release candidate to svnpubsub area. Params: [-DrepoType=test|live] [-Djmeter.version=m.n] -DRC=RCn [-Dasf.ldap.password=secret -Dasf.ldap.usermame=user]"
    depends="init-version">
    <fail message="RC property must be defined!" unless="RC"/>
    <echo>Version = ${jmeter.version} ${RC}</echo>
    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
    <property name="tempfile" value="svnmucc_upload.tmp"/>
    <svnmuccScript type="upload" tempfile="${dist.dir}/${tempfile}"/>
    <antcall target="_svnmucc">
      <param name="message" value="Uploading release candidate ${dist.name} to dev area"/>
    </antcall>
  </target>

  <target name="RC_publish"
    description="Publish release candidate from svnpubsub area. Params: [-DrepoType=test|live] [-Djmeter.version=m.n] -DRC=RCn [-Dasf.ldap.password=secret -Dasf.ldap.usermame=user]"
    depends="init-version">
    <fail message="RC property must be defined!" unless="RC"/>
    <echo>Version = ${jmeter.version} ${RC}</echo>
    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
    <property name="tempfile" value="svnmucc_publish.tmp"/>
    <svnmuccScript type="publish" tempfile="${dist.dir}/${tempfile}"/>
    <antcall target="_svnmucc">
      <param name="message" value="Publishing ${dist.name} ${RC}"/>
    </antcall>
  </target>

  <target name="release_delete"
    description="Delete old release candidate from svnpubsub area. : [-DrepoType=test|live] -Djmeter.old.version=m.n [-Dasf.ldap.user=name -Dasf.ldap.password=secret]"
    depends="init-version">
    <fail message="jmeter.old.version property must be defined!" unless="jmeter.old.version"/>
    <condition property="same">
      <equals arg1="${jmeter.old.version}" arg2="${jmeter.version}"/>
    </condition>
    <echo>Old Version = ${jmeter.old.version}</echo>
    <fail message="jmeter.old.version must be different from current jmeter.version!" if="same"/>
    <property name="dist.name" value="apache-jmeter-${jmeter.old.version}"/>
    <property name="tempfile" value="svnmucc_delete.tmp"/>
    <svnmuccScript type="delete" tempfile="${dist.dir}/${tempfile}"/>
    <antcall target="_svnmucc">
      <param name="message" value="Deleting old release ${dist.name}"/>
    </antcall>
  </target>

  <!--
        Upload jars/poms/sigs to local (/target), snapshots or releases repos; default is local.
        By default, deploys the artifacts to target/deploy under JMeter home.

        Must have Maven 2.2.1 or Maven 3.0.x installed.
        The environment variable M2_HOME must point to a suitable Maven installation (2.2.1+)

        For remote deployment, username/password will need to be set up in the appropriate
        "server" entries in the Maven settings.xml file, i.e. under:

        apache.snapshots.https
        apache.releases.https

        Pre-requisite:
        The jars and poms need to be made available. If this has not already been done as part of
        creating the distribution (e.g. a snapshot release is desired), then invoke the following:

              ant _dist_maven -Djmeter.version=2.9-SNAPSHOT

        For non-SNAPSHOT releases, the jars and poms need to be signed (TODO document how!!)

        Usage:
              ant maven_upload [-DrepoType=snapshots|releases]
  -->
  <target name="maven_upload" description="Upload Maven jars and poms (and sigs if present) to Nexus.">

    <property environment="env"/>
    <!-- According to http://maven.apache.org/download.html#Installation M2_HOME applies to Maven 2.2.1 and 3.0.x -->
    <condition property="maven.present">
      <or>
        <isset property="env.M2_HOME"/>
        <isset property="maven.home"/> <!-- Allow override on command-line -->
      </or>
    </condition>
    <fail unless="${maven.present}"
      message="The environment variable M2_HOME (or property maven.home) must point to a Maven installation"/>

    <property name="maven.home" value="${env.M2_HOME}"/>

    <!-- file repo url -->
    <property name="file.url" value="file:${basedir}/target/deploy"/>

    <!-- Apache Nexus snapshots repo url -->
    <property name="snapshots.url" value="https://repository.apache.org/content/repositories/snapshots"/>
    <!-- Apache Nexus snapshots repo name for servers section of settings.xml -->
    <property name="snapshots.repositoryId" value="apache.snapshots.https"/>

    <!-- Apache Nexus releases repo url -->
    <property name="releases.url" value="https://repository.apache.org/service/local/staging/deploy/maven2"/>
    <!-- Apache Nexus releases repo name for servers section of settings.xml -->
    <property name="releases.repositoryId" value="apache.releases.https"/>

    <property name="repoType" value="file"/>

    <!-- Hack to skip defining files/types/classifiers -->
    <condition property="XX" value="" else="XX">
      <and>
        <available file="${maven.dir}/jorphan.jar.asc"/>
        <available file="${maven.dir}/jorphan.pom.asc"/>
        <!-- Don't upload sigs to snapshots repo (might mislead users) -->
        <not>
          <equals arg1="snapshots" arg2="@repoType"/>
        </not>
      </and>
    </condition>

    <!-- Derived from:
         http://maven.apache.org/ant-tasks/examples/mvn.html#Using_the_Java_Task
    -->
    <macrodef name="deployfile">
      <attribute name="stem" />
      <attribute name="packaging" default="jar"/>
      <attribute name="type" default="${repoType}"/>
      <attribute name="url" default="${@{type}.url}"/>
      <attribute name="repositoryId" default="${@{type}.repositoryId}"/>
      <sequential>
        <java classname="org.codehaus.classworlds.Launcher"
              fork="true"
              dir="${basedir}"
              failonerror="true">
          <jvmarg value="-Xmx512m"/>
          <classpath>
            <fileset dir="${maven.home}/boot">
              <include name="*.jar" />
            </fileset>
            <fileset dir="${maven.home}/lib">
              <include name="*.jar" />
            </fileset>
          </classpath>
          <sysproperty key="classworlds.conf" value="${maven.home}/bin/m2.conf" />
          <sysproperty key="maven.home" value="${maven.home}" />
          <!-- The following property must be defined for Maven 3.3.[123] at least -->
          <sysproperty key="maven.multiModuleProjectDirectory" value="${maven.home}"/>
          <arg value="--batch-mode"/>
          <!--arg value="-X"/-->
          <arg value="-DgeneratePom=false"/>
          <arg value="-Durl=@{url}"/>
          <arg value="-DrepositoryId=@{repositoryId}"/>
          <arg value="-DpomFile=${maven.dir}/@{stem}.pom"/>
          <arg value="-Dpackaging=@{packaging}"/>
          <arg value="-Dfile=${maven.dir}/@{stem}.${packaging}"/>
          <!--
               The XX property is a hack to avoid creating conditional code.
               It will be empty if the sigs exist; if not it will be XX which will be ignored by Maven
          -->
          <!-- If packaging == pom, this will just upload the pom twice. Simpler than trying to conditionalise. -->
          <arg value="-D${XX}files=${maven.dir}/@{stem}.${packaging}.asc,${maven.dir}/@{stem}.pom.asc"/>
          <arg value="-D${XX}types=${packaging}.asc,pom.asc"/>
          <arg value="-D${XX}classifiers=,"/>
          <!-- Need at least version 2.7 of the plugin to upload additional files-->
          <arg value="org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy-file"/>
        </java>
      </sequential>
    </macrodef>


    <deployfile stem="ApacheJMeter_parent" packaging="pom"/>
    <deployfile stem="jorphan"/>
    <deployfile stem="ApacheJMeter_slf4j_logkit"/>
    <deployfile stem="ApacheJMeter"/>
    <deployfile stem="ApacheJMeter_components"/>
    <deployfile stem="ApacheJMeter_config"/>
    <deployfile stem="ApacheJMeter_core"/>
    <deployfile stem="ApacheJMeter_ftp"/>
    <deployfile stem="ApacheJMeter_functions"/>
    <deployfile stem="ApacheJMeter_http"/>
    <deployfile stem="ApacheJMeter_java"/>
    <deployfile stem="ApacheJMeter_jdbc"/>
    <deployfile stem="ApacheJMeter_jms"/>
    <deployfile stem="ApacheJMeter_junit"/>
    <deployfile stem="ApacheJMeter_junit-test"/>
    <deployfile stem="ApacheJMeter_ldap"/>
    <deployfile stem="ApacheJMeter_mail"/>
    <deployfile stem="ApacheJMeter_mongodb"/>
    <deployfile stem="ApacheJMeter_monitors"/>
    <deployfile stem="ApacheJMeter_native"/>
    <deployfile stem="ApacheJMeter_tcp"/>
  </target>

  <!--
  Gump targets.
  There are separate build and test projects for the jmeter module.
  -->
  <!-- Used by project jmeter-cvs -->
  <target name="gump-build"
      depends="_gump_properties,clean,install"
      description="Build JMeter">
    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
    <available file="${velocity.jar}" property="velocity.present"/>
    <!-- No need to create the archives for Gump
    <antcall target="_pack-binaries"/>
    <antcall target="_pack-libraries"/>
    <antcall target="_pack-source"/>
    -->
  </target>

  <!-- Used by project jmeter-test -->
  <target name="gump-test"
      depends="_gump_properties,compile-tests,_test"
      description="Test JMeter in Gump">
    <!-- Show the log file
    <concat>
      <filelist dir="bin" files="jmeter-test.log" />
    </concat>
     -->
  </target>

  <target name="_gump_properties">
    <echo level="info">
 Gump properties for this run
  jmeter.version      = ${jmeter.version}
  gump.run            = ${gump.run}
  date.projectfile    = ${date.projectfile}
  version.projectfile = ${version.projectfile}
 Build file:
  version.build       = ${version.build}
 Java properties:
  target.java.version = ${target.java.version}
  src.java.version    = ${src.java.version}
  optimize            = ${optimize}
  deprecation         = ${deprecation}
  encoding            = ${encoding}
    </echo>
    <echoproperties prefix="ant"/>
    <echoproperties prefix="gump"/>
    <echoproperties prefix="os"/>
    <echoproperties prefix="java"/>

  </target>

  <target name="pack-src" depends="init-version">
    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
    <antcall target="_pack-source"/>
  </target>

  <target name="pack-dist" depends="init-version">
    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
    <antcall target="_pack-binaries"/>
    <antcall target="_pack-libraries"/>
    <antcall target="_pack-javadoc"/>
    <antcall target="_pack-source"/>
  </target>

  <!-- As pack-dist but without javadoc -->
  <target name="pack-nightly" depends="init-version">
    <property name="dist.name" value="apache-jmeter-${jmeter.version}"/>
    <antcall target="_pack-binaries"/>
    <antcall target="_pack-libraries"/>
    <antcall target="_pack-source"/>
  </target>

  <target name="_pack-binaries">
    <property name="pack.name" value="${dist.name}_bin"/>
    <mkdir dir="${dist.dir}"/>
    <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu">
      <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}" defaultexcludes="yes">
        <patternset refid="dist.binaries.native"/>
      </tarfileset>
      <tarfileset dir="." prefix="${dist.name}" excludes="${dist.executables}" defaultexcludes="yes">
        <patternset refid="dist.binaries.non.native"/>
      </tarfileset>
      <tarfileset mode="755" includes="${dist.executables}" dir="." prefix="${dist.name}" defaultexcludes="yes"/>
    </tar>
    <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" />
    <!-- no longer needed -->
    <delete file="${dist.dir}/${pack.name}.tar"/>
    <zip  destfile="${dist.dir}/${pack.name}.zip">
      <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist.binaries.native"/>
      </zipfileset>
      <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist.binaries.non.native"/>
      </zipfileset>
    </zip>
  </target>

  <target name="_pack-libraries">
    <property name="pack.name" value="${dist.name}_lib"/>
    <mkdir dir="${dist.dir}"/>
    <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu">
      <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="external.jars.notices"/>
      </tarfileset>
      <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="external.jars"/>
      </tarfileset>
    </tar>
    <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" />
    <!-- no longer needed -->
    <delete file="${dist.dir}/${pack.name}.tar"/>
    <zip  destfile="${dist.dir}/${pack.name}.zip">
      <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="external.jars.notices"/>
      </zipfileset>
      <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="external.jars"/>
      </zipfileset>
    </zip>
  </target>

  <target name="_pack-javadoc">
    <property name="pack.name" value="${dist.name}_api"/>
    <mkdir dir="${dist.dir}"/>
    <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu">
      <tarfileset includes="${dest.docs.api}" dir="." prefix="${dist.name}" defaultexcludes="yes"/>
    </tar>
    <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" />
    <!-- no longer needed -->
    <delete file="${dist.dir}/${pack.name}.tar"/>
    <zip  destfile="${dist.dir}/${pack.name}.zip">
       <zipfileset includes="${dest.docs.api}" dir="." prefix="${dist.name}" defaultexcludes="yes"/>
    </zip>
  </target>

  <target name="_pack-source">
    <property name="pack.name" value="${dist.name}_src"/>
    <mkdir dir="${dist.dir}"/>
    <tar destfile="${dist.dir}/${pack.name}.tar" longfile="gnu">
      <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist.sources.native"/>
      </tarfileset>
      <tarfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist.sources.non.native"/>
      </tarfileset>
    </tar>
    <gzip destfile="${dist.dir}/${pack.name}.tgz" src="${dist.dir}/${pack.name}.tar" />
    <!-- no longer needed -->
    <delete file="${dist.dir}/${pack.name}.tar"/>
    <zip  destfile="${dist.dir}/${pack.name}.zip">
      <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist.sources.native"/>
      </zipfileset>
      <zipfileset dir="." prefix="${dist.name}" defaultexcludes="yes">
        <patternset refid="dist.sources.non.native"/>
      </zipfileset>
    </zip>
  </target>

  <!-- Create a zip of all resource files for translators -->
  <target name="pack-resources">
    <mkdir dir="${dist.dir}"/>
    <zip  destfile="${dist.dir}/resources.zip">
      <zipfileset dir="." defaultexcludes="yes">
        <patternset excludes="${src.dir}/examples/**" />
        <patternset includes="${src.dir}/**/*Resources.properties" />
        <patternset includes="${src.dir}/**/messages.properties" />
        <patternset includes="${src.dir}/**/i18nedit.properties" />
      </zipfileset>
    </zip>
  </target>

<!--
    Utility target to create MD5 checksums in standard format (with *filename)
    Usage:
    <antcall target="_hash">
        <param name="path" value="archive.jar|zip|gz"/>
    </antcall>
-->

  <target name="_hash" unless="hash.skip">
    <echo message="Creating MD5 for ${path}"/>
    <basename property="_base" file="${path}"/>
    <checksum algorithm="MD5" file="${path}" property="md5"/>
    <echo message="${md5} *${_base}" file="${path}.md5"/>
    <echo message="Creating SHA for ${path}"/>
    <checksum algorithm="SHA" file="${path}" property="sha"/>
    <echo message="${sha} *${_base}" file="${path}.sha"/>
  </target>

  <!--
  Clean-docs and clean-apidocs can be used to empty the docs or docs/api directories.
  This should be done before regenerating the documents for a release so that any obsolete files are detected.
  -->
  <target name="clean-docs">
    <delete>
      <fileset dir="${dest.docs}" excludes=".svn/** api/**"/>
    </delete>
  </target>

  <!-- Use this before running docs-print to ensure image files are synchronised -->
  <target name="clean-docs-images">
    <delete failonerror="false">
      <fileset dir="${dest.docs}/images" excludes=".svn/**"/>
    </delete>
  </target>

  <target name="clean-apidocs">
    <delete failonerror="false">
      <fileset dir="${dest.docs.api}" excludes=".svn/**" />
    </delete>
  </target>

  <target name="clean" description="Clean up to force a build from source.">
    <!-- Unfortunately Ant reports failure if a directory does not exist -->
    <delete quiet="false" failonerror="false">
      <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
      <fileset dir="${lib.dir}" includes="jorphan.jar"/>
      <fileset dir="${lib.dir}" includes="ApacheJMeter_slf4j_logkit.jar"/>
      <fileset dir="${lib.dir}" includes="bshclient.jar"/>
      <fileset dir="${dest.jar}" includes="*.jar"/>
      <fileset dir="${build.dir}"/>
      <fileset dir="${dest.printable_docs}"/>
      <fileset dir="${dist.dir}"/>
    </delete>
  </target>

  <target name="clean-dist" description="Clean up dist directory.">
    <delete quiet="true">
      <fileset dir="${dist.dir}"/>
    </delete>
  </target>

  <target name="docs-api" description="Generate the API documentation.">
    <available property="jdk1.7+" classname="java.lang.AutoCloseable"/>
    <fail unless="jdk1.7+"
          message="Must use Java 7 or later for creating the Javadocs"/>
    <tstamp>
      <!-- Used to ensure end-year is up to date -->
      <format property="THISYEAR" pattern="yyyy"/>
    </tstamp>

    <!-- JMeter Javadoc version (own variable is used so can be overriden independently) -->
    <property name="docversion" value="${jmeter.version}"/>

    <mkdir dir="${dest.docs.api}"/>
    <delete quiet="true">
      <fileset dir="${dest.docs.api}" includes="**/*.html"/>
    </delete>
    <echo level="info">Updating overview to ${docversion}</echo>
    <replaceregexp match="version [^\s]+"
                 encoding="${encoding}"
                 replace="version ${docversion}"
                 flags="g" byline="true">
      <fileset dir="${src.docs}" includes="overview.html" />
    </replaceregexp>
    <javadoc
      sourcepathref="srcpaths"
      overview="${src.docs}/overview.html"
      additionalparam="-breakiterator -notimestamp"
      destdir="${dest.docs.api}"
      encoding="${javadoc.encoding}"
      verbose="false"
      protected="yes"
      version="yes"
      doctitle="Apache JMeter API"
      windowtitle="Apache JMeter API"
      header="&lt;b&gt;Apache JMeter&lt;/b&gt;"
      bottom="Copyright &amp;#xA9; 1998-${THISYEAR} Apache Software Foundation. All Rights Reserved."
      packagenames="org.apache.jmeter.*,org.apache.jorphan.*"
      excludepackagenames="org.apache.jorphan.timer">
      <classpath refid="classpath"/>
      <link href="http://docs.oracle.com/javase/7/docs/api/"/>
    </javadoc>
    <!-- No need for Javadoc patch (CVE-2013-1571) now we are using Java 7 minimum -->
  </target>

  <!--
    Run Doccheck: See http://java.sun.com/j2se/javadoc/doccheck/docs/DocCheck.html
    and http://java.sun.com/j2se/javadoc/doccheck/
    Download the doclet, and put the jar in lib/opt.
    Output is in reports/ directory
  -->
  <target name="docs-check">
    <javadoc sourcepathref="srcpaths"
             destdir="reports"
             docletpath="${lib.opt}/doccheck.jar"
             packagenames="org.apache.jmeter.*,org.apache.jorphan.*"
             excludepackagenames="org.apache.jmeter.util.keystore,org.apache.jorphan.timer">
      <classpath refid="classpath"/>
      <doclet name="com.sun.tools.doclets.doccheck.DocCheck">
        <!--
            -execDepth: 1=org.* 2=org.apache.* 3+=org.apache.jmeter.*
            -evident does not seem to work
         -->
        <param name="-execDepth" value="3"/>
        <param name="-evident" value="4"/>
      </doclet>
    </javadoc>
  </target>

  <target name="docs-site" depends="init-docs" description="Generate browsable HTML documentation in web-site format.">
    <mkdir dir="${dest.docs}" />
    <!-- The extending pages are rather out of date (and not linked from elsewhere) -->
    <xslt style="xdocs/stylesheets/website-style.xsl" basedir="${src.docs}" destdir="${dest.docs}"
      force="${docs.force}" excludes="extending.xml" includes="*.xml">
      <param name="relative-path" expression="." />
      <param name="subdir" expression="" />
      <param name="year" expression="${year}" />
    </xslt>
    <xslt style="xdocs/stylesheets/website-style.xsl" basedir="${src.docs}/usermanual" destdir="${dest.docs}/usermanual"
      force="${docs.force}" includes="*.xml">
      <param name="relative-path" expression=".." />
      <param name="subdir" expression="usermanual" />
      <param name="year" expression="${year}" />
    </xslt>
    <xslt style="xdocs/stylesheets/website-style.xsl" basedir="${src.docs}/localising" destdir="${dest.docs}/localising"
      force="${docs.force}" includes="*.xml">
      <param name="relative-path" expression=".." />
      <param name="subdir" expression="usermanual" />
      <param name="year" expression="${year}" />
    </xslt>
    <copy todir="${dest.docs}/images" overwrite="${docs.force}">
      <fileset dir="${src.images}" />
    </copy>
    <copy todir="${dest.docs}/css" overwrite="${docs.force}">
      <fileset dir="${src.css}"/>
    </copy>
    <!--
    Note: it's vital that the Javadoc files are excluded from any fixes applied here.
    Any fixes to Javadoc files need to be done in the docs-api target only.
    Otherwise the output from the build will depend on which is done first.
    -->
    <echo level="info">Fixing EOL</echo>
    <fixcrlf encoding="utf-8" srcdir="${dest.docs}/" includes="**/*.html" excludes="api/**" fixlast="false"/>
    <echo level="info">Removing unnecessary &lt;/br> tags</echo>
    <replace encoding="utf-8" dir="${dest.docs}/" includes="**/*.html" excludes="api/**" token="&lt;/br>" value=""/>
    <copy todir="${dest.docs}/demos">
      <fileset dir="${src.demos}"/>
    </copy>
    <copy todir="${dest.docs}/usermanual">
      <fileset file="${src.docs}/usermanual/*.pdf"/>
    </copy>
    <copy todir="${dest.docs}/extending">
      <fileset file="${src.docs}/extending/jmeter_tutorial.pdf"/>
    </copy>
    <copy todir="${dest.docs}/">
      <fileset file="${src.docs}/download_jmeter.cgi"/>
    </copy>
  </target>

  <target name="docs-printable" depends="init-docs" if="AnakiaTask.present" description="Generate printable HTML documentation.">
    <taskdef name="anakia" classpathref="anakia.classpath" classname="org.apache.velocity.anakia.AnakiaTask"/>
    <!-- The extending pages are rather out of date (and not linked from elsewhere) -->
    <anakia basedir="${src.docs}" destdir="${dest.printable_docs}/" extension=".html" style="${eclipse.anakia}/xdocs/stylesheets/site_printable.vsl" projectFile="./stylesheets/printable_project.xml"
        excludes="**/stylesheets/** extending.xml extending/*.xml"
        includes="**/*.xml" lastModifiedCheck="${anakia.lastModifiedCheck}" velocityPropertiesFile="${src.docs}/velocity.properties"/>
    <echo level="info">Fixing EOL</echo>
    <fixcrlf encoding="utf-8" srcdir="${dest.printable_docs}/" includes="**/*.html" fixlast="false"/>
    <echo level="info">Removing unnecessary &lt;/br> tags</echo>
    <replace encoding="utf-8" dir="${dest.printable_docs}/" includes="**/*.html" token="&lt;/br>" value=""/>
    <!--
    Share images with non-printable version
    Means printable version won't work on web-site
    -->
    <echo level="info">Copying files</echo>
    <copy todir="${dest.docs}/css">
      <fileset dir="${src.css}"/>
    </copy>
    <copy todir="${dest.docs}/images">
      <fileset dir="${src.images}" />
    </copy>
    <copy todir="${dest.printable_docs}/demos">
      <fileset dir="${src.demos}"/>
    </copy>
    <copy todir="${dest.printable_docs}/usermanual">
        <fileset file="${src.docs}/usermanual/*.pdf"/>
    </copy>
    <copy todir="${dest.printable_docs}/extending">
      <fileset file="${src.docs}/extending/jmeter_tutorial.pdf"/>
    </copy>
  </target>

  <target name="test" depends="compile-tests,_test,_allbatchtests"
    description="Run tests (use -Djava.awt.headless=true on systems without graphic displays)"/>

  <target name="test-both" depends="test-headless,test-headed"/>

  <target name="test-headless" depends="compile-tests">
    <antcall target="_test">
      <param name="test.headless" value="true"/>
    </antcall>
  </target>

  <target name="test-headed" depends="compile-tests">
    <antcall target="_test">
      <param name="test.headless" value="false"/>
    </antcall>
  </target>

  <target name="batchtestserver" description="Run the batch test using client-server mode">
    <property name="batchtestserver.out" location="${basedir}/bin"/>
    <property name="batchtestserver.log" value="BatchTestServer.log"/>
    <tstamp>
      <!-- Use variable port to help avoid clashes on CI servers -->
      <format property="rmi_port" pattern="1mmss"/>
    </tstamp>
    <parallel>
      <daemons>
        <java taskname="server" classname="org.apache.jmeter.NewDriver" fork="yes" dir="${batchtestserver.out}">
          <classpath>
            <fileset dir="${dest.jar.jmeter}" includes="*.jar"/>
            <fileset dir="${dest.jar}" includes="*.jar"/>
            <path refid="classpath"/>
          </classpath>
          <sysproperty key="java.awt.headless" value="true"/>
          <!-- Bug 59723 -->
          <!-- quieten the logging; this has to be done first -->
          <arg value="-ptestfiles/jmeter-batch.properties"/>
          <!-- pick up default properties -->
          <arg value="-qjmeter.properties"/>
          <!-- reset the logging and other parameters -->
          <arg value="-qtestfiles/jmeter-batch.properties"/>
          <arg value="-j"/>
          <arg value="${batchtestserver.out}/${batchtestserver.log}"/>
          <arg value="-Dserver_port=${rmi_port}"/>
          <arg value="-s"/>
          <arg value="-Jserver.exitaftertest=true"/>
        </java>
      </daemons>
      <sequential>
        <sleep seconds="1"/>
        <antcall target="batchtest">
          <param name="remote" value="-Rlocalhost:${rmi_port}"/>
          <param name="taskname" value="client"/>
          <!-- Default the test name so we can override with a parameter -->
        </antcall>
      </sequential>
    </parallel>
    <!-- Show the log file -->
    <concat>
      <filelist dir="${batchtestserver.out}" files="${batchtestserver.log}" />
    </concat>

    <local         name="BatchTestLocalServer.len"/>
    <condition property="BatchTestLocalServer.len">
      <length file="${batchtestserver.out}/${batchtestserver.log}" when="equal" length="0" />
    </condition>
    <fail unless="BatchTestLocalServer.len">
        Error detected in server log file. See above.
    </fail>

    <delete>
      <fileset dir="${batchtestserver.out}">
        <include name="${batchtestserver.log}"/>
      </fileset>
     </delete>
  </target>

  <target name="batchtest" description="Run the batch test and compare output files">

    <!-- will be overwritten by antcall paramaters -->
    <property name="taskname" value="jmeter"/>
    <property name="remote" value="-X"/>
    <property name="batchtest.inp" location="${basedir}/bin/testfiles"/>
    <property name="batchtest.out" location="${basedir}/bin"/>
    <property name="batchtest.name" value="BatchTestLocal"/>
    <!--
         Allow variable to be set on the command line
         Cannot omit value because that causes a warning message
     -->
    <property name="batchtest.variable" value="dummy"/>
    <property name="batchtest.value" value="dummy"/>

    <!-- Fix the EOL in case the file was derived from the "wrong" archive type -->
    <fixcrlf encoding="${encoding}" srcdir="${batchtest.inp}" includes="${batchtest.name}.csv"/>

    <echo level="info" message="Starting ${batchtest.name} using ${remote}"/>

    <macrodef name="deleteworkfiles">
      <sequential>
        <delete>
          <fileset dir="${batchtest.out}">
            <include name="${batchtest.name}.csv"/>
            <include name="${batchtest.name}.xml"/>
            <include name="${batchtest.name}.log"/>
            <include name="${batchtest.name}.jtl"/>
          </fileset>
        </delete>
      </sequential>
    </macrodef>

    <macrodef name="checkfile">
      <attribute name="type" default=""/>
      <attribute name="file"/>
      <sequential>
        <local name="found"/>
        <!--echo>Looking for @{file}</echo-->
        <available property="found" file="@{file}"/>
        <fail message="Cannot find @{type} file @{file}" unless="found"/>
      </sequential>
    </macrodef>

    <checkfile type="input" file="${batchtest.inp}${file.separator}${batchtest.name}.csv"/>
    <checkfile type="input" file="${batchtest.inp}${file.separator}${batchtest.name}.xml"/>

    <deleteworkfiles/>

    <java taskname="${taskname}" classname="org.apache.jmeter.NewDriver" fork="yes" dir="${basedir}/bin">
      <classpath>
        <fileset dir="${dest.jar.jmeter}" includes="*.jar"/>
        <fileset dir="${dest.jar}" includes="*.jar"/>
        <path refid="classpath"/>
      </classpath>
      <!-- Detect if non-GUI runs OK headless by forcing it to try using non-headless mode -->
      <sysproperty key="user.language" value="en"/>
      <sysproperty key="user.region" value="US"/>
      <sysproperty key="java.awt.headless" value="false"/>
      <!-- Bug 59723 -->
      <!-- quieten the logging; this has to be done first -->
      <arg value="-ptestfiles/jmeter-batch.properties"/>
      <!-- pick up default properties -->
      <arg value="-qjmeter.properties"/>
      <!-- reset the logging and other parameters -->
      <arg value="-qtestfiles/jmeter-batch.properties"/>
      <arg value="-n"/>
      <arg value="-ttestfiles/${batchtest.name}.jmx"/>
      <arg value="-j"/>
      <arg value="${batchtest.name}.log"/>
      <arg value="-l"/>
      <arg value="${batchtest.name}.jtl"/>
      <arg value="${remote}"/>
      <!-- Check properties can be passed to local/remote tests -->
      <arg value="-Jmodule=Module"/>
      <arg value="-Gmodule=Module"/>
      <!-- Check property can be used for filenames in local/remote tests (no need to defined as -G) -->
      <arg value="-JCSVFILE=${batchtest.name}.csv"/>
      <arg value="-J${batchtest.variable}=${batchtest.value}"/>
    </java>

    <!-- Show the log file -->
    <concat>
      <filelist dir="${batchtest.out}" files="${batchtest.name}.log" />
    </concat>

    <checkfile type="output" file="${batchtest.out}${file.separator}${batchtest.name}.csv"/>
    <checkfile type="output" file="${batchtest.out}${file.separator}${batchtest.name}.xml"/>
    <checkfile type="output" file="${batchtest.out}${file.separator}${batchtest.name}.jtl"/>

    <local         name="BatchTestLocal.csv.OK"/>
    <local         name="file1.csv"/>
    <local         name="file2.csv"/>

    <loadfile property="file1.csv" srcFile="${batchtest.inp}/${batchtest.name}.csv"/>
    <loadfile property="file2.csv" srcFile="${batchtest.out}/${batchtest.name}.csv"/>
    <condition property="BatchTestLocal.csv.OK">
      <filesmatch file1="${batchtest.inp}/${batchtest.name}.csv" file2="${batchtest.out}/${batchtest.name}.csv"/>
    </condition>
    <fail unless="BatchTestLocal.csv.OK">
        CSV Files are not identical.
        ${batchtest.inp}${file.separator}${batchtest.name}.csv
        ${file1.csv}
        ${batchtest.out}${file.separator}${batchtest.name}.csv
        ${file2.csv}
    </fail>

    <local         name="BatchTestLocal.xml.OK"/>
    <local         name="file1.xml"/>
    <local         name="file2.xml"/>
    <loadfile property="file1.xml" srcFile="${batchtest.inp}/${batchtest.name}.xml"/>
    <loadfile property="file2.xml" srcFile="${batchtest.out}/${batchtest.name}.xml"/>
    <condition property="BatchTestLocal.xml.OK">
     <filesmatch file1="${batchtest.inp}/${batchtest.name}.xml" file2="${batchtest.out}/${batchtest.name}.xml"/>
    </condition>
    <fail unless="BatchTestLocal.xml.OK">
        XML Files are not identical.
        ${batchtest.inp}${file.separator}${batchtest.name}.xml
        ${file1.xml}
        ${batchtest.out}${file.separator}${batchtest.name}.xml
        ${file2.xml}
    </fail>

    <echo level="info">${batchtest.name} output files compared OK</echo>

    <local         name="BatchTestLocal.len"/>
    <condition property="BatchTestLocal.len">
      <length file="${batchtest.out}/${batchtest.name}.log" when="equal" length="0" />
    </condition>
    <fail unless="BatchTestLocal.len">
        Error detected in log file. See above.
    </fail>

    <deleteworkfiles/>

  </target>

  <!-- Additional test scripts -->
  <target name="batch_scripts">
    <antcall target="batchtest">
      <param name="batchtest.name" value="HTMLParserTestFile_2"/>
    </antcall>
    <antcall target="batchtest">
      <!--  Using the same module controller name in command line mode causes NPE -->
      <param name="batchtest.name" value="Bug47165"/>
    </antcall>
    <antcall target="batchtest">
      <!--  variable in IPSource failed HTTP request if "Concurrent Pool Size" is enabled -->
      <!-- N.B. requires access to jmeter.apache.org -->
      <param name="batchtest.name" value="Bug52310"/>
    </antcall>
    <antcall target="batchtest">
      <!-- Option Start Next Loop in Thread Group does not mark parent Transaction Sampler in error when an error occurs -->
      <param name="batchtest.name" value="Bug52968"/>
    </antcall>

    <antcall target="batchtest">
      <!-- IncludeController : NullPointerException loading script in non-GUI mode if Includers use same element name -->
      <param name="batchtest.name" value="Bug50898"/>
    </antcall>

    <antcall target="batchtest">
      <!-- Foreach works incorrectly with indexes on subsequent iterations -->
      <param name="batchtest.name" value="Bug56243"/>
    </antcall>

    <antcall target="batchtest">
      <!-- ArrayIndexOutOfBoundsException if "sample_variable" is set in client but not server -->
      <!-- This is unaffected by the bug; it just checks the script works OK in local mode -->
      <param name="batchtest.name" value="Bug54685"/>
      <param name="batchtest.variable" value="sample_variables"/>
      <param name="batchtest.value" value="REFERENCE,JSESSIONID"/>
    </antcall>

    <antcall target="batchtest">
      <!--   StackOverflowError with ModuleController in Non-GUI mode if its name is the same as the target node -->
      <param name="batchtest.name" value="Bug55375"/>
    </antcall>

    <antcall target="batchtestserver">
      <!-- ArrayIndexOutOfBoundsException if "sample_variable" is set in client but not server -->
      <!-- This is the actual test -->
      <param name="batchtest.name" value="Bug54685"/>
      <param name="batchtest.variable" value="sample_variables"/>
      <param name="batchtest.value" value="REFERENCE,JSESSIONID"/>
    </antcall>

    <antcall target="batchtest">
      <param name="batchtest.name" value="Bug56811"/>
    </antcall>

    <antcall target="batchtest">
      <param name="batchtest.name" value="TEST_HTTPS"/>
    </antcall>
  </target>

  <!-- Run all batch tests; used by test target -->
  <target name="_allbatchtests" depends="batchtest,batchtestserver,batch_scripts">
  </target>

   <!-- Generic test target, not intended to be called directly -->
   <target name="_test" depends="package">
   <!--
   The property java.awt.headless is not automatically passed on,
   because the tests are run in a separate JVM from the build.

   It is assumed that Gump sets java.awt.headless if required.

   Set test.headless from the java.awt property, if that
   is defined, otherwise it us set to "".
   N.B. if test.headless is already set, it will not be changed
   This allows the property to be over-ridden by test-headless etc.
   -->
    <condition property="test.headless" value="${java.awt.headless}">
      <isset property="java.awt.headless"/>
    </condition>
     <!-- make sure test.headless is set to something -->
     <condition property="test.headless" value="">
      <not><isset property="java.awt.headless"/></not>
     </condition>

   <!-- set build.test.gump to build.test if not already set -->
    <condition property="build.test.gump" value="${build.test}">
      <not><isset property="build.test.gump"/></not>
    </condition>
    <echo level="info">
   gump.run = ${gump.run}
   java.awt.headless = ${java.awt.headless}
   test.headless = ${test.headless}
   user.dir = ${user.dir}
   basedir = ${basedir}
   test dir = ${build.test}
   test dir gump = ${build.test.gump}
   testsaveservice.saveout = ${testsaveservice.saveout}
   test.encoding = ${test.encoding}
    </echo>
    <delete quiet="true">
      <fileset dir="${basedir}/bin/testfiles" includes="*.jmx.out"/>
    </delete>
    <!-- fork="yes" is required or dir attribute is ignored -->
    <java classname="org.apache.jorphan.test.AllTests" fork="yes" failonerror="true" dir="${basedir}/bin">
      <classpath>
        <fileset dir="${dest.jar.jmeter}" includes="ApacheJMeter.jar"/>
        <fileset dir="${dest.jar}" includes="*.jar"/>
        <pathelement location="${build.test}"/>
        <pathelement location="${build.test-res}"/>
        <path refid="classpath"/>
      </classpath>
      <jvmarg value="-server"/>
      <jvmarg value="-Dfile.encoding=${test.encoding}"/>
      <sysproperty key="java.awt.headless" value="${test.headless}"/>
      <sysproperty key="testsaveservice.saveout" value="${testsaveservice.saveout}" />
      <sysproperty key="gump.run" value="${gump.run}" />
      <arg value="${build.test}"/>
      <arg value="${basedir}/bin/jmeter.properties"/>
      <arg value="org.apache.jmeter.util.JMeterUtils"/>
    </java>
  </target>

  <!--
    In order to run JUnit, both junit.jar and optional.jar need to be on the Ant classpath
    optional.jar is normally found in ANT_HOME/lib
  -->
  <target name="junit"  depends="compile-tests"
    description="Run individual JUnit test (-Dtest.case=org.apache.jorphan.test.AllTests) (-Dtest.format=plain) (-Dtest.showoutput=true)">
    <mkdir dir="reports"/>
    <property name="test.format" value="plain"/>
    <property name="test.case" value="org.apache.jorphan.test.AllTests"/>
    <property name="test.showoutput" value="false"/>
    <junit fork="true"
           dir="${basedir}/bin"
           showoutput="${test.showoutput}"
           printsummary="on">
      <formatter type="${test.format}" usefile="yes"/>
      <formatter type="xml"/>
      <jvmarg value="-Dfile.encoding=${test.encoding}"/>
      <!-- Allow headless to be passed in -->
      <jvmarg value="-Djava.awt.headless=${java.awt.headless}"/>
      <classpath>
        <fileset dir="${dest.jar}" includes="*.jar"/>
        <pathelement location="${build.test}"/>
        <path refid="classpath"/>
      </classpath>
      <test name="${test.case}" todir="reports"/>
    </junit>
  </target>

  <!-- Utility target to collate reports -->
  <target name="junitreport">
    <mkdir dir="reports"/>
    <junitreport todir="reports">
      <fileset dir="reports">
        <include name="TEST-*.xml"/>
      </fileset>
      <report format="frames" todir="reports"/>
    </junitreport>
  </target>

  <target name="generator_jar" depends="compile-tests" description="Create the test tree generator jar">
    <jar jarfile="${dest.jar}/ApacheJMeter_generator.jar"
         manifest="${build.dir}/MANIFEST_BIN.MF">
      <zipfileset file="${resources.meta-inf}/default.notice"
         fullpath="META-INF/NOTICE" />
      <zipfileset file="${resources.meta-inf}/default.license"
         fullpath="META-INF/LICENSE" />
      <fileset dir="${build.test}" includes="**/GenerateTreeGui*.class"/>
    </jar>
  </target>

  <target name="svnCheck" description="Use SVN to get the current revision" unless="disable-svnCheck">
    <exec executable="svn" logerror="true" outputproperty="svn.exec.result" failonerror="true" failifexecutionfails="true">
      <arg line="info"/>
    </exec>
    <loadresource property="svn.revision">
      <string value="${svn.exec.result}"/>
      <filterchain>
        <linecontains>
          <contains value="Last Changed Rev: "/>
        </linecontains>
        <tokenfilter>
            <!-- Remove all but the revision number -->
            <replaceregex pattern=".*: " replace=""/>
        </tokenfilter>
        <striplinebreaks/>
      </filterchain>
    </loadresource>
    <echo level="info" message="svn.revision=${svn.revision}"/>
  </target>

  <!-- Macro is needed to be able to perform indirect evaluation of property names -->
  <macrodef name="process_jarfile">
    <attribute name="jarname"/>
    <attribute name="dest.dir" default="${lib.dir}"/>
    <sequential>
      <!-- Call all possible targets; these are only executed if the appropriate property is set -->
      <antcall target="_check_exists">
        <param name="file" value="@{dest.dir}/${@{jarname}.jar}"/>
        <param name="loc" value="${@{jarname}.loc}"/>
        <param name="jar" value="${@{jarname}.jar}"/>
        <param name="path" value="@{dest.dir}"/>
        <param name="md5"  value="${@{jarname}.md5}"/>
        <param name="_checkMD5" value="true"/>
      </antcall>
      <antcall target="_check_jarfile">
        <param name="loc" value="${@{jarname}.loc}"/>
        <param name="jar" value="${@{jarname}.jar}"/>
        <param name="path" value="@{dest.dir}"/>
        <param name="md5"  value="${@{jarname}.md5}"/>
        <param name="_checkMD5" value="true"/>
        <param name="zip" value="${@{jarname}.zip}"/>
        <param name="ent" value="${@{jarname}.ent}"/>
        <param name="zipprop" value="@{jarname}.zip"/>
      </antcall>
    </sequential>
  </macrodef>

  <!-- Check if jarfile exists, and set properties for calling zip or jar download -->
  <target name="_check_jarfile" if="_get_file">
    <!-- Check if file exists -->
    <fail message="Error in build file or calling sequence" if="file.exists"/>
    <echo level="info">Checking ${jar}</echo>
    <available file="${path}/${jar}" property="file.exists"/>
    <condition property="_get_zipfile">
      <isset property="${zipprop}"/>
    </condition>
    <condition property="_get_jarfile">
      <not>
        <isset property="${zipprop}"/>
      </not>
    </condition>
    <!-- Delete all but the desired version of the file -->
    <loadresource property="wildCard">
      <propertyresource name="jar"/>
      <filterchain>
        <tokenfilter>
          <filetokenizer/>
          <replaceregex pattern="-\d+\.\d+.*(\.jar|\.zip)" replace="-*\1"/>
        </tokenfilter>
      </filterchain>
    </loadresource>
    <echo level="info" message="Deleting ${wildCard} (excluding ${jar})"/>
    <delete verbose="true">
      <!-- Unfortunately commons-jexl jars don't have unique prefixes -->
      <fileset dir="${path}" includes="${wildCard}" excludes="${jar} commons-jexl-*"/>
    </delete>
    <!-- Emulate conditional execution; targets use if/unless to suppress execution -->
    <antcall target="_get_jarfile"/>
    <antcall target="_get_zipfile"/>
  </target>

  <!-- Get a zip file and unpack it -->
  <target name="_get_zipfile" if="_get_zipfile" unless="file.exists">
    <get src="${loc}/${zip}"
         dest="${build.dir}/${zip}"
         usetimestamp="true" ignoreerrors="false"/>
    <unzip dest="${build.dir}" src="${build.dir}/${zip}">
      <patternset>
        <include name="**/${ent}"/>
      </patternset>
      <!-- This requires Ant 1.7.0 or later -->
      <mapper type="flatten"/>
    </unzip>
    <antcall target="_checkMD5">
      <param name="file" value="${ent}"/>
      <param name="path" value="${build.dir}"/>
      <param name="md5"  value="${md5}"/>
    </antcall>
    <move preservelastmodified="true" overwrite="true"
          file="${build.dir}/${ent}" tofile="${path}/${jar}" verbose="true"/>
  </target>

  <!-- Download a jar file and check its hash; if correct, move to correct directory -->
  <target name="_get_jarfile" if="_get_jarfile" unless="file.exists">
    <echo message="Fetching: ${path}/${jar}" level="info"/>
    <get src="${loc}/${jar}"
         dest="${build.dir}/${jar}"
         usetimestamp="false" ignoreerrors="false"/>
    <antcall target="_checkMD5">
      <param name="file" value="${jar}"/>
      <param name="path" value="${build.dir}"/>
      <param name="md5"  value="${md5}"/>
    </antcall>
    <move preservelastmodified="true" overwrite="true"
          file="${build.dir}/${jar}" tofile="${path}/${jar}" verbose="true"/>
  </target>

  <!-- Ant subroutine, required to localise MD5OK property -->
  <target name="_checkMD5" if="_checkMD5">
    <!--
    @param path - location of file
    @param file - file name
    -->
    <checksum algorithm="MD5" file="${path}/${file}" property="MD5"/>
    <condition property="MD5OK">
      <equals arg1="${MD5}" arg2="${md5}" casesensitive="false"/>
    </condition>
    <fail unless="MD5OK">Bad Checksum: for ${file}
        expected ${md5}
        actual   ${MD5}</fail>
    <echo level="info" message="Checksum OK: ${file}"/>
  </target>

  <!--
    Generic target to process all external jars.
    The "process_jarfile" macro resolves the properties that begin with the jarname
    and calls all the possible targets. The targets use "if" and "unless" to provide
    conditional execution (it would be a lot easier if antcall supported if/unless).
  -->
  <target name="_process_all_jars">
    <process_jarfile jarname="accessors-smart"/>
    <process_jarfile jarname="apache-bsf"/>
    <process_jarfile jarname="asm"/>
    <process_jarfile jarname="avalon-framework"/>
    <process_jarfile jarname="bcmail" dest.dir="${lib.api}"/>
    <process_jarfile jarname="bcprov" dest.dir="${lib.api}"/>
    <process_jarfile jarname="bcpkix" dest.dir="${lib.api}"/>
    <process_jarfile jarname="beanshell"/>
    <process_jarfile jarname="commons-codec"/>
    <process_jarfile jarname="commons-collections"/>
    <process_jarfile jarname="commons-dbcp2"/>
    <process_jarfile jarname="commons-httpclient"/>
    <process_jarfile jarname="commons-io"/>
    <process_jarfile jarname="commons-jexl"/>
    <process_jarfile jarname="commons-jexl2"/>
    <process_jarfile jarname="commons-jexl3"/>
    <process_jarfile jarname="commons-lang3"/>
    <process_jarfile jarname="commons-logging"/>
    <process_jarfile jarname="commons-math3"/>
    <process_jarfile jarname="commons-net"/>
    <process_jarfile jarname="commons-pool2"/>
    <process_jarfile jarname="dnsjava"/>
    <process_jarfile jarname="excalibur-logger"/>
    <process_jarfile jarname="freemarker"/>
    <process_jarfile jarname="groovy-all"/>
    <process_jarfile jarname="hamcrest-core"/>
    <process_jarfile jarname="httpclient"/>
    <process_jarfile jarname="httpcore"/>
    <process_jarfile jarname="httpmime"/>
    <process_jarfile jarname="jakarta-oro"/>
    <process_jarfile jarname="javamail"/>
    <process_jarfile jarname="jcharts"/>
    <process_jarfile jarname="jdom" dest.dir="${lib.doc}"/>
    <process_jarfile jarname="jms"/>
    <process_jarfile jarname="rhino"/>
    <process_jarfile jarname="jodd-core"/>
    <process_jarfile jarname="jodd-lagarto"/>
    <process_jarfile jarname="jodd-log"/>
    <process_jarfile jarname="jodd-props"/>
    <process_jarfile jarname="json-path"/>
    <process_jarfile jarname="json-smart"/>
    <process_jarfile jarname="jsoup"/>
    <process_jarfile jarname="junit"/>
    <process_jarfile jarname="logkit"/>
    <process_jarfile jarname="mongo-java-driver"/>
    <process_jarfile jarname="ph-css" />
    <process_jarfile jarname="ph-commons" />
    <process_jarfile jarname="rsyntaxtextarea"/>
    <process_jarfile jarname="serializer"/>
    <process_jarfile jarname="slf4j-api"/>
    <process_jarfile jarname="jtidy"/>
    <process_jarfile jarname="tika-core"/>
    <process_jarfile jarname="tika-parsers"/>
    <process_jarfile jarname="velocity"   dest.dir="${lib.doc}"/>
    <process_jarfile jarname="commons-lang" dest.dir="${lib.doc}"/>
    <process_jarfile jarname="xalan"/>
    <process_jarfile jarname="xerces"/>
    <process_jarfile jarname="xml-apis"/>
    <process_jarfile jarname="xmlgraphics-commons"/>
    <process_jarfile jarname="xmlpull"/>
    <process_jarfile jarname="xpp3"/>
    <process_jarfile jarname="xstream"/>
  </target>

  <target name="_process_doc_jars">
    <process_jarfile jarname="commons-collections"/>
    <process_jarfile jarname="commons-lang"   dest.dir="${lib.doc}"/>
    <process_jarfile jarname="jdom"           dest.dir="${lib.doc}"/>
    <process_jarfile jarname="velocity"   dest.dir="${lib.doc}"/>
  </target>

  <target name="_process_checkstyle_jars">
    <process_jarfile jarname="checkstyle-all"    dest.dir="${lib.opt}"/>
  </target>

  <target name="_process_rat_jars">
    <process_jarfile jarname="rat"        dest.dir="${lib.opt}"/>
    <process_jarfile jarname="rat-tasks"  dest.dir="${lib.opt}"/>
  </target>

  <!-- Update a jar (clean, download, package in one shot.-->
  <target name="update_jar" depends="clean, download_jars, package">
  </target>


  <!-- Download all missing jars.-->
  <target name="download_jars" description="Download any missing jar files">
    <!-- build.dir may be needed as a temporary work area -->
    <mkdir dir="${build.dir}" />
    <!-- The directories must exist otherwise the build fails when deleting previous versions -->
    <mkdir dir="${lib.api}" />
    <mkdir dir="${lib.doc}" />
    <delete verbose="true">
      <!-- bcprov jars no longer have the same prefix so the wildcard delete does not work; drop any old ones -->
      <fileset dir="${lib.api}" includes="bcmail-jdk15-*.jar bcprov-jdk15-*.jar"/>
      <!-- tidy up unused Excalibur jars -->
      <fileset dir="${lib.dir}" includes="htmllexer-2.1.jar htmlparser-2.1.jar excalibur-datasource-2.1.jar excalibur-instrument-1.0.jar excalibur-pool-api-2.1.jar excalibur-pool-impl-2.1.jar excalibur-pool-instrumented-2.1.jar"/>
      <!-- jdom jar has moved; drop the old one -->
      <fileset dir="${lib.dir}" includes="jdom-1.1.3.jar"/>
      <!-- Drop slf4j-nop implementation -->
      <fileset dir="${lib.dir}" includes="slf4j-nop-1.7.13.jar"/>
    </delete>
    <antcall target="_process_all_jars">
        <param name="_get_file" value="true"/>
    </antcall>
  </target>

  <target name="download_doc_jars">
    <!-- build.dir may be needed as a temporary work area -->
    <mkdir dir="${build.dir}" />
    <antcall target="_process_doc_jars">
      <param name="_get_file" value="true"/>
    </antcall>
  </target>

  <target name="download_checkstyle">
    <!-- build.dir may be needed as a temporary work area -->
   <mkdir dir="${build.dir}" />
    <antcall target="_process_checkstyle_jars">
      <param name="_get_file" value="true"/>
    </antcall>
  </target>

  <target name="download_rat">
    <!-- build.dir may be needed as a temporary work area -->
   <mkdir dir="${build.dir}" />
    <antcall target="_process_rat_jars">
      <param name="_get_file" value="true"/>
    </antcall>
  </target>

  <target name="_check_exists" if="_check_exists">
    <fail message="Invalid call sequence - file.exists should not be defined" if="file.exists"/>
    <available file="${file}" property="file.exists"/>
    <fail message="Could not find file ${file}" unless="file.exists"/>
    <antcall target="_checkMD5">
      <param name="file" value="${jar}"/>
      <param name="path" value="${path}"/>
      <param name="md5"  value="${md5}"/>
    </antcall>
    <!--echo level="info" message="Found ${file}"/-->
  </target>

  <target name="check_jars" description="Check that all required jar files are present" unless="no_check_jars">
    <antcall target="_process_all_jars">
      <param name="_check_exists" value="true"/>
    </antcall>
  </target>

  <!-- Special: process to get RSyntaxTextArea-->
  <!-- Useless since rsyntaxtextarea artifacts are published to Maven Repo since 9th july 2014 (JMeter 2.12) -->
  <!--
  <target name="_process_rsyntaxtextarea">
      <available file="./lib/${rsyntaxtextarea.jar}" property="rsyntaxtextarea.exists"/>
      <antcall target="_get_rsyntaxtextarea"/>
  </target>
  -->
  <!-- Get RSyntaxTextArea binary zip file, unpack it, pick up jar file and remove the zip -->
  <!-- Useless since rsyntaxtextarea artifacts are published to Maven Repo since 9th july 2014 (JMeter 2.12) -->
  <!--
  <target name="_get_rsyntaxtextarea" unless="rsyntaxtextarea.exists">
    <property name="loc" value="${rsyntaxtextarea.loc}"/>
    <property name="zip" value="${rsyntaxtextarea.name}_${rsyntaxtextarea.version}.zip"/>
    <property name="jar" value="${rsyntaxtextarea.name}.jar"/>
    <property name="md5" value="${rsyntaxtextarea.md5}"/>
    <property name="path" value="./lib"/>
    <get src="${loc}/${zip}"
         dest="${build.dir}/${zip}"
         usetimestamp="true" ignoreerrors="false"/>
    <unzip dest="${build.dir}" src="${build.dir}/${zip}">
      <patternset>
        <include name="**/${jar}"/>
      </patternset>
      <mapper type="flatten"/>
    </unzip>
    <antcall target="_checkMD5">
      <param name="file" value="${build.dir}/${jar}"/>
      <param name="path" value="${build.dir}"/>
      <param name="md5"  value="${md5}"/>
    </antcall>
    <delete>
      <fileset dir="${path}" includes="${rsyntaxtextarea.name}-*.jar"/>
    </delete>
    <move preservelastmodified="true" overwrite="true"
        file="${build.dir}/${jar}" tofile="${path}/${rsyntaxtextarea.jar}" verbose="true"/>
    <delete file="${build.dir}/${zip}"/>
  </target>
  -->

  <!-- Need to define config_loc for use by Eclipse -->
  <property name="config_loc" value="."/>
  <target name="checkstyle">
    <available property="checkstyle.jar.available" file="${lib.opt}/${checkstyle-all.jar}"/>
    <fail message="This task requires checkstlye, please run download_checkstyle target to download checkstyle" unless="checkstyle.jar.available"/>

    <antcall target="_process_checkstyle_jars"></antcall>
    <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties"
             classpath="${lib.opt}/${checkstyle-all.jar}"/>
    <checkstyle config="checkstyle.xml">
      <fileset dir="src" includes="**/*.java"/>
      <formatter type="plain"/>
      <formatter type="xml" toFile="build/checkstyle_errors.xml"/>
    </checkstyle>

  </target>

  <target name="rat">
    <available property="rat.jar.available" file="${lib.opt}/${rat.jar}"/>
    <fail message="This task requires Apache Creadur RAT, please run download_rat target to download it" unless="rat.jar.available"/>
    <taskdef
      uri="antlib:org.apache.rat.anttasks"
      resource="org/apache/rat/anttasks/antlib.xml">
      <classpath>
        <pathelement location="${lib.opt}/${rat.jar}"/>
        <pathelement location="${lib.opt}/${rat-tasks.jar}"/>
      </classpath>
    </taskdef>
    <rat:report reportfile="reports/rat-report.txt">
        <fileset dir="." excludesfile="rat-excludes.txt"/>
    </rat:report>
    <loadfile property="rat-errors" srcFile="reports/rat-report.txt">
      <filterchain>
        <linecontains>
          <contains value="Unknown"/>
        </linecontains>
      </filterchain>
    </loadfile>
    <echo message="reports/rat-report.txt:"/>
    <echo message="${rat-errors}"/>
  </target>

  <target name="sign_dist"
    description="Sign release artifacts in dist and dist/maven.  Usage: ant sign_dist -Dgpg.keyname=key-id [-Dgpg.secretKeyring=path-to-keyring]      ">
    <scriptdef name="gpg" language="beanshell">
      <classpath>
        <pathelement location="${lib.dir}/${beanshell.jar}"/>
      </classpath>
      <element name="fileset" type="fileset"/>
      <![CDATA[
      int execcode( String command ) // helper
      {
          StringTokenizer st = new StringTokenizer(command);
          String[] cmdarray = new String[st.countTokens()];
          for (int i = 0; st.hasMoreTokens(); i++) {
              cmdarray[i] = st.nextToken();
          }
          // Merge stderr with stdout so only have to fetch one stream
          proc = new ProcessBuilder(cmdarray).redirectErrorStream(true).start();
          din = new DataInputStream( proc.getInputStream() );
          while( (line=din.readLine()) != null ) {
              print(line);
          }
          return this.proc.waitFor();
      }
        keyname = project.getProperty("gpg.keyname");
        // Java 1.6 returns void, Java 1.5 returns null
        if (keyname == void || keyname == null) {
          self.fail("Please provide the gpg.keyname property");
        }
        keyring = project.getProperty("gpg.secretKeyring");
        if (keyring == void || keyring == null) {
          keyring = "secring.gpg"; // the default
        }
        sep=java.io.File.separator;
        cmd="gpg2 --batch --yes -ba -u " + keyname + " --secret-keyring " + keyring;
        self.log("Command: "+cmd);
        filesets = elements.get("fileset");
        for (i = 0; i < filesets.size(); ++i) {
          fileset = filesets.get(i);
          basedir = fileset.getDir();
          self.log("Processing "+basedir);
          ds = fileset.getDirectoryScanner();
          srcFiles = ds.getIncludedFiles();
          for (j=0; j < srcFiles.length; j++) {
            srcFile=srcFiles[j];
            file=basedir + sep + srcFile;
            self.log("Signing "+srcFile);
            ret=execcode(cmd+ " " + file);
            if (ret != 0) {
               self.fail("Command failed: "+ret);
            }
          }
        }
      ]]>
    </scriptdef>
    <gpg>
      <fileset dir="${dist.dir}"  includes="*.*" excludes="*.asc *.md5 *.sha1 *.sha"/>
      <fileset dir="${maven.dir}" includes="*.*" excludes="*.asc *.md5 *.sha1 *.sha"/>
    </gpg>
  </target>
</project>
