<!--
 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 1.7 -->
  <property name="javac.source" value="1.7"/>
  <property name="javac.target" value="1.7"/>
  <property name="javac.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}/../lucene/tools/junit4/solr-tests.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="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-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.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}"/>
  </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>

  <!-- 
    We don't want to run HDFS tests on Windows, because they require Cygwin.
    If you have Cygwin or manually raised permgen, you can override this property on command line:
  -->
  <condition property="tests.disableHdfs" value="true">
    <os family="windows"/>
  </condition>

  <!-- SOLR needs extra PermGen space to run tests, but only on Java 7 (Oracle, OpenJDK): -->
  <condition property="tests.memory.args" value="-XX:MaxPermSize=192m">
    <and>
      <equals arg1="${build.java.runtime}" arg2="1.7"/>
      <or>
        <contains string="${java.vm.name}" substring="hotspot" casesensitive="false"/>
        <contains string="${java.vm.name}" substring="openjdk" casesensitive="false"/>
      </or>
    </and>
  </condition>

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

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

  <target name="prep-lucene-jars" 
          depends="jar-lucene-core, jar-backward-codecs, jar-analyzers-phonetic, jar-analyzers-kuromoji, jar-codecs,jar-expressions, jar-suggest, jar-highlighter, jar-memory,
                   jar-misc, jar-spatial, jar-grouping, jar-queries, jar-queryparser, jar-join, jar-sandbox">
      <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-phonetic,javadocs-analyzers-smartcn,javadocs-analyzers-morfologik,javadocs-analyzers-stempel,javadocs-analyzers-uima,javadocs-backward-codecs,javadocs-codecs,javadocs-expressions,javadocs-suggest,javadocs-grouping,javadocs-queries,javadocs-queryparser,javadocs-highlighter,javadocs-memory,javadocs-misc,javadocs-spatial,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-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}analyzers-uima" packagelistloc="${lucenedocs}/analyzers-uima"/>
          <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}spatial" packagelistloc="${lucenedocs}/spatial"/>
          <links/>
          <link href=""/>
        </sources>
      </invoke-javadoc>
    </sequential>
  </macrodef>

  <target name="define-lucene-javadoc-url" depends="resolve-groovy" unless="lucene.javadoc.url">
    <groovy><![CDATA[
      String url, version = properties['version'];
      if (version.contains('-SNAPSHOT')) {
        url = new File(properties['common.dir'], 'build' + File.separator + 'docs').toURI().toASCIIString();
        if (!(url =~ /\/$/)) url += '/';
      } else {
        version = version.replace('.', '_');
        url = 'http://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="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>

  <!-- 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 file="${common.dir}/ivy-versions.properties"/> <!-- for commons-io version -->
    <forbidden-apis internalRuntimeForbidden="true" suppressAnnotation="**.SuppressForbidden" classpathref="forbidden-apis.allclasses.classpath">
      <signatures>
        <bundled name="jdk-unsafe-${javac.target}"/>
        <bundled name="jdk-deprecated-${javac.target}"/>
        <bundled name="commons-io-unsafe-${/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>
</project>
