<?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

       https://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="apache-ant" default="main" basedir=".">

  <!-- Give user a chance to override without editing this file
       (and without typing -D on each invocation) -->
  <property file=".ant.properties"/>
  <property file="${user.home}/.ant.properties"/>
  <property environment="env"/>

  <!--
       ===================================================================
         Set the properties that control names and versions
       ===================================================================
  -->
  <property name="Name" value="Apache Ant"/>
  <property name="name" value="ant"/>
  <!-- this is the directory corresponding to groupId of Ant in the Maven repository -->
  <property name="groupid" value="org/apache/ant"/>
  <property name="project.version" value="1.10.8"/>
  <!-- pom.version is used when doing a distribution and must match with what is checked in under src/etc/poms -->
  <property name="pom.version" value="1.10.8"/>
  <property name="manifest-version" value="1.10.8"/>
  <property name="bootstrap.jar" value="ant-bootstrap.jar"/>

  <property name="ant.package" value="org/apache/tools/ant"/>
  <property name="taskdefs.package" value="${ant.package}/taskdefs"/>
  <property name="condition.package" value="${taskdefs.package}/condition"/>
  <property name="modules.package" value="${taskdefs.package}/modules"/>
  <property name="optional.package" value="${taskdefs.package}/optional"/>
  <property name="type.package" value="${ant.package}/types"/>
  <property name="optional.type.package" value="${type.package}/optional"/>
  <property name="apache.resolver.type.package" value="${type.package}/resolver"/>
  <property name="util.package" value="${ant.package}/util"/>
  <property name="regexp.package" value="${util.package}/regexp"/>

  <property name="optional.jars.prefix" value="ant"/>
  <property name="optional.jars.whenmanifestonly" value="skip"/>

  <!--
       ===================================================================
         Set the properties related to the source tree
       ===================================================================
  -->
  <property name="src.dir" value="src"/>
  <property name="java.dir" value="${src.dir}/main"/>
  <property name="script.dir" value="${src.dir}/script"/>
  <property name="resource.dir" value="${src.dir}/resources"/>
  <property name="src.junit" value="${src.dir}/tests/junit"/>
  <property name="src.antunit" value="${src.dir}/tests/antunit"/>
  <property name="etc.dir" value="${src.dir}/etc"/>
  <property name="tests.etc.dir" value="${etc.dir}/testcases"/>
  <property name="lib.dir" value="lib"/>
  <property name="manual.dir" value="manual"/>

  <!--
       ===================================================================
         Set the properties for the build area
       ===================================================================
  -->
  <property name="build.dir" value="build"/>
  <property name="bootstrap.dir" location="bootstrap"/>
  <property name="build.classes" value="${build.dir}/classes"/>
  <property name="build.lib" value="${build.dir}/lib"/>
  <property name="build.lib-src" value="${build.dir}/lib-src"/>
  <property name="build.javadocs" value="${build.dir}/javadocs"/>
  <property name="build.tests" value="${build.dir}/testcases"/>
  <property name="build.tests.javadocs" value="${build.dir}/javadocs.test/"/>
  <property name="build.junit.xml" location="${build.tests}/xml"/>
  <property name="build.junit.tmpdir" location="${build.tests}/tmp"/>
  <property name="build.junit.reports" location="${build.tests}/reports"/>
  <property name="build.pkg.dir" value="${build.dir}/pkg"/>
  <property name="antunit.xml" location="${build.dir}/antunit/xml"/>
  <property name="antunit.tmpdir" location="${build.dir}/antunit/tmp"/>
  <property name="antunit.reports" location="${build.dir}/antunit/reports"/>
  <property name="antunit.loglevel" value="none"/>
  <!-- the absolute path -->
  <property name="build.classes.value" location="${build.classes}"/>
  <property name="build.tests.value" location="${build.tests}"/>

  <!--
       ===================================================================
         Set the properties that control various build options
       ===================================================================
  -->
  <property name="debug" value="true"/>
  <property name="setpermissions.fail" value="true"/>
  <property name="setpermissions.nonposixmode" value="tryDosOrPass"/>
  <property name="deprecation" value="false"/>
  <property name="optimize" value="true"/>
  <property name="javac.target" value="1.8"/>
  <property name="javac.source" value="1.8"/>
  <property name="javac.release" value="8"/>
  <property name="junit.filtertrace" value="off"/>
  <property name="junit.summary" value="no"/>
  <property name="test.haltonfailure" value="false"/>
  <property name="junit.fork" value="true"/>
  <property name="junit.forkmode" value="once"/>
  <condition property="junit.threads" value="2" else="0">
    <and>
      <equals arg1="${junit.fork}" arg2="true"/>
      <equals arg1="${junit.forkmode}" arg2="perTest"/>
    </and>
  </condition>
  <property name="expandproperty.files"
            value="**/version.txt,**/defaultManifest.mf"/>
  <property name="junit.collector.dir" value="${build.dir}/failingTests"/>
  <property name="junit.collector.class" value="FailedTests"/>

  <!--
       ===================================================================
         Set the paths used in the build
       ===================================================================
  -->
  <path id="classpath">
    <fileset dir="lib/optional" includes="*.jar"/>
  </path>

  <path id="tests-classpath">
    <pathelement location="${build.classes}"/>
    <path refid="classpath"/>
  </path>
  <path id="tests-runtime-classpath">
    <path refid="tests-classpath"/>
    <pathelement location="${build.tests}"/>
    <!--
        include the test source and test data dirs
        so that we can pick resources via getResource(AsStream)
     -->
    <pathelement location="${src.junit}"/>
    <pathelement location="${tests.etc.dir}"/>
    <!-- Otherwise many tests fail with "com.sun.tools.javac.Main is not on the classpath.": -->
    <pathelement location="${java.home}/../lib/tools.jar"/>
  </path>

  <!--
        ===================================================================
          Set up properties for the distribution area
        ===================================================================
   -->
  <property name="dist.name" value="apache-${name}-${project.version}"/>
  <property name="dist.base" value="distribution"/>
  <property name="dist.base.source" value="${dist.base}/source"/>
  <property name="dist.base.binaries" value="${dist.base}/binaries"/>
  <property name="dist.base.manual" value="${dist.base}/manual"/>
  <property name="dist.dir" location="dist"/>
  <property name="dist.bin" value="${dist.dir}/bin"/>
  <property name="dist.lib" value="${dist.dir}/lib"/>
  <property name="dist.manual" value="${dist.dir}/manual"/>
  <property name="dist.etc" value="${dist.dir}/etc"/>
  <property name="dist.javadocs" value="${dist.dir}/manual/api"/>

  <property name="src.dist.dir" value="dist-src"/>
  <property name="src.dist.src" value="${src.dist.dir}/src"/>
  <property name="src.dist.manual" value="${src.dist.dir}/manual"/>
  <property name="src.dist.lib" value="${src.dist.dir}/lib"/>

  <property name="java-repository.dir" value="java-repository/${groupid}"/>

  <!--
       ===================================================================
         Set up selectors to be used by javac, junit and jar to exclude
         files that have dependencies that are not available
       ===================================================================
  -->

  <selector id="needs.jdk9+">
    <filename name="${modules.package}/"/>
  </selector>

  <!-- Kaffe has some JDK 1.5 features including java.lang.Readable,
       but not all of them -->
  <selector id="not.in.kaffe">
    <or>
      <filename name="${condition.package}/IsReachable*"/>
    </or>
  </selector>

  <selector id="needs.apache-resolver">
    <filename name="${apache.resolver.type.package}/"/>
  </selector>

  <selector id="needs.junit">
    <and>
      <filename name="${optional.package}/junit/"/>
      <not>
          <or>
            <filename name="${optional.package}/junit/JUnit4TestMethodAdapter*"/>
            <filename name="${optional.package}/junit/CustomJUnit4TestAdapterCache*"/>
          </or>
      </not>
    </and>
  </selector>

  <selector id="needs.junit4">
      <or>
         <filename name="${optional.package}/junit/JUnit4TestMethodAdapter*"/>
         <filename name="${optional.package}/junit/CustomJUnit4TestAdapterCache*"/>
      </or>
  </selector>

  <selector id="needs.junitlauncher">
    <or>
      <filename name="${optional.package}/junitlauncher/"/>
      <filename name="org/example/junitlauncher/Tracker.java"/>
    </or>
  </selector>

  <selector id="needs.junit.engine.vintage">
    <or>
      <!-- we need JUnit vintage engine only in tests where we test the junitlauncher task -->
      <filename name="${optional.package}/junitlauncher/**/JUnitLauncherTaskTest.java"/>
      <filename name="org/example/junitlauncher/vintage/**/*"/>
    </or>
  </selector>

  <selector id="needs.junit.engine.jupiter">
    <or>
      <!-- we need JUnit jupiter engine only in tests where we test the junitlauncher task -->
      <filename name="${optional.package}/junitlauncher/**/JUnitLauncherTaskTest.java"/>
      <filename name="org/example/junitlauncher/jupiter/**/*"/>
    </or>
  </selector>

  <selector id="needs.apache-regexp">
    <filename name="${regexp.package}/JakartaRegexp*"/>
  </selector>

  <selector id="needs.apache-oro">
    <or>
      <filename name="${regexp.package}/JakartaOro*"/>
    </or>
  </selector>

  <selector id="needs.apache-bcel">
    <or>
      <filename name="${ant.package}/filters/util/JavaClassHelper*"/>
      <filename name="${util.package}/depend/bcel/"/>
      <filename name="${optional.type.package}/depend/ClassFileSetTest*"/>
    </or>
  </selector>

  <selector id="needs.apache-log4j">
    <filename name="${ant.package}/listener/Log4jListener*"/>
  </selector>

  <selector id="needs.commons-logging">
    <filename name="${ant.package}/listener/CommonsLoggingListener*"/>
  </selector>

  <selector id="needs.apache-bsf">
    <or>
      <filename name="${util.package}/ScriptRunner.*"/>
      <filename name="${util.package}/optional/ScriptRunner*"/>
    </or>
  </selector>

  <selector id="needs.javamail">
    <or>
      <filename name="${ant.package}/taskdefs/email/MimeMailer*"/>
    </or>
  </selector>

  <selector id="needs.netrexx">
    <filename name="${optional.package}/NetRexxC*"/>
  </selector>

  <selector id="needs.commons-net">
    <or>
      <filename name="${optional.package}/net/FTP*"/>
      <filename name="${optional.package}/net/RExec*"/>
      <filename name="${optional.package}/net/TelnetTask*"/>
    </or>
  </selector>

  <selector id="needs.antlr">
    <filename name="${optional.package}/ANTLR*"/>
  </selector>

  <selector id="needs.imageio">
    <or>
      <filename name="${optional.package}/image/ImageIO*"/>
      <filename name="${optional.type.package}/imageio/"/>
    </or>
  </selector>

  <selector id="needs.jmf">
    <filename name="${optional.package}/sound/"/>
  </selector>

  <selector id="needs.jai">
    <or>
      <filename name="${optional.package}/image/Image.*"/>
      <filename name="${optional.package}/image/ImageTest.*"/>
      <filename name="${optional.type.package}/image/"/>
    </or>
  </selector>

  <selector id="needs.jdepend">
    <filename name="${optional.package}/jdepend/"/>
  </selector>

  <selector id="needs.swing">
    <filename name="${optional.package}/splash/"/>
  </selector>

  <selector id="needs.jsch">
    <filename name="${optional.package}/ssh/"/>
  </selector>

  <!-- needs TraceListenerEx3 interface implemented by PrintTraceListener -->
  <selector id="needs.apache-xalan2">
    <filename name="${optional.package}/Xalan2TraceSupport*"/>
  </selector>

  <selector id="needs.xz">
    <or>
      <filename name="${optional.package}/xz/"/>
      <filename name="${type.package}/optional/xz/"/>
    </or>
  </selector>

  <selector id="ant.launcher">
    <filename name="${ant.package}/launch/"/>
  </selector>

  <selector id="ant.core">
    <not>
      <or>
        <selector refid="needs.antlr"/>
        <selector refid="needs.apache-bcel"/>
        <selector refid="needs.apache-bsf"/>
        <selector refid="needs.apache-log4j"/>
        <selector refid="needs.apache-oro"/>
        <selector refid="needs.apache-regexp"/>
        <selector refid="needs.apache-resolver"/>
        <selector refid="needs.apache-xalan2"/>
        <selector refid="needs.commons-logging"/>
        <selector refid="needs.commons-net"/>
        <selector refid="needs.imageio"/>
        <selector refid="needs.jai"/>
        <selector refid="needs.javamail"/>
        <selector refid="needs.jdepend"/>
        <selector refid="needs.jmf"/>
        <selector refid="needs.jsch"/>
        <selector refid="needs.junit"/>
        <selector refid="needs.junit4"/>
        <selector refid="needs.junitlauncher"/>
        <selector refid="needs.netrexx"/>
        <selector refid="needs.swing"/>
        <selector refid="needs.xz"/>
        <selector refid="ant.launcher"/>
      </or>
    </not>
  </selector>

  <patternset id="onlinetests">
    <exclude name="**/GetTest.java" if="offline"/>
    <exclude name="**/HttpTest.java" if="offline"/>
  </patternset>

  <patternset id="teststhatfail">
    <!-- Property 'run.failing.tests' should force Ant to run these tests. -->
    <!-- Because the whole patternset can not be excluded, you have to add -->
    <!-- an unless-attribute on each exclude-element.                      -->
    <exclude unless="run.failing.tests" name="${optional.package}/BeanShellScriptTest.java"/>
    <exclude unless="run.failing.tests" name="${optional.package}/jdepend/JDependTest.java"/>
  </patternset>

  <!-- tests that need an XML Schema-supporting parser to work -->
  <selector id="needs.xmlschema">
    <or>
      <filename name="${optional.package}/SchemaValidateTest.*"/>
      <filename name="${optional.package}/XmlValidateTest.*"/>
    </or>
  </selector>

  <!--
       ===================================================================
         Set up a patternsets that matches the parts of our JUnit testsuite
         that may be useful for task developers.
       ===================================================================
  -->
  <patternset id="useful.tests">
    <include name="${ant.package}/AntAssert*"/>
    <include name="${ant.package}/BuildFileTest*"/>
    <include name="${ant.package}/BuildFileRule*"/>
    <include name="${ant.package}/FileUtilities*"/>
    <include name="${ant.package}/MagicTestNames*"/>
    <include name="${regexp.package}/RegexpMatcherTest*"/>
    <include name="${regexp.package}/RegexpTest*"/>
    <include name="${optional.package}/AbstractXSLTLiaisonTest*"/>
    <include name="${ant.package}/types/AbstractFileSetTest*"/>
  </patternset>

  <!--
       ===================================================================
         Check to see what optional dependencies are available
       ===================================================================
  -->
  <target name="check-optional-packages">
    <condition property="ignoresystemclasses">
      <not>
        <equals arg1="${build.sysclasspath}" arg2="only"/>
      </not>
    </condition>
    <property name="ignoresystemclasses" value="false"/>
    <available property="jdk9+" classname="java.lang.module.ModuleDescriptor"/>
    <condition property="jdk10+">
      <javaversion atleast="10"/>
    </condition>
    <available property="kaffe" classname="kaffe.util.NotImplemented"/>
    <available property="harmony"
               classname="org.apache.harmony.luni.util.Base64"/>
    <available property="bsf.present"
               classname="org.apache.bsf.BSFManager"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="netrexx.present"
               classname="netrexx.lang.Rexx"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="apache.resolver.present"
               classname="org.apache.xml.resolver.tools.CatalogResolver"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="recent.xalan2.present"
               classname="org.apache.xalan.trace.TraceListenerEx3"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="junit.present"
               classname="junit.framework.TestCase"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="junit4.present"
               classname="org.junit.Test"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="junitlauncher.present"
               classname="org.junit.platform.launcher.Launcher"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="junit.engine.vintage.present"
               classname="org.junit.vintage.engine.VintageTestEngine"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="junit.engine.jupiter.present"
               classname="org.junit.jupiter.engine.JupiterTestEngine"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="antunit.present"
               classname="org.apache.ant.antunit.AntUnit"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="commons.net.present"
               classname="org.apache.commons.net.ftp.FTPClient"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="antlr.present"
               classname="antlr.Tool"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="apache.regexp.present"
               classname="org.apache.regexp.RE"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="apache.oro.present"
               classname="org.apache.oro.text.regex.Perl5Matcher"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="imageio.present"
               classname="javax.imageio.ImageIO"
               classpathref="classpath"/>
    <available property="jmf.present"
               classname="javax.sound.sampled.Clip"
               classpathref="classpath"/>
    <available property="jai.present"
               classname="javax.media.jai.JAI"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="jdepend.present"
               classname="jdepend.framework.JDepend"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="log4j.present"
               classname="org.apache.log4j.Logger"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="commons.logging.present"
               classname="org.apache.commons.logging.LogFactory"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="xalan.envcheck"
               classname="org.apache.xalan.xslt.EnvironmentCheck"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="which.present"
               classname="org.apache.env.Which"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="xerces.present"
               classname="org.apache.xerces.parsers.SAXParser"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="bcel.present"
               classname="org.apache.bcel.Constants"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="javamail.present"
               classname="javax.mail.Transport"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>

    <condition property="tests.and.ant.share.classloader">
      <or>
        <equals arg1="${junit.fork}" arg2="true"/>
        <equals arg1="${build.sysclasspath}" arg2="only"/>
      </or>
    </condition>

    <condition property="sun.tools.present">
      <and>
        <available classname="sun.tools.native2ascii.Main"/>
        <available classname="com.sun.tools.javah.Main"/>
      </and>
    </condition>

    <condition property="tests.are.on.system.classpath">
      <or>
        <resourcecount count="1">
          <intersect>
            <path path="${java.class.path}"/>
            <file file="${build.tests}"/>
          </intersect>
        </resourcecount>
        <istrue value="${junit.fork}"/>
      </or>
    </condition>

    <echo level="verbose"> tests.are.on.system.classpath=${tests.are.on.system.classpath}</echo>

    <condition property="jasper.present">
      <and>
        <available classname="org.apache.jasper.compiler.Compiler"/>
        <available classname="org.apache.jasper.JasperException"/>
      </and>
    </condition>

    <condition property="swing.present">
      <or>
        <not>
          <isset property="kaffe"/>
        </not>
        <available classname="javax.swing.ImageIcon"
          classpathref="classpath"/>
      </or>
    </condition>

    <available property="rhino.present"
               classname="org.mozilla.javascript.Scriptable"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="beanshell.present"
               classname="bsh.StringUtil"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="xerces1.present"
               classname="org.apache.xerces.framework.XMLParser"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="jsch.present"
               classname="com.jcraft.jsch.Session"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    <available property="xz.present"
               classname="org.tukaani.xz.XZOutputStream"
               classpathref="classpath" ignoresystemclasses="${ignoresystemclasses}"/>

    <property name="build.compiler" value="modern"/>

    <!-- check for XSD support in the parser -->
    <condition property="xmlschema.present">
      <or>
        <parsersupports feature="http://apache.org/xml/features/validation/schema"/>
        <parsersupports feature="http://java.sun.com/xml/jaxp/properties/schemaSource"/>
      </or>
    </condition>

    <!--
    Java8 introduced a HTML checker 'doclint' which is very strict and breaks
    the build if there is a HTML error in the JavaDoc.
    -->
    <condition
            property="javadoc.doclint.none"
            value="-Xdoclint:none"
            else="">
      <not><isset property="withDoclint"/></not>
    </condition>
  </target>

  <!--
       ===================================================================
         Prepare the build
       ===================================================================
  -->
  <target name="prepare" depends="check-optional-packages">
    <tstamp>
      <format property="year" pattern="yyyy"/>
    </tstamp>
    <filterchain id="ant.filters">
       <expandproperties/>
    </filterchain>
  </target>

  <!--
       ===================================================================
         Build the code
       ===================================================================
  -->
  <target name="build" depends="prepare, compile, compile-jdk9+" unless="skip.build"
          description="--> compiles the source code">

    <!-- Builds and verifies that the classes belonging in the confined package of
    junitlauncher task do not depend on classes they aren't meant to -->
    <!-- first wipe out the "confined" package that might have been built already
     due to the javac above -->
    <delete dir="${build.classes}/${optional.package}/junitlauncher/confined/"/>
    <javac srcdir="${java.dir}"
           includeantruntime="false"
           destdir="${build.classes}"
           debug="${debug}"
           deprecation="${deprecation}"
           includes="${optional.package}/junitlauncher/confined/**"
           target="${javac.target}"
           source="${javac.source}"
           release="${javac.release}"
           optimize="${optimize}">
      <classpath>
        <!-- A very limited classpath which only doesn't include optional libraries,
         which the classes in confined package aren't meant to depend on -->
        <fileset dir="${build.classes}">
          <!-- exclude the org/apache/tools/ant/taskdefs/optional/junitlauncher package
          from the classpath, since the confined package isn't meant to depend on
          classes in this package -->
          <exclude name="org/apache/tools/ant/taskdefs/optional/junitlauncher/*"/>
        </fileset>
      </classpath>

    </javac>

    <copy todir="${build.classes}">
      <fileset dir="${java.dir}">
        <include name="**/*.properties"/>
        <include name="**/*.dtd"/>
        <include name="**/*.xml"/>
      </fileset>
      <fileset dir="${resource.dir}"/>
    </copy>

    <copy todir="${build.classes}"
      overwrite="true" encoding="UTF-8">
      <fileset dir="${java.dir}">
        <include name="**/version.txt"/>
        <include name="**/defaultManifest.mf"/>
      </fileset>
      <filterchain refid="ant.filters"/>
    </copy>

    <copy todir="${build.classes}/${optional.package}/junit/xsl">
      <fileset dir="${etc.dir}">
        <include name="junit-frames.xsl"/>
        <include name="junit-noframes.xsl"/>
        <include name="junit-frames-saxon.xsl"/>
        <include name="junit-noframes-saxon.xsl"/>
      </fileset>
    </copy>
  </target>

  <target name="compile" depends="prepare">
    <mkdir dir="${build.classes}"/>
    <javac srcdir="${java.dir}"
           includeantruntime="false"
           destdir="${build.classes}"
           debug="${debug}"
           deprecation="${deprecation}"
           excludes="${optional.package}/junitlauncher/confined/**"
           target="${javac.target}"
           source="${javac.source}"
           release="${javac.release}"
           optimize="${optimize}">
      <classpath refid="classpath"/>

      <selector id="conditional-patterns">
        <not>
          <or>
            <selector refid="needs.jdk9+"/>
            <selector refid="not.in.kaffe" if="kaffe"/>
            <selector refid="needs.apache-resolver" unless="apache.resolver.present"/>
            <selector refid="needs.junit" unless="junit.present"/> <!-- TODO should perhaps use -source 1.4? -->
            <selector refid="needs.junit4" unless="junit4.present"/>
            <selector refid="needs.junitlauncher" unless="junitlauncher.present"/>
            <selector refid="needs.junit.engine.vintage" unless="junit.engine.vintage.present"/>
            <selector refid="needs.junit.engine.jupiter" unless="junit.engine.jupiter.present"/>
            <selector refid="needs.apache-regexp" unless="apache.regexp.present"/>
            <selector refid="needs.apache-oro" unless="apache.oro.present"/>
            <selector refid="needs.apache-bcel" unless="bcel.present"/>
            <selector refid="needs.apache-log4j" unless="log4j.present"/>
            <selector refid="needs.commons-logging" unless="commons.logging.present"/>
            <selector refid="needs.apache-bsf" unless="bsf.present"/>
            <selector refid="needs.javamail" unless="javamail.present"/>
            <selector refid="needs.netrexx" unless="netrexx.present"/>
            <selector refid="needs.commons-net" unless="commons.net.present"/>
            <selector refid="needs.antlr" unless="antlr.present"/>
            <selector refid="needs.imageio" unless="imageio.present"/>
            <selector refid="needs.jmf" unless="jmf.present"/>
            <selector refid="needs.jai" unless="jai.present"/>
            <selector refid="needs.jdepend" unless="jdepend.present"/>
            <selector refid="needs.swing" unless="swing.present"/>
            <selector refid="needs.jsch" unless="jsch.present"/>
            <selector refid="needs.xz" unless="xz.present"/>
            <selector refid="needs.xmlschema" unless="xmlschema.present"/>
            <selector refid="needs.apache-xalan2" unless="recent.xalan2.present"/>
          </or>
        </not>
      </selector>
    </javac>
  </target>

  <target name="compile-jdk9+" depends="prepare" if="jdk9+">
    <mkdir dir="${build.classes}"/>

    <javac srcdir="${java.dir}"
           includeantruntime="false"
           destdir="${build.classes}"
           debug="${debug}"
           deprecation="${deprecation}"
           target="${javac.target}"
           source="${javac.source}"
           optimize="${optimize}">
      <classpath refid="classpath"/>

      <selector id="conditional-patterns-jdk9+">
          <or>
            <selector refid="needs.jdk9+"/>
          </or>
      </selector>
    </javac>
  </target>

  <!--
       ===================================================================
         Create the all of the Apache Ant jars
       ===================================================================
  -->
  <target name="jars" depends="build"
          description="--> creates the Apache Ant jars">

    <copy todir="${build.dir}">
      <fileset dir="${basedir}">
        <include name="LICENSE"/>
        <include name="LICENSE.xerces"/>
        <include name="LICENSE.dom"/>
        <include name="LICENSE.sax"/>
        <include name="NOTICE"/>
      </fileset>
      <mapper type="glob" from="*" to="*.txt"/>
    </copy>

    <jar destfile="${build.lib}/${name}-launcher.jar"
         basedir="${build.classes}" index="true"
         whenmanifestonly="fail">
      <selector refid="ant.launcher"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
      <manifest>
        <attribute name="Main-Class" value="org.apache.tools.ant.launch.Launcher"/>
      </manifest>
    </jar>

    <jar destfile="${build.lib}/${name}.jar"
         basedir="${build.classes}" index="true"
         whenmanifestonly="fail">
      <!-- Verification: (cd dist/lib; for j in *.jar; do jar tf $j; done) | egrep -v '/$|META-INF/MANIFEST\.MF' | sort | uniq -d -->
      <selector refid="ant.core"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
      <manifest>
        <attribute name="Main-Class" value="org.apache.tools.ant.Main"/>
        <section name="${ant.package}/">
          <attribute name="Extension-Name"
                     value="org.apache.tools.ant"/>
          <attribute name="Specification-Title"
                     value="Apache Ant"/>
          <attribute name="Specification-Version"
                     value="${manifest-version}"/>
          <attribute name="Specification-Vendor"
                     value="Apache Software Foundation"/>
          <attribute name="Implementation-Title"
                     value="org.apache.tools.ant"/>
          <attribute name="Implementation-Version"
                     value="${manifest-version}"/>
          <attribute name="Implementation-Vendor"
                     value="Apache Software Foundation"/>
        </section>
      </manifest>

      <fileset dir="${manual.dir}">
        <include name="images/ant_logo_large.gif"/>
      </fileset>
    </jar>

    <jar destfile="${build.lib}/${bootstrap.jar}"
         basedir="${build.classes}"
         whenmanifestonly="fail">
      <include name="${ant.package}/Main.class"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
      <manifest>
        <attribute name="Main-Class" value="org.apache.tools.ant.Main"/>
        <attribute name="Class-Path" value="ant.jar xalan.jar"/>
      </manifest>
    </jar>

    <macrodef name="optional-jar">
      <attribute name="dep"/>
      <sequential>
        <jar destfile="${build.lib}/${optional.jars.prefix}-@{dep}.jar"
             basedir="${build.classes}" index="true"
             whenmanifestonly="${optional.jars.whenmanifestonly}">
          <selector refid="needs.@{dep}"/>
          <metainf dir="${build.dir}">
            <include name="LICENSE.txt"/>
            <include name="NOTICE.txt"/>
          </metainf>
          <manifest>
            <section name="${optional.package}/">
              <attribute name="Extension-Name"
                         value="org.apache.tools.ant"/>
              <attribute name="Specification-Title"
                         value="Apache Ant"/>
              <attribute name="Specification-Version"
                         value="${manifest-version}"/>
              <attribute name="Specification-Vendor"
                         value="Apache Software Foundation"/>
              <attribute name="Implementation-Title"
                         value="org.apache.tools.ant"/>
              <attribute name="Implementation-Version"
                         value="${manifest-version}"/>
              <attribute name="Implementation-Vendor"
                         value="Apache Software Foundation"/>
            </section>
          </manifest>
        </jar>
      </sequential>
    </macrodef>

    <optional-jar dep="apache-resolver"/>
    <optional-jar dep="junit"/>
    <optional-jar dep="junit4"/>
    <optional-jar dep="junitlauncher"/>
    <optional-jar dep="apache-regexp"/>
    <optional-jar dep="apache-oro"/>
    <optional-jar dep="apache-bcel"/>
    <optional-jar dep="apache-log4j"/>
    <optional-jar dep="commons-logging"/>
    <optional-jar dep="apache-bsf"/>
    <optional-jar dep="javamail"/>
    <optional-jar dep="netrexx"/>
    <optional-jar dep="commons-net"/>
    <optional-jar dep="antlr"/>
    <optional-jar dep="imageio"/>
    <optional-jar dep="jmf"/>
    <optional-jar dep="jai"/>
    <optional-jar dep="swing"/>
    <optional-jar dep="jsch"/>
    <optional-jar dep="jdepend"/>
    <optional-jar dep="apache-xalan2"/>
    <optional-jar dep="xz"/>

  </target>

  <!--   Creates jar of test utility classes -->
  <target name="test-jar" depends="compile-tests"
          description="--> creates the Apache Ant Test Utilities jar">

    <fail unless="junit.present">
      We cannot build the test jar unless JUnit is present,
      as JUnit is needed to compile the test classes.
    </fail>
    <jar destfile="${build.lib}/${name}-testutil.jar" index="true"
         basedir="${build.tests}">
      <patternset refid="useful.tests"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
    </jar>
  </target>

  <!--
       ===================================================================
         Create the all of the Apache Ant source jars
       ===================================================================
  -->
  <target name="jars-sources" description="--> creates the Apache Ant source jars">
    <mkdir dir="${build.lib-src}"/>
    <jar destfile="${build.lib-src}/${name}-launcher.jar"
         basedir="${java.dir}"
         whenmanifestonly="fail">
      <selector refid="ant.launcher"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
    </jar>

    <jar destfile="${build.lib-src}/${name}.jar"
         basedir="${java.dir}"
         whenmanifestonly="fail">
      <selector refid="ant.core"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
    </jar>

    <jar destfile="${build.lib-src}/${bootstrap.jar}"
         basedir="${java.dir}"
         whenmanifestonly="fail">
      <include name="${ant.package}/Main.java"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
    </jar>

    <macrodef name="optional-src-jar">
      <attribute name="dep"/>
      <sequential>
        <jar destfile="${build.lib-src}/${optional.jars.prefix}-@{dep}.jar"
             basedir="${java.dir}"
             whenmanifestonly="${optional.jars.whenmanifestonly}">
          <selector refid="needs.@{dep}"/>
          <metainf dir="${build.dir}">
            <include name="LICENSE.txt"/>
            <include name="NOTICE.txt"/>
          </metainf>
        </jar>
      </sequential>
    </macrodef>

    <optional-src-jar dep="apache-resolver"/>
    <optional-src-jar dep="junit"/>
    <optional-src-jar dep="junit4"/>
    <optional-src-jar dep="junitlauncher"/>
    <optional-src-jar dep="apache-regexp"/>
    <optional-src-jar dep="apache-oro"/>
    <optional-src-jar dep="apache-bcel"/>
    <optional-src-jar dep="apache-log4j"/>
    <optional-src-jar dep="commons-logging"/>
    <optional-src-jar dep="apache-bsf"/>
    <optional-src-jar dep="javamail"/>
    <optional-src-jar dep="netrexx"/>
    <optional-src-jar dep="commons-net"/>
    <optional-src-jar dep="antlr"/>
    <optional-src-jar dep="imageio"/>
    <optional-src-jar dep="jmf"/>
    <optional-src-jar dep="jai"/>
    <optional-src-jar dep="swing"/>
    <optional-src-jar dep="jsch"/>
    <optional-src-jar dep="jdepend"/>
    <optional-src-jar dep="apache-xalan2"/>
    <optional-src-jar dep="xz"/>

  </target>

  <target name="test-jar-source"
          description="--> creates the Apache Ant Test Utilities source jar">
    <mkdir dir="${build.lib-src}"/>
    <jar destfile="${build.lib-src}/${name}-testutil.jar"
         basedir="${java.dir}">
      <patternset refid="useful.tests"/>
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
    </jar>
  </target>

  <!--
       ===================================================================
         Create the essential distribution that can run Apache Ant
       ===================================================================
  -->
  <target name="dist-lite" depends="jars,test-jar,-ant-dist-warn-jdk9+"
          description="--> creates a minimum distribution to run Apache Ant">

    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${dist.bin}"/>
    <mkdir dir="${dist.lib}"/>

    <copy todir="${dist.lib}">
      <fileset dir="${build.lib}">
        <exclude name="${bootstrap.jar}"/>
      </fileset>
    </copy>

    <copy todir="${dist.lib}">
      <fileset dir="${lib.dir}">
        <include name="*.jar"/>
        <include name="*.zip"/>
      </fileset>
    </copy>

    <copy todir="${dist.bin}">
      <fileset dir="${script.dir}"/>
    </copy>

    <fixcrlf srcdir="${dist.bin}" eol="dos" includes="*.bat,*.cmd"/>
    <fixcrlf srcdir="${dist.bin}" eol="unix">
      <include name="ant"/>
      <include name="antRun"/>
      <include name="*.pl"/>
    </fixcrlf>

    <setpermissions mode="755" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <dirset dir="${dist.dir}"/>
    </setpermissions>
    <setpermissions mode="644" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <fileset dir="${dist.dir}"/>
    </setpermissions>
    <setpermissions mode="755" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <fileset dir="${dist.bin}">
        <include name="**/ant"/>
        <include name="**/antRun"/>
        <include name="**/*.pl"/>
        <include name="**/*.py"/>
      </fileset>
    </setpermissions>

  </target>

  <!--
        ===================================================================
          Create the complete distribution
        ===================================================================
   -->
  <target name="dist" description="--> creates a complete distribution">
    <antcall inheritAll="false" target="dist-internal">
      <param name="dist.dir" value="${dist.name}"/>
    </antcall>
  </target>

  <target name="dist-javadocs" depends="javadocs" unless="javadoc.notrequired">
    <mkdir dir="${dist.javadocs}"/>
    <copy todir="${dist.javadocs}" overwrite="true">
      <fileset dir="${build.javadocs}"/>
    </copy>
  </target>

  <macrodef name="checksums">
    <element name="resources" implicit="true"/>
    <sequential>
      <checksum fileext=".sha512" algorithm="sha-512">
        <resources/>
      </checksum>
    </sequential>
  </macrodef>

  <target name="dist-internal" depends="dist-lite,dist-javadocs">
    <mkdir dir="${dist.manual}"/>
    <mkdir dir="${dist.etc}"/>

    <copy todir="${dist.lib}" file="${lib.dir}/README"/>
    <copy todir="${dist.lib}" file="${lib.dir}/libraries.properties"/>

    <copy todir="${dist.lib}">
      <fileset dir="${src.dir}/etc/poms">
        <include name="*/pom.xml"/>
      </fileset>
      <mapper type="regexp" from="^(.*)[/\\]pom.xml" to="\1.pom"/>
      <filterchain>
        <tokenfilter>
          <replaceregex pattern="${pom.version}" replace="${project.version}"/>
        </tokenfilter>
      </filterchain>
    </copy>
    <copy todir="${dist.lib}">
      <fileset dir="${src.dir}/etc/poms">
        <include name="pom.xml"/>
      </fileset>
      <mapper type="glob" from="pom.xml" to="ant-parent.pom"/>
      <filterchain>
        <tokenfilter>
          <replaceregex pattern="${pom.version}" replace="${project.version}"/>
        </tokenfilter>
      </filterchain>
    </copy>

    <copy todir="${dist.manual}">
      <fileset dir="${manual.dir}"/>
    </copy>

    <copy todir="${dist.dir}">
      <fileset dir="${basedir}">
        <include name="CONTRIBUTORS"/>
        <include name="README"/>
        <include name="INSTALL"/>
        <include name="LICENSE"/>
        <include name="LICENSE.xerces"/>
        <include name="LICENSE.dom"/>
        <include name="LICENSE.sax"/>
        <include name="NOTICE"/>
        <include name="TODO"/>
        <include name="WHATSNEW"/>
        <include name="KEYS"/>
        <include name="contributors.xml"/>
        <include name="fetch.xml"/>
        <include name="get-m2.xml"/>
        <include name="patch.xml"/>
      </fileset>
    </copy>

    <setpermissions mode="755" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <dirset dir="${dist.dir}"/>
    </setpermissions>
    <setpermissions mode="644" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <fileset dir="${dist.dir}"/>
    </setpermissions>
    <setpermissions mode="755" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <fileset dir="${dist.bin}">
        <include name="**/ant"/>
        <include name="**/antRun"/>
        <include name="**/*.pl"/>
        <include name="**/*.py"/>
      </fileset>
    </setpermissions>

    <!-- publish some useful stylesheets -->
    <copy todir="${dist.etc}">
      <fileset dir="${etc.dir}">
        <include name="junit-frames.xsl"/>
        <include name="junit-noframes.xsl"/>
        <include name="junit-frames-xalan1.xsl"/>
        <include name="coverage-frames.xsl"/>
        <include name="maudit-frames.xsl"/>
        <include name="mmetrics-frames.xsl"/>
        <include name="changelog.xsl"/>
        <include name="jdepend.xsl"/>
        <include name="jdepend-frames.xsl"/>
        <include name="checkstyle/*.xsl"/>
        <include name="log.xsl"/>
        <include name="tagdiff.xsl"/>
      </fileset>
      <fileset dir="${build.lib}">
        <include name="${bootstrap.jar}"/>
      </fileset>
    </copy>
  </target>

  <!--
       ===================================================================
         Target to create bootstrap build
       ===================================================================
  -->
  <target name="bootstrap" description="--> creates a bootstrap build">
    <antcall inheritAll="false" target="dist-lite">
      <param name="dist.dir" value="${bootstrap.dir}"/>
    </antcall>
  </target>

  <!--
       ===================================================================
         Create the source distribution
       ===================================================================
  -->
  <target name="src-dist"
          description="--> creates a source distribution">

    <mkdir dir="${src.dist.dir}"/>

    <copy todir="${src.dist.lib}">
      <fileset dir="${lib.dir}">
        <include name="optional/junit*.jar"/>
        <include name="optional/hamcrest*.jar"/>
        <include name="README"/>
        <include name="libraries.properties"/>
      </fileset>
    </copy>

    <mkdir dir="${src.dist.lib}/optional"/>

    <copy todir="${src.dist.src}">
      <fileset dir="${src.dir}"/>
    </copy>

    <copy todir="${src.dist.manual}">
      <fileset dir="${manual.dir}">
        <exclude name="api/"/>
      </fileset>
    </copy>

    <copy todir="${src.dist.dir}">
      <fileset dir="${basedir}">
        <include name="CONTRIBUTORS"/>
        <include name="INSTALL"/>
        <include name="KEYS"/>
        <include name="LICENSE"/>
        <include name="LICENSE.dom"/>
        <include name="LICENSE.sax"/>
        <include name="LICENSE.xerces"/>
        <include name="NOTICE"/>
        <include name="README"/>
        <include name="TODO"/>
        <include name="WHATSNEW"/>
        <include name="bootstrap.bat"/>
        <include name="bootstrap.sh"/>
        <include name="build.bat"/>
        <include name="build.sh"/>
        <include name="build.xml"/>
        <include name="contributors.xml"/>
        <include name="fetch.xml"/>
        <include name="get-m2.xml"/>
        <include name="patch.xml"/>
      </fileset>
    </copy>

    <fixcrlf srcdir="${src.dist.dir}" eol="dos" includes="*.bat,*.cmd"/>
    <fixcrlf srcdir="${src.dist.dir}" eol="unix">
      <include name="**/*.sh"/>
      <include name="**/*.pl"/>
      <include name="**/ant"/>
      <include name="**/antRun"/>
    </fixcrlf>
    <fixcrlf srcdir="${src.dist.dir}">
      <include name="**/*.java"/>
      <exclude name="${tests.etc.dir}/taskdefs/fixcrlf/expected/Junk?.java"/>
      <exclude name="${tests.etc.dir}/taskdefs/fixcrlf/input/Junk?.java"/>
    </fixcrlf>

    <setpermissions mode="755" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <dirset dir="${src.dist.dir}"/>
    </setpermissions>

    <setpermissions mode="644" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <fileset dir="${src.dist.dir}"/>
    </setpermissions>

    <setpermissions mode="755" failonerror="${setpermissions.fail}"
                    nonPosixMode="${setpermissions.nonposixmode}">
      <fileset dir="${src.dist.dir}">
        <include name="**/*.sh"/>
        <include name="**/*.pl"/>
        <include name="**/*.py"/>
        <include name="**/ant"/>
        <include name="**/antRun"/>
      </fileset>
    </setpermissions>

  </target>

  <!--
       ===================================================================
         Create the binary distribution
       ===================================================================
  -->
  <target name="-distribution-prep">
    <delete dir="${dist.base}"/>
    <delete dir="${dist.name}"/>
    <delete dir="${java-repository.dir}"/>
    <mkdir dir="${dist.base}"/>
    <mkdir dir="${dist.base.source}"/>
    <mkdir dir="${dist.base.binaries}"/>
    <mkdir dir="${dist.base.manual}"/>
    <mkdir dir="${java-repository.dir}"/>
    <antcall inheritAll="false" target="dist-internal">
      <param name="dist.dir" value="${dist.name}"/>
    </antcall>
  </target>

  <target name="zip-distribution" depends="-distribution-prep"
          description="--> creates the zip distribution">
    <zip destfile="${dist.base.binaries}/${dist.name}-bin.zip">
      <zipfileset dir="${dist.name}/.." filemode="755">
        <include name="${dist.name}/bin/ant"/>
        <include name="${dist.name}/bin/antRun"/>
        <include name="${dist.name}/bin/*.pl"/>
        <include name="${dist.name}/bin/*.py"/>
      </zipfileset>
      <fileset dir="${dist.name}/..">
        <include name="${dist.name}/"/>
        <exclude name="${dist.name}/bin/ant"/>
        <exclude name="${dist.name}/bin/antRun"/>
        <exclude name="${dist.name}/bin/*.pl"/>
        <exclude name="${dist.name}/bin/*.py"/>
      </fileset>
    </zip>
  </target>

  <condition property="buildosxpackage">
    <and>
       <os family="mac"/>
       <isset property="buildosxpackage.required"/>
    </and>
  </condition>

  <target name="pkg-distribution" depends="zip-distribution" if="buildosxpackage">
    <mkdir dir="${build.pkg.dir}"/>
    <unzip src="${dist.base.binaries}/${dist.name}-bin.zip" dest="${build.pkg.dir}">
      <mapper type="regexp" from="^([^/]*)/(.*)$$" to="\2"/>
    </unzip>
    <chmod perm="+x" type="file">
      <fileset dir="${build.pkg.dir}/bin">
        <include name="ant"/>
        <include name="antRun"/>
        <include name="*.pl"/>
        <include name="*.py"/>
      </fileset>
    </chmod>
    <exec executable="/usr/bin/pkgbuild">
      <arg value="--root"/>
      <arg value="${build.pkg.dir}"/>
      <arg value="--identifier"/>
      <arg value="org.apache.ant"/>
      <arg value="--version"/>
      <arg value="${project.version}"/>
      <arg value="--install-location"/>
      <arg value="/usr/local/ant"/>
      <arg value="${dist.base.binaries}/${dist.name}.pkg"/>
    </exec>
  </target>

  <target name="tar-distribution" depends="-distribution-prep"
          description="--> creates the tar distribution">
    <tar longfile="gnu"
         destfile="${dist.base.binaries}/${dist.name}-bin.tar">
      <!-- removes redundant definition of permissions, but seems to
           drop dirs (and to be slow)
           <zipfileset src="${dist.base.binaries}/${dist.name}-bin.zip"/>
      -->
      <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
        <include name="${dist.name}/bin/ant"/>
        <include name="${dist.name}/bin/antRun"/>
        <include name="${dist.name}/bin/*.pl"/>
        <include name="${dist.name}/bin/*.py"/>
      </tarfileset>
      <tarfileset dir="${dist.name}/.." username="ant" group="ant">
        <include name="${dist.name}/"/>
        <exclude name="${dist.name}/bin/ant"/>
        <exclude name="${dist.name}/bin/antRun"/>
        <exclude name="${dist.name}/bin/*.pl"/>
        <exclude name="${dist.name}/bin/*.py"/>
      </tarfileset>
    </tar>
    <gzip destfile="${dist.base.binaries}/${dist.name}-bin.tar.gz"
          src="${dist.base.binaries}/${dist.name}-bin.tar"/>
    <bzip2 destfile="${dist.base.binaries}/${dist.name}-bin.tar.bz2"
           src="${dist.base.binaries}/${dist.name}-bin.tar"/>
    <xz destfile="${dist.base.binaries}/${dist.name}-bin.tar.xz"
        src="${dist.base.binaries}/${dist.name}-bin.tar"/>
    <delete file="${dist.base.binaries}/${dist.name}-bin.tar"/>
  </target>

  <target name="main-distribution" depends="pkg-distribution,tar-distribution,jars-sources,test-jar-source"
          description="--> creates the zip, pkg, and tar distributions">

    <copy todir="${java-repository.dir}">
      <fileset dir="${dist.name}/lib">
        <include name="ant*.jar"/>
      </fileset>
      <mapper type="regexp" from="ant(.*).jar" to="ant\1/${project.version}/ant\1-${project.version}.jar"/>
    </copy>
    <copy todir="${java-repository.dir}">
      <fileset dir="${dist.name}/lib">
        <include name="*.pom"/>
      </fileset>
      <mapper>
        <mapper type="regexp" from="ant(.*).pom" to="ant\1/${project.version}/ant\1-${project.version}.pom"/>
      </mapper>
    </copy>
    <copy todir="${java-repository.dir}">
      <fileset dir="${build.lib-src}">
        <include name="ant*.jar"/>
      </fileset>
      <mapper type="regexp" from="ant(.*).jar" to="ant\1/${project.version}/ant\1-${project.version}-sources.jar"/>
    </copy>
    <jar destfile="${java-repository.dir}/ant/${project.version}/ant-${project.version}-javadoc.jar"
      basedir="${build.javadocs}">
      <metainf dir="${build.dir}">
        <include name="LICENSE.txt"/>
        <include name="NOTICE.txt"/>
      </metainf>
    </jar>

    <zip destfile="${dist.base.manual}/${dist.name}-manual.zip">
      <zipfileset dir="${dist.name}/manual" prefix="${dist.name}"/>
      <zipfileset file="NOTICE" prefix="${dist.name}"/>
    </zip>
    <tar longfile="gnu"
         destfile="${dist.base.manual}/${dist.name}-manual.tar">
      <tarfileset dir="${dist.name}/manual" prefix="${dist.name}"/>
      <tarfileset file="NOTICE" prefix="${dist.name}"/>
    </tar>
    <gzip destfile="${dist.base.manual}/${dist.name}-manual.tar.gz"
          src="${dist.base.manual}/${dist.name}-manual.tar"/>
    <bzip2 destfile="${dist.base.manual}/${dist.name}-manual.tar.bz2"
           src="${dist.base.manual}/${dist.name}-manual.tar"/>
    <xz destfile="${dist.base.manual}/${dist.name}-manual.tar.xz"
        src="${dist.base.manual}/${dist.name}-manual.tar"/>
    <delete file="${dist.base.manual}/${dist.name}-manual.tar"/>

    <delete dir="${dist.name}"/>
    <checksums>
      <fileset dir="${dist.base.binaries}/">
        <exclude name="**/*.asc"/>
        <exclude name="**/*.sha512"/>
      </fileset>
      <fileset dir="${dist.base.manual}/">
        <exclude name="**/*.asc"/>
        <exclude name="**/*.sha512"/>
      </fileset>
    </checksums>

    <antcall inheritAll="false" target="src-dist">
      <param name="src.dist.dir" value="${dist.name}"/>
    </antcall>
    <zip destfile="${dist.base.source}/${dist.name}-src.zip">
      <zipfileset dir="${dist.name}/.." filemode="755">
        <include name="${dist.name}/bootstrap.sh"/>
        <include name="${dist.name}/build.sh"/>
      </zipfileset>
      <fileset dir="${dist.name}/..">
        <include name="${dist.name}/"/>
        <exclude name="${dist.name}/bootstrap.sh"/>
        <exclude name="${dist.name}/build.sh"/>
      </fileset>
    </zip>
    <tar longfile="gnu"
         destfile="${dist.base.source}/${dist.name}-src.tar">
      <!--
          <zipfileset src="${dist.base.source}/${dist.name}-src.zip"/>
      -->
      <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant">
        <include name="${dist.name}/bootstrap.sh"/>
        <include name="${dist.name}/build.sh"/>
      </tarfileset>
      <tarfileset dir="${dist.name}/.." username="ant" group="ant">
        <include name="${dist.name}/"/>
        <exclude name="${dist.name}/bootstrap.sh"/>
        <exclude name="${dist.name}/build.sh"/>
      </tarfileset>
    </tar>
    <gzip destfile="${dist.base.source}/${dist.name}-src.tar.gz"
          src="${dist.base.source}/${dist.name}-src.tar"/>
    <bzip2 destfile="${dist.base.source}/${dist.name}-src.tar.bz2"
           src="${dist.base.source}/${dist.name}-src.tar"/>
    <xz destfile="${dist.base.source}/${dist.name}-src.tar.xz"
        src="${dist.base.source}/${dist.name}-src.tar"/>
    <delete file="${dist.base.source}/${dist.name}-src.tar"/>
    <delete dir="${dist.name}"/>
    <checksums>
      <fileset dir="${dist.base.source}/">
        <exclude name="**/*.asc"/>
        <exclude name="**/*.sha512"/>
      </fileset>
    </checksums>
  </target>

  <target name="distribution" depends="main-distribution"
          description="--> creates the full Apache Ant distribution">
  </target>

  <!--
       ===================================================================
         Cleans up build and distribution directories
       ===================================================================
  -->
  <target name="clean"
          description="--> cleans up build and dist directories">
    <delete dir="${build.dir}"/>
    <delete dir="${dist.base}"/>
    <delete dir="${dist.dir}"/>
    <delete>
      <fileset dir="." includes="**/*~" defaultexcludes="no"/>
    </delete>
  </target>

  <!--
       ===================================================================
         Cleans everything
       ===================================================================
  -->
  <target name="allclean" depends="clean"
          description="--> cleans up everything">
    <delete file="${bootstrap.dir}/bin/antRun"/>
    <delete file="${bootstrap.dir}/bin/antRun.bat"/>
    <delete>
      <fileset dir="${bootstrap.dir}/bin" includes="*.pl"/>
      <fileset dir="${bootstrap.dir}/bin" includes="*.py"/>
    </delete>
  </target>

  <!--
       ===================================================================
         Installs Apache Ant
       ===================================================================
  -->
  <target name="install">
    <fail message="You must set the property ant.install=/where/to/install" unless="ant.install"/>
    <antcall inheritAll="false" target="dist-internal">
      <param name="dist.dir" value="${ant.install}"/>
    </antcall>
  </target>

  <target name="install-lite">
    <fail message="You must set the property ant.install=/where/to/install" unless="ant.install"/>
    <antcall inheritAll="false" target="dist-lite">
      <param name="dist.dir" value="${ant.install}"/>
    </antcall>
  </target>

  <!--
       ===================================================================
         Creates the API documentation
       ===================================================================
  -->
  <target name="check-javadoc" depends="prepare">
    <uptodate property="javadoc.notrequired"
              targetfile="${build.javadocs}/packages.html">
      <srcfiles dir="${java.dir}" includes="**/*.java"/>
    </uptodate>
    <uptodate property="tests.javadoc.notrequired"
              targetfile="${build.tests.javadocs}/packages.html">
      <srcfiles dir="${src.junit}">
        <patternset refid="useful.tests"/>
      </srcfiles>
    </uptodate>
  </target>

  <target name="javadocs" depends="check-javadoc"
          description="--> creates the API documentation" unless="javadoc.notrequired">
    <mkdir dir="${build.javadocs}"/>
    <javadoc useexternalfile="yes"
             destdir="${build.javadocs}"
             failonerror="true"
             author="true"
             version="true"
             locale="en"
             windowtitle="${Name} API"
             doctitle="${Name}"
             maxmemory="1000M"
             verbose="${javadoc.verbose}"
             additionalparam="${javadoc.doclint.none}">

      <packageset dir="${java.dir}"/>

      <!-- hide some meta information for javadoc -->
      <tag name="todo" description="To do:" scope="all"/>
      <tag name="ant.task" enabled="false" description="Task:" scope="types"/>
      <tag name="ant.datatype" enabled="false" description="Data type:" scope="types"/>
      <tag name="ant.attribute" enabled="false" description="Attribute:" scope="types"/>
      <tag name="ant.attribute.group" enabled="false" description="Attribute group:" scope="types"/>
      <tag name="ant.element" enabled="false" description="Nested element:" scope="types"/>
      <group title="Apache Ant Core" packages="org.apache.tools.ant*"/>
      <group title="Core Tasks" packages="org.apache.tools.ant.taskdefs*"/>
      <group title="Core Types" packages="org.apache.tools.ant.types*"/>
      <group title="Optional Tasks" packages="org.apache.tools.ant.taskdefs.optional*"/>
      <group title="Optional Types" packages="org.apache.tools.ant.types.optional*"/>
      <group title="Ant Utilities" packages="org.apache.tools.ant.util*"/>
      <classpath refid="tests-classpath"/>
    </javadoc>
  </target>

  <target name="test-javadocs" depends="check-javadoc" unless="tests.javadoc.notrequired"
          description="--> creates the API documentation for test utilities">
    <mkdir dir="${build.tests.javadocs}"/>
    <javadoc useexternalfile="yes"
             destdir="${build.tests.javadocs}"
             failonerror="true"
             author="true"
             version="true"
             locale="en"
             windowtitle="${Name} Test Utilities"
             doctitle="${Name}"
             additionalparam="${javadoc.doclint.none}">

      <!-- hide some meta information for javadoc -->
      <tag name="pre" description="Precondition:" scope="all"/>

      <fileset dir="${src.junit}">
        <patternset refid="useful.tests"/>
      </fileset>
      <classpath refid="tests-classpath"/>
    </javadoc>
  </target>

  <!--
       ===================================================================
         Compile testcases
       ===================================================================
  -->
  <target name="compile-tests" depends="build" if="junit.present">
    <mkdir dir="${build.tests}"/>

    <javac srcdir="${src.junit}"
           includeantruntime="false"
           destdir="${build.tests}"
           debug="${debug}"
           target="${javac.target}"
           source="${javac.source}"
           release="${javac.release}"
           deprecation="${deprecation}">
      <classpath refid="tests-classpath"/>

      <selector refid="conditional-patterns"/>
    </javac>

    <!-- Used by AntlibTest.testAntlibResource: -->
    <jar jarfile="${build.tests}/org/apache/tools/ant/taskdefs/test2-antlib.jar">
      <manifest>
        <attribute name="Extension-name"
                   value="org.apache.tools.ant"/>
        <attribute name="Specification-Title"
                   value="Apache Ant"/>
        <attribute name="Specification-Version"
                   value="${manifest-version}"/>
        <attribute name="Specification-Vendor"
                   value="Apache Software Foundation"/>
        <attribute name="Implementation-Title"
                   value="org.apache.tools.ant"/>
        <attribute name="Implementation-Version"
                   value="${manifest-version}"/>
        <attribute name="Implementation-Vendor"
                   value="Apache Software Foundation"/>
      </manifest>
      <zipfileset dir="${tests.etc.dir}" fullpath="taskdefs/test.antlib.xml">
        <include name="taskdefs/test2.antlib.xml"/>
      </zipfileset>
    </jar>
  </target>

  <target name="dump-info" depends="dump-sys-properties,run-which"/>

  <target name="dump-sys-properties" depends="xml-check" unless="which.present">
    <echo message="java.vm.info=${java.vm.info}"/>
    <echo message="java.vm.name=${java.vm.name}"/>
    <echo message="java.vm.vendor=${java.vm.vendor}"/>
    <echo message="java.vm.version=${java.vm.version}"/>
    <echo message="os.arch=${os.arch}"/>
    <echo message="os.name=${os.name}"/>
    <echo message="os.version=${os.version}"/>
    <echo message="file.encoding=${file.encoding}"/>
    <echo message="user.language=${user.language}"/>
    <echo message="ant.version=${ant.version}"/>
  </target>

  <!-- helper class from Xalan2 to check for jar versioning of xml/xsl processors -->
  <target name="xml-check" depends="check-optional-packages" if="xalan.envcheck" unless="which.present">
    <java classname="org.apache.xalan.xslt.EnvironmentCheck"/>
  </target>

  <target name="run-which" depends="check-optional-packages" if="which.present">
    <java classname="org.apache.env.Which" taskname="which" classpathref="classpath"/>
  </target>

  <!-- test to see if we are online or not. can take a while when we are off line, so
       setting the property is a good shortcut-->
  <target name="probe-offline">
    <condition property="offline">
      <or>
        <isset property="offline"/>
        <not>
          <http url="http://www.apache.org/"/>
        </not>
      </or>
    </condition>
    <echo level="verbose"> offline=${offline}</echo>
  </target>

  <!--
       ===================================================================
         Run testcase
       ===================================================================
  -->

  <target name="check-failed">
    <condition property="tests.failed">
      <or>
        <isset property="junit.failed"/>
        <isset property="antunit.failed"/>
      </or>
    </condition>
  </target>

  <target name="test" depends="junit-report,antunit-report,check-failed"
          description="--> run unit tests and reports">
    <fail if="tests.failed" unless="ignore.tests.failed">Unit tests failed; see:
