<!--
 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="common-solr" default="default" xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
  <description>
    This file is designed for importing into a main build file, and not intended
    for standalone use.
  </description>

  <dirname file="${ant.file.common-solr}" property="common-solr.dir"/>
  
  <property name="Name" value="Solr" />
  
  <!-- solr uses Java 8 -->
  <property name="javac.release" value="8"/>
  <property name="javac.args" value="-Xlint:-deprecation"/>
  <property name="javac.profile.args" value=""/>

  <property name="dest" location="${common-solr.dir}/build" />
  <property name="build.dir" location="${dest}/${ant.project.name}"/>
  <property name="jacoco.report.dir" location="${dest}/jacoco"/>
  <property name="dist" location="${common-solr.dir}/dist"/>
  <property name="package.dir" location="${common-solr.dir}/package"/>
  <property name="maven.dist.dir" location="${package.dir}/maven"/>
  <property name="lucene-libs" location="${dest}/lucene-libs" />
  <property name="tests.userdir" location="src/test-files"/>
  <property name="tests.policy" location="${common-solr.dir}/server/etc/security.policy"/>
  <property name="server.dir" location="${common-solr.dir}/server" />
  <property name="example" location="${common-solr.dir}/example" />
  <property name="javadoc.dir" location="${dest}/docs"/>
  <property name="javadoc-online.dir" location="${dest}/docs-online"/>
  <property name="tests.cleanthreads.sysprop" value="perClass"/>

  <property name="changes.target.dir" location="${dest}/docs/changes"/>
  <property name="license.dir" location="${common-solr.dir}/licenses"/>

  <property name="solr.tgz.unpack.dir" location="${common-solr.dir}/build/solr.tgz.unpacked"/>
  <property name="dist.jar.dir.prefix" value="${solr.tgz.unpack.dir}/solr"/>
  <property name="dist.jar.dir.suffix" value="dist"/>

  <import file="${common-solr.dir}/../lucene/module-build.xml"/>

  <property name="solr.tgz.file" location="${common-solr.dir}/package/solr-${version}.tgz"/>
  <available file="${solr.tgz.file}" property="solr.tgz.exists"/>
  <available type="dir" file="${solr.tgz.unpack.dir}" property="solr.tgz.unpack.dir.exists"/>
  <target name="-ensure-solr-tgz-exists" unless="solr.tgz.exists">
    <ant dir="${common-solr.dir}" target="create-package" inheritall="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="-unpack-solr-tgz" unless="${solr.tgz.unpack.dir.exists}">
    <antcall target="-ensure-solr-tgz-exists">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </antcall>
    <mkdir dir="${solr.tgz.unpack.dir}"/>
    <untar compression="gzip" src="${solr.tgz.file}" dest="${solr.tgz.unpack.dir}">
      <patternset refid="patternset.lucene.solr.jars"/>
    </untar>
  </target>

  <!-- backwards compatibility with existing targets/tasks; TODO: remove this! -->
  <property name="fullnamever" value="${final.name}"/>

  <path id="additional.dependencies">
    <fileset dir="${common-solr.dir}/core/lib" excludes="${common.classpath.excludes}"/>
    <fileset dir="${common-solr.dir}/solrj/lib" excludes="${common.classpath.excludes}"/>
    <fileset dir="${common-solr.dir}/server/lib" excludes="${common.classpath.excludes}"/>
    <fileset dir="${common-solr.dir}/example/example-DIH/solr/db/lib" excludes="${common.classpath.excludes}"/>    
    <fileset dir="lib" excludes="${common.classpath.excludes}" erroronmissingdir="false"/>
  </path>

  <path id="solr.lucene.libs">
    <!-- List of jars that will be used as the foundation for both
         the base classpath, as well as copied into the lucene-libs dir 
         in the release.
    -->
    <!-- NOTE: lucene-core is explicitly not included because of the 
         base.classpath (compilation & tests are done directly against   
         the class files w/o needing to build the jar)
    -->
    <pathelement location="${analyzers-common.jar}"/>
    <pathelement location="${analyzers-kuromoji.jar}"/>
    <pathelement location="${analyzers-nori.jar}"/>
    <pathelement location="${analyzers-phonetic.jar}"/>
    <pathelement location="${codecs.jar}"/>
    <pathelement location="${backward-codecs.jar}"/>
    <pathelement location="${highlighter.jar}"/>
    <pathelement location="${memory.jar}"/>
    <pathelement location="${misc.jar}"/>
    <pathelement location="${spatial-extras.jar}"/>
    <pathelement location="${spatial3d.jar}"/>
    <pathelement location="${expressions.jar}"/>
    <pathelement location="${suggest.jar}"/>
    <pathelement location="${grouping.jar}"/>
    <pathelement location="${queries.jar}"/>
    <pathelement location="${queryparser.jar}"/>
    <pathelement location="${join.jar}"/>
    <pathelement location="${sandbox.jar}"/>
    <pathelement location="${classification.jar}"/>
  </path>

  <path id="solr.base.classpath">
    <pathelement location="${common-solr.dir}/build/solr-solrj/classes/java"/>
    <pathelement location="${common-solr.dir}/build/solr-core/classes/java"/>
    <path refid="solr.lucene.libs" />
    <path refid="additional.dependencies"/>
    <path refid="base.classpath"/>
  </path>

  <path id="classpath" refid="solr.base.classpath"/>

  <path id="solr.test.base.classpath">
    <pathelement path="${common-solr.dir}/build/solr-test-framework/classes/java"/>
    <fileset dir="${common-solr.dir}/test-framework/lib">
      <include name="*.jar"/>
      <exclude name="junit-*.jar" />
      <exclude name="randomizedtesting-runner-*.jar" />
      <exclude name="ant*.jar" />
    </fileset>
    <pathelement path="src/test-files"/>
    <path refid="test.base.classpath"/>
  </path>
 
  <path id="test.classpath" refid="solr.test.base.classpath"/>

  <macrodef name="solr-contrib-uptodate">
    <attribute name="name"/>
    <attribute name="property" default="@{name}.uptodate"/>
    <attribute name="classpath.property" default="@{name}.jar"/>
    <!-- set jarfile only, if the target jar file has no generic name -->
    <attribute name="jarfile" default="${common-solr.dir}/build/contrib/solr-@{name}/solr-@{name}-${version}.jar"/>
    <sequential>
      <!--<echo message="Checking '@{jarfile}' against source folder '${common.dir}/contrib/@{name}/src/java'"/>-->
      <property name="@{classpath.property}" location="@{jarfile}"/>
      <uptodate property="@{property}" targetfile="@{jarfile}">
        <srcfiles dir="${common-solr.dir}/contrib/@{name}/src/java" includes="**/*.java"/>
      </uptodate>
    </sequential>
  </macrodef>

  <target name="validate" depends="compile-tools">
  </target>

  <target name="init-dist" depends="resolve-groovy">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${package.dir}"/>
    <mkdir dir="${dist}"/>
    <mkdir dir="${maven.dist.dir}"/>
  </target>

  <target name="prep-lucene-jars" 
          depends="resolve-groovy,
                   jar-lucene-core, jar-backward-codecs, jar-analyzers-phonetic, jar-analyzers-kuromoji, jar-analyzers-nori, jar-codecs,jar-expressions, jar-suggest, jar-highlighter, jar-memory,
                   jar-misc, jar-spatial-extras, jar-spatial3d, jar-grouping, jar-queries, jar-queryparser, jar-join, jar-sandbox, jar-classification">
      <property name="solr.deps.compiled" value="true"/>
  </target>
  
  <target name="lucene-jars-to-solr" 
          depends="-lucene-jars-to-solr-not-for-package,-lucene-jars-to-solr-package"/>
  
  <target name="-lucene-jars-to-solr-not-for-package" unless="called.from.create-package">
    <sequential>
      <antcall target="prep-lucene-jars" inheritall="true"/>
      <property name="solr.deps.compiled" value="true"/>
      <copy todir="${lucene-libs}" preservelastmodified="true" flatten="true" failonerror="true" overwrite="true">
        <path refid="solr.lucene.libs" />
        <!-- NOTE: lucene-core is not already included in "solr.lucene.libs" because of its use in classpaths. -->
        <fileset file="${lucene-core.jar}" />
      </copy>
    </sequential>
  </target>
  
  <target name="-lucene-jars-to-solr-package" if="called.from.create-package">
    <sequential>
      <antcall target="-unpack-lucene-tgz" inheritall="true"/>
      <pathconvert property="relative.solr.lucene.libs" pathsep=",">
        <path refid="solr.lucene.libs"/>
        <fileset file="${lucene-core.jar}"/>
        <globmapper from="${common.build.dir}/*" to="*" handledirsep="true"/>
      </pathconvert>
      <mkdir dir="${lucene-libs}"/>
      <copy todir="${lucene-libs}" preservelastmodified="true" flatten="true" failonerror="true" overwrite="true">
        <fileset dir="${lucene.tgz.unpack.dir}/lucene-${version}" includes="${relative.solr.lucene.libs}"/>
      </copy>
    </sequential>
  </target>

  <!-- Shared core/solrj/test-framework/contrib targets -->
  
  <macrodef name="solr-jarify" description="Builds a Solr JAR file">
    <attribute name="basedir" default="${build.dir}/classes/java"/>
    <attribute name="destfile" default="${build.dir}/${final.name}.jar"/>
    <attribute name="title" default="Apache Solr Search Server: ${ant.project.name}"/>
    <attribute name="excludes" default="**/pom.xml,**/*.iml"/>
    <attribute name="metainf.source.dir" default="${common-solr.dir}"/>
    <attribute name="implementation.title" default="org.apache.solr"/>
    <attribute name="manifest.file" default="${manifest.file}"/>
    <element name="solr-jarify-filesets" optional="true"/>
    <element name="solr-jarify-additional-manifest-attributes" optional="true"/>
    <sequential>
      <jarify basedir="@{basedir}" destfile="@{destfile}"
              title="@{title}" excludes="@{excludes}"
              metainf.source.dir="@{metainf.source.dir}"
              implementation.title="@{implementation.title}"
              manifest.file="@{manifest.file}">
        <filesets>
          <solr-jarify-filesets />
        </filesets>
        <jarify-additional-manifest-attributes>
          <solr-jarify-additional-manifest-attributes />
        </jarify-additional-manifest-attributes>
      </jarify>
    </sequential>
  </macrodef>

  <target name="jar-core" depends="compile-core">
    <solr-jarify/>
  </target>

  <target name="compile-core" depends="prep-lucene-jars,resolve-example,resolve-server,common.compile-core"/>
  <target name="compile-test" depends="compile-solr-test-framework,common.compile-test"/>

  <target name="dist" depends="jar-core">
    <copy file="${build.dir}/${fullnamever}.jar" todir="${dist}"/>
  </target>

  <property name="lucenedocs" location="${common.dir}/build/docs"/>

  <!-- dependency to ensure all lucene javadocs are present -->
  <target name="lucene-javadocs" depends="javadocs-lucene-core,javadocs-analyzers-common,javadocs-analyzers-icu,javadocs-analyzers-kuromoji,javadocs-analyzers-nori,javadocs-analyzers-phonetic,javadocs-analyzers-smartcn,javadocs-analyzers-morfologik,javadocs-analyzers-stempel,javadocs-backward-codecs,javadocs-codecs,javadocs-expressions,javadocs-suggest,javadocs-grouping,javadocs-queries,javadocs-queryparser,javadocs-highlighter,javadocs-memory,javadocs-misc,javadocs-spatial-extras,javadocs-join,javadocs-test-framework"/>

  <!-- create javadocs for the current module -->
  <target name="javadocs" depends="compile-core,define-lucene-javadoc-url,lucene-javadocs,javadocs-solr-core,check-javadocs-uptodate" unless="javadocs-uptodate-${name}">
     <sequential>
      <mkdir dir="${javadoc.dir}/${name}"/>
      <solr-invoke-javadoc>
        <solrsources>
          <packageset dir="${src.dir}"/>
        </solrsources>
        <links>
          <link href="../solr-solrj"/>
          <link href="../solr-core"/>
        </links>
      </solr-invoke-javadoc>
      <solr-jarify basedir="${javadoc.dir}/${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
     </sequential>
  </target>

  <target name="check-solr-core-javadocs-uptodate" unless="solr-core-javadocs.uptodate">
    <uptodate property="solr-core-javadocs.uptodate" targetfile="${build.dir}/solr-core/solr-core-${version}-javadoc.jar">
       <srcfiles dir="${common-solr.dir}/core/src/java" includes="**/*.java"/>
    </uptodate>
  </target>

  <target name="check-solrj-javadocs-uptodate" unless="solrj-javadocs.uptodate">
    <uptodate property="solrj-javadocs.uptodate" targetfile="${build.dir}/solr-solrj/solr-solrj-${version}-javadoc.jar">
       <srcfiles dir="${common-solr.dir}/solrj/src/java" includes="**/*.java"/>
    </uptodate>
  </target>

  <target name="javadocs-solr-core" depends="check-solr-core-javadocs-uptodate" unless="solr-core-javadocs.uptodate">
    <ant dir="${common-solr.dir}/core" target="javadocs" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solr-core-javadocs.uptodate" value="true"/>
  </target>

  <target name="javadocs-solrj" depends="check-solrj-javadocs-uptodate" unless="solrj-javadocs.uptodate">
    <ant dir="${common-solr.dir}/solrj" target="javadocs" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solrj-javadocs.uptodate" value="true"/>
  </target>

  <!-- macro to create solr javadocs with links to lucene. make sure calling task depends on lucene-javadocs -->
  <macrodef name="solr-invoke-javadoc">
      <element name="solrsources" optional="yes"/>
      <element name="links" optional="yes"/>
      <attribute name="destdir" default="${javadoc.dir}/${name}"/>
      <attribute name="title" default="${Name} ${version} ${name} API"/>
      <attribute name="overview" default="${src.dir}/overview.html"/>
    <sequential>
      <mkdir dir="@{destdir}"/>
      <invoke-javadoc destdir="@{destdir}" title="@{title}" overview="@{overview}">
        <sources>
          <solrsources/>
          <link offline="true" href="${lucene.javadoc.url}core" packagelistloc="${lucenedocs}/core"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-common" packagelistloc="${lucenedocs}/analyzers-common"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-icu" packagelistloc="${lucenedocs}/analyzers-icu"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-kuromoji" packagelistloc="${lucenedocs}/analyzers-kuromoji"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-nori" packagelistloc="${lucenedocs}/analyzers-nori"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-morfologik" packagelistloc="${lucenedocs}/analyzers-morfologik"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-phonetic" packagelistloc="${lucenedocs}/analyzers-phonetic"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-smartcn" packagelistloc="${lucenedocs}/analyzers-smartcn"/>
          <link offline="true" href="${lucene.javadoc.url}analyzers-stempel" packagelistloc="${lucenedocs}/analyzers-stempel"/>
          <link offline="true" href="${lucene.javadoc.url}backward-codecs" packagelistloc="${lucenedocs}/backward-codecs"/>
          <link offline="true" href="${lucene.javadoc.url}codecs" packagelistloc="${lucenedocs}/codecs"/>
          <link offline="true" href="${lucene.javadoc.url}expressions" packagelistloc="${lucenedocs}/expressions"/>
          <link offline="true" href="${lucene.javadoc.url}suggest" packagelistloc="${lucenedocs}/suggest"/>
          <link offline="true" href="${lucene.javadoc.url}grouping" packagelistloc="${lucenedocs}/grouping"/>
          <link offline="true" href="${lucene.javadoc.url}join" packagelistloc="${lucenedocs}/join"/>
          <link offline="true" href="${lucene.javadoc.url}queries" packagelistloc="${lucenedocs}/queries"/>
          <link offline="true" href="${lucene.javadoc.url}queryparser" packagelistloc="${lucenedocs}/queryparser"/>
          <link offline="true" href="${lucene.javadoc.url}highlighter" packagelistloc="${lucenedocs}/highlighter"/>
          <link offline="true" href="${lucene.javadoc.url}memory" packagelistloc="${lucenedocs}/memory"/>
          <link offline="true" href="${lucene.javadoc.url}misc" packagelistloc="${lucenedocs}/misc"/>
          <link offline="true" href="${lucene.javadoc.url}classification" packagelistloc="${lucenedocs}/classification"/>
          <link offline="true" href="${lucene.javadoc.url}spatial-extras" packagelistloc="${lucenedocs}/spatial-extras"/>
          <links/>
          <link href=""/>
        </sources>
      </invoke-javadoc>
    </sequential>
  </macrodef>

  <target name="define-lucene-javadoc-url" depends="resolve-groovy" unless="lucene.javadoc.url">
    <property name="useLocalJavadocUrl" value=""/>
    <groovy><![CDATA[
      String url, version = properties['version'];
      String useLocalJavadocUrl = properties['useLocalJavadocUrl'];
      if (version != properties['version.base'] || Boolean.parseBoolean(useLocalJavadocUrl)) {
        url = new File(properties['common.dir'], 'build' + File.separator + 'docs').toURI().toASCIIString();
        if (!(url =~ /\/$/)) url += '/';
      } else {
        version = version.replace('.', '_');
        url = 'https://lucene.apache.org/core/' + version + '/';
      }
      task.log('Using the following URL to refer to Lucene Javadocs: ' + url);
      properties['lucene.javadoc.url'] = url;
    ]]></groovy>
  </target>

  <target name="define-solr-javadoc-url" depends="resolve-groovy" unless="solr.javadoc.url">
    <groovy><![CDATA[
      String url, version = properties['version'];
      if (version != properties['version.base']) {
        url = '';
        task.log('Disabled Solr Javadocs online URL for packaging (custom build / SNAPSHOT version).');
      } else {
        version = version.replace('.', '_');
        url = 'https://lucene.apache.org/solr/' + version + '/';
        task.log('Using the following URL to refer to Solr Javadocs: ' + url);
      }
      properties['solr.javadoc.url'] = url;
    ]]></groovy>
  </target>

  <target name="jar-src">
    <sequential>
      <mkdir dir="${build.dir}"/>
      <solr-jarify basedir="${src.dir}" destfile="${build.dir}/${final.name}-src.jar">
        <solr-jarify-filesets>
          <fileset dir="${resources.dir}" erroronmissingdir="no"/>
        </solr-jarify-filesets>
      </solr-jarify>
    </sequential>
  </target>

  <target name="-validate-maven-dependencies" depends="-validate-maven-dependencies.init">
    <m2-validate-dependencies pom.xml="${maven.pom.xml}" licenseDirectory="${license.dir}">
      <additional-filters>
        <replaceregex pattern="jetty([^/]+)$" replace="jetty" flags="gi" />
        <replaceregex pattern="slf4j-([^/]+)$" replace="slf4j" flags="gi" />
        <replaceregex pattern="(bcmail|bcprov)-([^/]+)$" replace="\1" flags="gi" />
      </additional-filters>
      <excludes>
        <rsel:or>
          <rsel:name name="**/lucene-*-${maven.version.glob}.jar" handledirsep="true"/>
          <rsel:name name="**/solr-*-${maven.version.glob}.jar" handledirsep="true"/>
          <!-- TODO: figure out what is going on here with servlet-apis -->
          <rsel:name name="**/*servlet*.jar" handledirsep="true"/>
        </rsel:or>
      </excludes>
    </m2-validate-dependencies>
  </target>

  <!-- Solr core targets -->
  <target name="compile-solr-core" description="Compile Solr core." unless="solr.core.compiled">
    <ant dir="${common-solr.dir}/core" target="compile-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solr.core.compiled" value="true"/>
  </target>
  <target name="compile-test-solr-core" description="Compile solr core tests">
    <ant dir="${common-solr.dir}/core" target="compile-test" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solr.core.compiled" value="true"/>
  </target>
  <target name="dist-core" depends="init-dist"
          description="Creates the Solr JAR Distribution file.">
    <ant dir="${common-solr.dir}/core" target="dist" inheritall="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <!-- Solrj targets -->
  <target name="compile-solrj" description="Compile the java client." unless="solrj.compiled">
    <ant dir="${common-solr.dir}/solrj" target="compile-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solrj.compiled" value="true"/>
  </target>
  <target name="compile-test-solrj" description="Compile java client tests">
    <ant dir="${common-solr.dir}/solrj" target="compile-test" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solrj.compiled" value="true"/>
  </target>
  <target name="dist-solrj" depends="init-dist"
          description="Creates the Solr-J JAR Distribution file.">
    <ant dir="${common-solr.dir}/solrj" target="dist" inheritall="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="jar-solrj" description="Jar Solr-J">
    <ant dir="${common-solr.dir}/solrj" target="jar-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <!-- Solr test-framework targets -->
  <target name="compile-solr-test-framework" description="Compile the Solr test-framework" unless="solr.test.framework.compiled">
    <ant dir="${common-solr.dir}/test-framework" target="compile-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solr.core.compiled" value="true"/>
    <property name="solr.test.framework.compiled" value="true"/>
  </target>

  <target name="jar-solr-test-framework" depends="compile-solr-test-framework">
    <ant dir="${common-solr.dir}/test-framework" target="jar-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <!-- resolve dependencies in the example (relied upon by compile/tests) -->
  <target name="resolve-example" unless="example.libs.uptodate">
    <ant dir="${common-solr.dir}/example/example-DIH" target="resolve" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="example.libs.uptodate" value="true"/>
  </target>

  <!-- resolve dependencies in the server directory (relied upon by compile/tests) -->
  <target name="resolve-server" unless="server.libs.uptodate">
    <ant dir="${common-solr.dir}/server" target="resolve" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="server.libs.uptodate" value="true"/>
  </target>

  <macrodef name="contrib-crawl">
    <attribute name="target" default=""/>
    <attribute name="failonerror" default="true"/>
    <sequential>
      <subant target="@{target}" failonerror="@{failonerror}" inheritall="false">
        <propertyset refid="uptodate.and.compiled.properties"/>
        <fileset dir="." includes="contrib/*/build.xml"/>
      </subant>
    </sequential>
  </macrodef>

  <target name="-compile-test-lucene-analysis">
    <ant dir="${common.dir}/analysis" target="compile-test" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <target name="-compile-test-lucene-queryparser">
    <ant dir="${common.dir}/queryparser" target="compile-test" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <target name="-compile-test-lucene-backward-codecs">
    <ant dir="${common.dir}/backward-codecs" target="compile-test" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <!-- Solr contrib targets -->
  <target name="-compile-analysis-extras">
    <ant dir="${common-solr.dir}/contrib/analysis-extras" target="compile" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <target name="compile-contrib" description="Compile contrib modules">
    <contrib-crawl target="compile-core"/>
  </target>
  
  <target name="compile-test-contrib" description="Compile contrib modules' tests">
    <contrib-crawl target="compile-test"/>
  </target>

  <target name="javadocs-contrib" description="Compile contrib modules">
    <contrib-crawl target="javadocs"/>
  </target>

  <target name="jar-contrib" description="Jar contrib modules">
    <contrib-crawl target="jar-core"/>
  </target>

  <target name="contribs-add-to-webapp">
    <mkdir dir="${dest}/web"/>
    <delete dir="${dest}/web" includes="**/*" failonerror="false"/>
    <contrib-crawl target="add-to-webapp"/>
  </target>
  
  <!-- Forbidden API Task, customizations for Solr -->
  <target name="-check-forbidden-all" depends="-init-forbidden-apis,compile-core,compile-test">
    <property prefix="ivyversions" file="${common.dir}/ivy-versions.properties"/><!-- for commons-io version -->
    <forbidden-apis suppressAnnotation="**.SuppressForbidden" classpathref="forbidden-apis.allclasses.classpath" targetVersion="${javac.release}">
      <signatures>
        <bundled name="jdk-unsafe"/>
        <bundled name="jdk-deprecated"/>
        <bundled name="jdk-non-portable"/>
        <bundled name="jdk-reflection"/>
        <bundled name="commons-io-unsafe-${ivyversions./commons-io/commons-io}"/>
        <fileset dir="${common.dir}/tools/forbiddenApis">
          <include name="base.txt" />
          <include name="servlet-api.txt" />
          <include name="solr.txt" />
        </fileset>
      </signatures>
      <fileset dir="${build.dir}/classes/java" excludes="${forbidden-base-excludes}"/>
      <fileset dir="${build.dir}/classes/test" excludes="${forbidden-tests-excludes}" erroronmissingdir="false"/>
    </forbidden-apis>
  </target>
  
  <target name="-check-forbidden-sysout"/>

  <!-- hack for now to disable *all* Solr tests on Jenkins when "tests.disable-solr" property is set -->
  <target name="test" unless="tests.disable-solr">
    <antcall target="common.test" inheritrefs="true" inheritall="true"/>
  </target>
  
  <!-- In Solr we do not generate MR-JARs yet; disable completely so we do not accidentally patch -->
  <target name="patch-mrjar-classes"/>
</project>