${build.junit.reports}
${antunit.reports}
    </fail>
  </target>

  <target name="run-tests" depends="junit-tests,antunit-tests,check-failed"
          description="--> run unit tests without reports">
    <fail if="tests.failed" message="Unit tests failed"/>
  </target>

  <target name="test-init" depends="probe-offline,check-optional-packages,dump-info">
    <mkdir dir="${build.junit.tmpdir}"/>
    <condition property="sun.io.useCanonCaches" value="false">
      <not>
        <javaversion atleast="9"/>
      </not>
    </condition>
    <macrodef name="test-junit">
      <element name="junit-nested" implicit="true"/>
      <sequential>
        <!-- Delete 'old' collector classes -->
        <delete failonerror="false">
          <fileset dir="${junit.collector.dir}" includes="${junit.collector.class}*.class"/>
        </delete>
        <!-- compile the FailedTests class if present -->
        <mkdir dir="${junit.collector.dir}"/>
        <!-- FIXME: removed junit collector build code
        <javac srcdir="${junit.collector.dir}" destdir="${junit.collector.dir}">
          <classpath id="failure.cp">
            <pathelement location="${build.classes}"/>
            <pathelement location="${build.tests}"/>
          </classpath>
        </javac>
        -->
        <available file="${junit.collector.dir}/${junit.collector.class}.class"
                   property="hasFailingTests"/>
        <!-- run the tests -->
        <mkdir dir="${build.junit.xml}"/>
        <property name="test.junit.vmargs" value=""/>
        <property name="ant.junit.failureCollector"
                  value="${junit.collector.dir}/${junit.collector.class}"/>
        <!-- TODO includeantruntime="false" does not solve "multiple versions of ant detected in path for junit" warning -->
        <junit printsummary="${junit.summary}"
               haltonfailure="${test.haltonfailure}"
               fork="${junit.fork}"
               forkmode="${junit.forkmode}"
               threads="${junit.threads}"
               tempdir="${build.dir}"
               failureproperty="junit.failed"
               errorproperty="junit.failed"
               filtertrace="${junit.filtertrace}">
          <sysproperty key="ant.home" value="${ant.home}"/>
          <sysproperty key="build.classes.value" value="${build.classes.value}"/>
          <sysproperty key="build.tests.value" value="${build.tests.value}"/>
          <sysproperty key="offline" value="${offline}"/>
          <sysproperty key="tests-classpath.value"
                       value="${toString:tests-runtime-classpath}"/>
          <sysproperty key="root" file="${basedir}"/>
          <sysproperty key="build.compiler" value="${build.compiler}"/>
          <sysproperty key="tests.and.ant.share.classloader"
                       value="${tests.and.ant.share.classloader}"/>
          <sysproperty key="java.io.tmpdir" file="${build.junit.tmpdir}"/>
          <!-- in Java8 the canonical cache seems to interfere with
               our symlink tests -->
          <syspropertyset>
            <propertyref name="sun.io.useCanonCaches"/>
          </syspropertyset>
          <classpath>
            <path refid="tests-runtime-classpath"/>
            <pathelement location="${junit.collector.dir}"/>
            <!-- FIXME: remove failure collector build code for the moment
                 <path refid="failure.cp"/>
            -->
          </classpath>
          <!-- FIXME: remove failure collector build code for the moment
               <formatter type="failure" usefile="false"/>
          -->
          <formatter type="xml"/>
          <jvmarg line="${test.junit.vmargs}"/>
          <!-- FIXME: remove failure collector build code for the moment
               <test name="${junit.collector.class}" if="hasFailingTests"/>
          -->
          <junit-nested/>
        </junit>
      </sequential>
    </macrodef>

    <fail>"testcase" cannot be specified with "junit.testcase" or "antunit.testcase".
      <condition>
        <and>
          <isset property="testcase"/>
          <or>
            <isset property="antunit.testcase"/>
            <isset property="junit.testcase"/>
          </or>
        </and>
      </condition>
    </fail>

    <condition property="antunit.testcase" value="${testcase}">
      <available file="${src.antunit}/${testcase}"/>
    </condition>

    <condition property="junit.testcase" value="${testcase}">
      <available classname="${testcase}" classpathref="tests-runtime-classpath" ignoresystemclasses="${ignoresystemclasses}"/>
    </condition>

    <fail>Cannot locate test ${testcase}
      <condition>
        <and>
          <isset property="testcase"/>
          <not>
            <or>
              <isset property="antunit.testcase"/>
              <isset property="junit.testcase"/>
            </or>
          </not>
        </and>
      </condition>
    </fail>

    <condition property="run.junit">
      <and>
        <not><equals arg1="${testcase}" arg2="${antunit.testcase}"/></not>
        <isset property="junit.present"/>
        <available file="${src.junit}"/>
      </and>
    </condition>

    <condition property="junit.single">
      <and>
        <isset property="junit.testcase"/>
        <isset property="run.junit"/>
      </and>
    </condition>

    <condition property="junit.batch">
      <and>
        <not><isset property="junit.testcase"/></not>
        <isset property="run.junit"/>
      </and>
    </condition>

    <condition property="run.antunit">
      <and>
        <not><equals arg1="${testcase}" arg2="${junit.testcase}"/></not>
        <isset property="antunit.present"/>
        <available file="${src.antunit}"/>
      </and>
    </condition>

    <condition property="run.antunit.report">
      <isset property="run.antunit"/>
    </condition>

    <condition property="run.junit.report">
      <isset property="run.junit"/>
    </condition>
  </target>

  <target name="junit-report" depends="junit-tests,junit-report-only"/>

  <target name="junit-report-only" depends="test-init" if="${run.junit.report}">
    <mkdir dir="${build.junit.reports}"/>
    <junitreport todir="${build.junit.reports}">
      <fileset dir="${build.junit.xml}">
        <include name="TEST-*.xml"/>
      </fileset>
      <report format="frames" todir="${build.junit.reports}"/>
    </junitreport>
  </target>

  <target name="junit-tests" depends="junit-batch,junit-single-test"/>

  <target name="junit-batch" depends="compile-tests,test-init" if="junit.batch">

    <property name="junit.includes" value="**/*Test*"/>
    <property name="junit.excludes" value=""/>

    <test-junit>
      <formatter type="brief" usefile="false"/>

      <batchtest todir="${build.junit.xml}" unless="hasFailingTests">
        <fileset dir="${src.junit}"
                 includes="${junit.includes}" excludes="${junit.excludes}">

          <!-- abstract classes, not testcases -->
          <exclude name="${taskdefs.package}/TaskdefsTest.java"/>
          <exclude name="${ant.package}/BuildFileTest.java"/>
          <exclude name="${ant.package}/MagicTestNames.java"/>
          <exclude name="${regexp.package}/RegexpMatcherTest.java"/>
          <exclude name="${regexp.package}/RegexpTest.java"/>
          <exclude name="${optional.package}/AbstractXSLTLiaisonTest.java"/>
          <exclude name="${ant.package}/types/AbstractFileSetTest.java"/>
          <exclude name="${ant.package}/types/selectors/BaseSelectorTest.java"/>

          <!-- helper classes, not testcases -->
          <exclude name="org/example/"/>
          <exclude name="${taskdefs.package}/TaskdefTest*Task.java"/>
          <exclude name="${optional.package}/junit/TestFormatter.java"/>
          <exclude name="${ant.package}/TestHelper.java"/>

          <!-- JUnit 5 / junitlauncher tests that aren't meant to run by junit task -->
          <exclude name="${optional.package}/junitlauncher/"/>

          <!-- interactive tests -->
          <exclude name="${taskdefs.package}/TestProcess.java"/>
          <exclude name="${optional.package}/splash/SplashScreenTest.java"/>

          <!-- only run these tests if their required libraries are installed -->
          <selector refid="conditional-patterns"/>

          <!-- tests excluded if the test is run in offline mode -->
          <patternset refid="onlinetests"/>

          <!-- failing tests excluded unless run.failing.tests is set -->
          <patternset refid="teststhatfail"/>

          <!-- needs BSF to work -->
          <exclude name="${optional.package}/Rhino*.java"
                   unless="bsf.present"/>
          <exclude name="${optional.package}/Rhino*.java"
                   unless="rhino.present"/>
          <exclude name="${optional.package}/script/*.java"
                   unless="bsf.present"/>
          <exclude name="${optional.package}/script/*.java"
                   unless="rhino.present"/>
          <exclude name="${optional.package}/BeanShellScriptTest.java"
                   unless="bsf.present"/>
          <exclude name="${optional.package}/BeanShellScriptTest.java"
                   unless="beanshell.present"/>
          <exclude name="${optional.type.package}/Script*.java"
                   unless="bsf.present"/>
          <exclude name="${optional.type.package}/Script*.java"
                   unless="rhino.present"/>

          <!-- fail if testcases can be loaded from the system classloader -->
          <exclude name="${ant.package}/AntClassLoaderDelegationTest.java"
                   if="tests.are.on.system.classpath"/>
          <exclude name="${optional.package}/junit/JUnitClassLoaderTest.java"
                   if="tests.are.on.system.classpath"/>

          <!-- these tests need to be localised before being ran???? -->
          <exclude name="${optional.package}/PvcsTest.java"/>

          <exclude name="${optional.package}/junit/JUnitReportTest.java"
                   unless="run.junitreport"/>

          <!-- needs xerces to work -->
          <exclude name="${ant.package}/IncludeTest.java"
                   unless="xerces1.present"/>
          <exclude name="${type.package}/selectors/ModifiedSelectorTest.java"
                   unless="xerces1.present"/>

          <!-- needs resolver.jar to work -->
          <exclude name="${optional.package}/XmlValidateCatalogTest.java"
                   unless="apache.resolver.present"/>

          <!-- needs jasperc -->
          <exclude name="${optional.package}/JspcTest.java"
                   unless="jasper.present"/>

          <!-- needs JavaMail -->
          <exclude name="${taskdefs.package}/email/EmailTaskTest.java"
                   unless="javamail.complete"/>

          <!--  These tests only passes if testcases and Ant classes have
               been loaded by the same classloader - will throw
               IllegalAccessExceptions otherwise.  -->
          <exclude name="${taskdefs.package}/SQLExecTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${taskdefs.package}/cvslib/ChangeLogWriterTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${taskdefs.package}/cvslib/ChangeLogParserTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${optional.package}/sos/SOSTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${optional.package}/vss/MSVSSTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${optional.package}/TraXLiaisonTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${taskdefs.package}/ProcessDestroyerTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${taskdefs.package}/ProtectedJarMethodsTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${ant.package}/launch/LocatorTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${ant.package}/DefaultLoggerTest.java"
                   unless="tests.and.ant.share.classloader"/>
          <exclude name="${taskdefs.package}/ZipExtraFieldTest.java"
                   unless="tests.and.ant.share.classloader"/>

          <!-- can only run if cvs is installed on your machine
               enable by setting the property have.cvs
          -->
          <exclude name="${taskdefs.package}/AbstractCvsTaskTest.java"
                   unless="have.cvs"/>

          <!-- needs a local ftp server and the entry of a user/password combination -->
          <exclude name="${optional.package}/net/FTPTest.java"/>

          <!-- test needs special setup -->
          <exclude name="${optional.package}/ssh/ScpTest.java"/>

          <!-- test fails if build/classes and ant.jar are using the same
               classloader  -->
          <exclude name="${ant.package}/util/ClasspathUtilsTest.java"
                   if="tests.and.ant.share.classloader"/>
        </fileset>
      </batchtest>
    </test-junit>
  </target>

  <target name="junit-single-test" depends="compile-tests,junit-single-test-only"
          description="--> runs the single unit test at $${junit.testcase}"/>

  <target name="junit-single-test-only" depends="test-init" if="junit.single"
          description="--> runs the single unit test at $${junit.testcase} (no compile)">
    <test-junit>
      <formatter type="plain" usefile="false"/>
      <test name="${junit.testcase}" todir="${build.junit.xml}"/>
    </test-junit>
  </target>

  <target name="interactive-tests" depends="compile-tests"
          description="--> runs interactive tests">
    <java classpathref="tests-runtime-classpath"
          classname="org.apache.tools.ant.taskdefs.TestProcess"
          fork="true"/>
  </target>

  <target name="-antunit-check-location">
    <condition property="antunit.recommended.location">
      <or>
        <equals arg1="${ant.home}" arg2="${bootstrap.dir}"/>
        <equals arg1="${ant.home}" arg2="${dist.dir}"/>
      </or>
    </condition>
  </target>

  <target name="-antunit-warn-location" depends="-antunit-check-location" if="run.antunit" unless="${antunit.recommended.location}">
      <echo>AntUnit tests must be run with ${bootstrap.dir} (or ${dist.dir}), not ${ant.home}. Try './build.sh antunit-tests' for example.</echo>
  </target>

  <target name="-ant-dist-warn-jdk9+" unless="jdk9+">
      <echo>Java 9+ features won't be available in the distribution</echo>
  </target>

  <target name="antunit-tests" depends="build,test-init,-antunit-warn-location" if="run.antunit"
          description="--> run the antunit tests">
    <condition property="antunit.includes" value="${antunit.testcase}"
               else="**/test.xml,**/*-test.xml">
      <isset property="antunit.testcase"/>
    </condition>

    <property name="antunit.excludes" value=""/>

    <mkdir dir="${antunit.xml}"/>
    <au:antunit xmlns:au="antlib:org.apache.ant.antunit"
                failonerror="false" errorproperty="antunit.failed">
      <fileset dir="${src.antunit}" includes="${antunit.includes}"
               excludes="${antunit.excludes}"/>
      <au:plainlistener logLevel="${antunit.loglevel}"/>
      <au:xmllistener todir="${antunit.xml}"/>
      <propertyset>
        <propertyref name="antunit.tmpdir"/>
        <propertyref name="ant.home"/>
        <propertyref name="jenkins"/>
      </propertyset>
    </au:antunit>
  </target>

  <target name="antunit-report" depends="antunit-tests,antunit-report-only"/>

  <target name="antunit-report-only" depends="test-init" if="run.antunit.report">
    <length>
      <fileset dir="${antunit.xml}" includes="TEST-*.xml"/>
    </length>
    <mkdir dir="${antunit.reports}"/>
    <junitreport todir="${antunit.reports}">
      <fileset dir="${antunit.xml}" includes="TEST-*.xml"/>
      <report styledir="${src.antunit}" format="frames"
              todir="${antunit.reports}"/>
    </junitreport>
    <length>
      <fileset dir="${antunit.xml}" includes="TEST-*.xml"/>
    </length>
  </target>

  <!-- JetBrains builds need this target -->
  <target name="printFailingTests" depends="print-failing-tests"/>

  <target name="print-failing-tests">
    <property name="failingtests.dir" value="${build.dir}/errors"/>
    <mkdir dir=""/>
    <xslt style="${etc.dir}/printFailingTests.xsl"
          destdir="${failingtests.dir}" extension=".txt"
          basedir="${build.dir}" includes="testcases/**/TEST-*.xml,antunit/xml/TEST-*.xml"/>
    <echo>+-------------------------------------------------------------------------------------</echo>
    <echo>| FAILING TESTS:</echo>
    <echo>+-------------------------------------------------------------------------------------</echo>
    <concat>
      <!-- generated message files if they arent empty -->
      <fileset dir="${failingtests.dir}">
        <size value="0" when="more"/>
      </fileset>
      <!-- 'skip' empty lines -->
      <filterchain>
        <linecontains>
          <contains value="|"/>
        </linecontains>
      </filterchain>
    </concat>
    <echo>+-------------------------------------------------------------------------------------</echo>
  </target>

  <!--
       ===================================================================
         Main target - runs dist-lite by default
       ===================================================================
  -->
  <target name="main" depends="dist-lite"
          description="--> creates a minimum distribution in ./dist"/>

  <!--
       ===================================================================
         MSI target - creates an MSI installer file with the help of
                      the WiX toolset and the dotnet Antlib.
       ===================================================================
  -->
  <target name="msi" depends="dist-internal" xmlns:dn="antlib:org.apache.ant.dotnet"
          description="--> creates an MSI file for Ant, requires WiX and the dotnet Antlib">

    <property name="msi.dir" value="${build.dir}"/>
    <property name="msi.name" value="${name}-${project.version}.msi"/>
    <property name="msi.file" value="${msi.dir}/${msi.name}"/>
    <property name="wix.home" value="${user.home}/wix"/>
    <property name="wixobj.dir" value="${build.dir}/wix"/>

    <property name="dist.dir.resolved" location="${dist.dir}"/>

    <mkdir dir="${wixobj.dir}"/>

    <dn:wix target="${msi.file}"
            mode="both" wixHome="${wix.home}" wixobjDestDir="${wixobj.dir}">
      <sources dir="${etc.dir}" includes="*.wxs"/>
      <moresources dir="${dist.dir}"/>

      <candleParameter name="dist.dir" value="${dist.dir.resolved}"/>
      <candleParameter name="version" value="${manifest-version}"/>
    </dn:wix>
  </target>

</project>
