<?xml version="1.0"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<project name="${name}" default="runtime" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:artifact="antlib:org.apache.maven.artifact.ant">

  <!-- Load all the default properties, and any the user wants    -->
  <!-- to contribute (without having to type -D or edit this file -->
  <property file="${user.home}/build.properties" />
  <property file="${basedir}/build.properties" />
  <property file="${basedir}/default.properties" />
  <property name="release.dir" value="${build.dir}/release"/>

  <!-- define Maven coordinates, repository url and artifacts name etc -->
  <property name="groupId" value="org.apache.nutch" />
  <property name="artifactId" value="nutch" />
  <property name="maven-repository-url" value="https://repository.apache.org/service/local/staging/deploy/maven2" />
  <property name="maven-repository-id" value="apache.releases.https" />
  <property name="maven-jar" value="${release.dir}/${artifactId}-${version}.jar" />
  <property name="maven-javadoc-jar" value="${release.dir}/${artifactId}-${version}-javadoc.jar" />
  <property name="maven-sources-jar" value="${release.dir}/${artifactId}-${version}-sources.jar" />


  <!-- the normal classpath -->
  <path id="classpath">
    <pathelement location="${build.classes}"/>
    <fileset dir="${build.lib.dir}">
      <include name="*.jar" />
    </fileset>
  </path>

  <dirname property="plugins.classpath.dir" file="${build.plugins}"/>

  <!-- the unit test classpath -->
  <path id="test.classpath">
    <pathelement location="${test.build.classes}" />
    <pathelement location="${conf.dir}"/>
    <pathelement location="${test.src.dir}"/>
    <pathelement location="${plugins.classpath.dir}"/>
    <path refid="classpath"/>
    <pathelement location="${build.dir}/${final.name}.job" />
    <fileset dir="${build.lib.dir}">
      <include name="*.jar" />
    </fileset>
    <fileset dir="${test.build.lib.dir}">
      <include name="*.jar" />
    </fileset>
  </path>

  <presetdef name="javac">
    <javac includeantruntime="false" />
  </presetdef>

  <!-- ====================================================== -->
  <!-- Stuff needed by all targets                            -->
  <!-- ====================================================== -->
  <target name="init" depends="ivy-init" description="--> stuff required by all targets">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes}"/>
    <mkdir dir="${release.dir}"/>

    <mkdir dir="${test.build.dir}"/>
    <mkdir dir="${test.build.classes}"/>
    <mkdir dir="${test.build.lib.dir}"/>

    <touch datetime="01/25/1971 2:00 pm">
      <fileset dir="${conf.dir}" includes="**/*.template"/>
    </touch>

    <copy todir="${conf.dir}" verbose="true">
      <fileset dir="${conf.dir}" includes="**/*.template"/>
      <mapper type="glob" from="*.template" to="*"/>
    </copy>
  </target>

  <!-- ====================================================== -->
  <!-- Compile the Java files                                 -->
  <!-- ====================================================== -->
  <target name="compile" depends="compile-core, compile-plugins" description="--> compile all Java files"/>

  <target name="compile-core" depends="init, resolve-default" description="--> compile core Java files only">
    <javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="org/apache/nutch/**/*.java"
     destdir="${build.classes}"
     debug="${javac.debug}"
     optimize="${javac.optimize}"
     target="${javac.version}"
     source="${javac.version}"
     deprecation="${javac.deprecation}">
      <compilerarg value="-Xlint:-path"/>
      <classpath refid="classpath"/>
    </javac>
    <copy todir="${build.classes}">
      <fileset dir="${src.dir}" includes="**/*.html" />
      <fileset dir="${src.dir}" includes="**/*.css" />
      <fileset dir="${src.dir}" includes="**/*.properties" />
    </copy>
  </target>

  <target name="compile-plugins" depends="init, resolve-default" description="--> compile plugins only">
    <ant dir="src/plugin" target="deploy" inheritAll="false"/>
  </target>

  <!-- ================================================================== -->
  <!-- Make nutch.jar                                                     -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <target name="jar" depends="compile-core" description="--> make nutch.jar">
    <copy file="${conf.dir}/nutch-default.xml"
          todir="${build.classes}"/>
    <copy file="${conf.dir}/nutch-site.xml"
          todir="${build.classes}"/>
    <jar jarfile="${build.dir}/${final.name}.jar"
         basedir="${build.classes}">
      <manifest>
      </manifest>
    </jar>
  </target>

  <!-- ================================================================== -->
  <!-- Make Maven Central Release                                         -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <target name="release" depends="compile-core" description="--> generate the release distribution">
    <copy file="${conf.dir}/nutch-default.xml"
          todir="${build.classes}"/>
    <copy file="${conf.dir}/nutch-site.xml"
          todir="${build.classes}"/>

  <!-- build the main artifact -->
  <jar jarfile="${maven-jar}" basedir="${build.classes}" />

    <fail message="Unsupported Java version: ${java.version}. Javadoc requires Java version 7u25 or greater. See https://issues.apache.org/jira/browse/NUTCH-1590">
      <condition>
        <or>
          <matches string="${java.version}" pattern="1.7.0_2[01234].+" casesensitive="false" />
          <matches string="${java.version}" pattern="1.7.0_1.+" casesensitive="false" />
          <equals arg1="${ant.java.version}" arg2="1.6" />
          <equals arg1="${ant.java.version}" arg2="1.5" />
        </or>
      </condition>
    </fail>

    <!-- build the javadoc artifact -->
    <javadoc
      destdir="${release.dir}/javadoc"
      overview="${src.dir}/overview.html"
      author="true"
      version="true"
      use="true"
      windowtitle="${name} ${version} API"
      doctitle="${name} ${version} API"
      bottom="Copyright &amp;copy; ${year} The Apache Software Foundation"
      >
      <arg value="${javadoc.proxy.host}"/>
      <arg value="${javadoc.proxy.port}"/>

      <packageset dir="${src.dir}"/>
      <packageset dir="${plugins.dir}/any23/src/java/" />
      <packageset dir="${plugins.dir}/creativecommons/src/java"/>
      <packageset dir="${plugins.dir}/feed/src/java"/>
      <packageset dir="${plugins.dir}/headings/src/java"/>
      <packageset dir="${plugins.dir}/exchange-jexl/src/java"/>
      <packageset dir="${plugins.dir}/index-anchor/src/java"/>
      <packageset dir="${plugins.dir}/index-basic/src/java"/>
      <packageset dir="${plugins.dir}/index-geoip/src/java"/>
      <packageset dir="${plugins.dir}/index-jexl-filter/src/java"/>
      <packageset dir="${plugins.dir}/index-links/src/java"/>
      <packageset dir="${plugins.dir}/index-metadata/src/java"/>
      <packageset dir="${plugins.dir}/index-more/src/java"/>
      <packageset dir="${plugins.dir}/index-replace/src/java"/>
      <packageset dir="${plugins.dir}/index-static/src/java"/>
      <packageset dir="${plugins.dir}/indexer-cloudsearch/src/java/" />
      <packageset dir="${plugins.dir}/indexer-csv/src/java"/>
      <packageset dir="${plugins.dir}/indexer-dummy/src/java"/>
      <packageset dir="${plugins.dir}/indexer-elastic-rest/src/java/"/>
      <packageset dir="${plugins.dir}/indexer-elastic/src/java/" />
      <packageset dir="${plugins.dir}/indexer-kafka/src/java/" />
      <packageset dir="${plugins.dir}/indexer-rabbit/src/java"/>
      <packageset dir="${plugins.dir}/indexer-solr/src/java"/>
      <packageset dir="${plugins.dir}/language-identifier/src/java"/>
      <packageset dir="${plugins.dir}/lib-htmlunit/src/java"/>
      <packageset dir="${plugins.dir}/lib-http/src/java"/>
      <packageset dir="${plugins.dir}/lib-rabbitmq/src/java"/>
      <packageset dir="${plugins.dir}/lib-regex-filter/src/java"/>
      <packageset dir="${plugins.dir}/lib-selenium/src/java"/>
      <packageset dir="${plugins.dir}/microformats-reltag/src/java"/>
      <packageset dir="${plugins.dir}/mimetype-filter/src/java"/>
      <packageset dir="${plugins.dir}/parse-ext/src/java"/>
      <packageset dir="${plugins.dir}/parse-html/src/java"/>
      <packageset dir="${plugins.dir}/parse-js/src/java"/>
      <packageset dir="${plugins.dir}/parse-metatags/src/java"/>
      <packageset dir="${plugins.dir}/parse-swf/src/java"/>
      <packageset dir="${plugins.dir}/parse-tika/src/java"/>
      <packageset dir="${plugins.dir}/parse-zip/src/java"/>
      <packageset dir="${plugins.dir}/parsefilter-naivebayes/src/java"/>
      <packageset dir="${plugins.dir}/parsefilter-regex/src/java"/>
      <packageset dir="${plugins.dir}/protocol-file/src/java"/>
      <packageset dir="${plugins.dir}/protocol-ftp/src/java"/>
      <packageset dir="${plugins.dir}/protocol-htmlunit/src/java"/>
      <packageset dir="${plugins.dir}/protocol-http/src/java"/>
      <packageset dir="${plugins.dir}/protocol-httpclient/src/java"/>
      <packageset dir="${plugins.dir}/protocol-interactiveselenium/src/java"/>
      <packageset dir="${plugins.dir}/protocol-okhttp/src/java"/>
      <packageset dir="${plugins.dir}/protocol-selenium/src/java"/>
      <packageset dir="${plugins.dir}/publish-rabbitmq/src/java"/>
      <packageset dir="${plugins.dir}/scoring-depth/src/java"/>
      <packageset dir="${plugins.dir}/scoring-link/src/java"/>
      <packageset dir="${plugins.dir}/scoring-opic/src/java"/>
      <packageset dir="${plugins.dir}/scoring-orphan/src/java"/>
      <packageset dir="${plugins.dir}/scoring-similarity/src/java"/>
      <packageset dir="${plugins.dir}/subcollection/src/java"/>
      <packageset dir="${plugins.dir}/tld/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-automaton/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-domain/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-domainblacklist/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-fast/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-ignoreexempt/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-prefix/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-regex/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-suffix/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-validator/src/java"/>
      <packageset dir="${plugins.dir}/urlmeta/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-ajax/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-basic/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-host/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-pass/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-protocol/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-querystring/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-regex/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-slash/src/java"/>

      <link href="${javadoc.link.java}"/>
      <link href="${javadoc.link.hadoop}"/>
      <link href="${javadoc.link.lucene.core}"/>
      <link href="${javadoc.link.lucene.analyzers-common}"/>
      <link href="${javadoc.link.solr-solrj}"/>

      <classpath refid="classpath"/>
      <classpath>
        <fileset dir="${plugins.dir}" >
          <include name="**/*.jar"/>
        </fileset>
      </classpath>

      <group title="Core" packages="org.apache.nutch.*"/>
      <group title="Plugins API" packages="${plugins.api}"/>
      <group title="Protocol Plugins" packages="${plugins.protocol}"/>
      <group title="URL Filter Plugins" packages="${plugins.urlfilter}"/>
      <group title="URL Normalizer Plugins" packages="${plugins.urlnormalizer}"/>
      <group title="Scoring Plugins" packages="${plugins.scoring}"/>
      <group title="Parse Plugins" packages="${plugins.parse}"/>
      <group title="Parse Filter Plugins" packages="${plugins.parsefilter}"/>
      <group title="Publisher Plugins" packages="${plugins.publisher}"/>
      <group title="Exchange Plugins" packages="${plugins.exchange}"/>
      <group title="Indexing Filter Plugins" packages="${plugins.index}"/>
      <group title="Indexer Plugins" packages="${plugins.indexer}"/>
      <group title="Misc. Plugins" packages="${plugins.misc}"/>
    </javadoc>
    <jar jarfile="${maven-javadoc-jar}">
      <fileset dir="${release.dir}/javadoc" />
    </jar>

    <!-- build the sources artifact -->
    <jar jarfile="${maven-sources-jar}">
      <fileset dir="${src.dir}" />
    </jar>
  </target>

  <!-- ================================================================== -->
  <!-- Deploy to Apache Nexus                                             -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <target name="deploy" depends="release" description="--> deploy to Apache Nexus">

  <!-- generate a pom file -->
  <ivy:makepom ivyfile="${ivy.file}" pomfile="${basedir}/pom.xml" templatefile="ivy/mvn.template">
     <mapping conf="default" scope="compile"/>
     <mapping conf="runtime" scope="runtime"/>
  </ivy:makepom>

  <!-- sign and deploy the main artifact -->
  <artifact:mvn>
    <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file" />
    <arg value="-Durl=${maven-repository-url}" />
    <arg value="-DrepositoryId=${maven-repository-id}" />
    <arg value="-DpomFile=pom.xml" />
    <arg value="-Dfile=${maven-jar}" />
    <arg value="-Papache-release" />
  </artifact:mvn>

  <!-- sign and deploy the sources artifact -->
  <artifact:mvn>
    <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file" />
    <arg value="-Durl=${maven-repository-url}" />
    <arg value="-DrepositoryId=${maven-repository-id}" />
    <arg value="-DpomFile=pom.xml" />
    <arg value="-Dfile=${maven-sources-jar}" />
    <arg value="-Dclassifier=sources" />
    <arg value="-Papache-release" />
  </artifact:mvn>

  <!-- sign and deploy the javadoc artifact -->
  <artifact:mvn>
    <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.5:sign-and-deploy-file" />
    <arg value="-Durl=${maven-repository-url}" />
    <arg value="-DrepositoryId=${maven-repository-id}" />
    <arg value="-DpomFile=pom.xml" />
    <arg value="-Dfile=${maven-javadoc-jar}" />
    <arg value="-Dclassifier=javadoc" />
    <arg value="-Papache-release" />
  </artifact:mvn>
  </target>

  <!-- ================================================================== -->
  <!-- Generate REST API Documentation with Miredot                       -->
  <!-- ================================================================== -->
  <target name="restdocs" description="--> generate REST API Documentation with Miredot">

    <!-- generate a pom file -->
    <ivy:makepom ivyfile="${ivy.file}" pomfile="${basedir}/pom.xml" templatefile="ivy/mvn.template">
      <mapping conf="default" scope="compile"/>
      <mapping conf="runtime" scope="runtime"/>
    </ivy:makepom>

    <!--artifact:dependencies pathId="dependency.classpath">
      <dependency groupId="log4j" artifactId="log4j" version="1.2.15" >
        <exclusion groupId="javax.jms" artifactId="jms" />
        <exclusion groupId="com.sun.jdmk" artifactId="jmxtools" />
        <exclusion groupId="com.sun.jmx" artifactId="jmxri" />
      </dependency>
    </artifact:dependencies-->

    <artifact:mvn>
      <arg value="test"/>
      <arg value="-e"/>
      <arg value="-o"/>
      <!-- run offline (-o): must not download dependencies as this is
           done from http://repo1.maven.org/ hardwired in
           maven-ant-tasks-2.1.3.jar, see NUTCH-2722.

           Dependencies and plugins need to be resolved and cached locally beforehand
           by running
             `mvn dependency:resolve`
           resp.
             `mvn dependency:resolve-plugins`
           after the pom.xml has been generated. -->
    </artifact:mvn>
  </target>

  <!-- ================================================================== -->
  <!-- Make job jar                                                       -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <target name="job" depends="compile" description="--> make nutch.job jar">
    <jar jarfile="${build.dir}/${final.name}.job">
      <!-- If the build.classes has the nutch config files because the jar
           command command has run, exclude them.  The conf directory has
           them.
      -->
      <zipfileset dir="${build.classes}"
                  excludes="nutch-default.xml,nutch-site.xml"/>
      <zipfileset dir="${conf.dir}" excludes="*.template,hadoop*.*"/>
      <zipfileset dir="${build.lib.dir}" prefix="lib"
                  includes="**/*.jar" excludes="hadoop-*.jar,slf4j*.jar,log4j*.jar"/>
      <zipfileset dir="${build.plugins}" prefix="classes/plugins"/>
    </jar>
  </target>

  <target name="runtime" depends="jar, job" description="--> default target for running Nutch">
    <mkdir dir="${runtime.dir}"/>
    <mkdir dir="${runtime.local}"/>
    <mkdir dir="${runtime.deploy}"/>
    <!-- deploy area -->
    <copy file="${build.dir}/${final.name}.job"
          todir="${runtime.deploy}"/>
    <copy todir="${runtime.deploy}/bin">
      <fileset dir="src/bin"/>
    </copy>
    <chmod perm="ugo+x" type="file">
        <fileset dir="${runtime.deploy}/bin"/>
    </chmod>
    <!-- local area -->
    <copy file="${build.dir}/${final.name}.jar"
          todir="${runtime.local}/lib"/>
    <copy todir="${runtime.local}/lib/native">
      <fileset dir="lib/native"/>
    </copy>
    <copy todir="${runtime.local}/conf">
      <fileset dir="${conf.dir}" excludes="*.template"/>
    </copy>
    <copy todir="${runtime.local}/bin">
      <fileset dir="src/bin"/>
    </copy>
    <chmod perm="ugo+x" type="file">
        <fileset dir="${runtime.local}/bin"/>
    </chmod>
    <copy todir="${runtime.local}/lib">
      <fileset dir="${build.dir}/lib"/>
    </copy>
    <copy todir="${runtime.local}/plugins">
      <fileset dir="${build.dir}/plugins"/>
    </copy>
    <copy todir="${runtime.local}/test">
      <fileset dir="${build.dir}/test"/>
    </copy>
  </target>

  <!-- ================================================================== -->
  <!-- Compile test code                                                  -->
  <!-- ================================================================== -->
  <target name="compile-core-test" depends="init, compile-core, resolve-test" description="--> compile test code">
    <javac
     encoding="${build.encoding}"
     srcdir="${test.src.dir}"
     includes="org/apache/nutch/**/*.java"
     destdir="${test.build.classes}"
     debug="${javac.debug}"
     optimize="${javac.optimize}"
     target="${javac.version}"
     source="${javac.version}"
     deprecation="${javac.deprecation}">
      <compilerarg value="-Xlint:-path"/>
      <classpath refid="test.classpath"/>
    </javac>
  </target>

  <!-- ================================================================== -->
  <!-- Run Nutch proxy                                                    -->
  <!-- ================================================================== -->

  <target name="proxy" depends="compile-core-test, job" description="--> run nutch proxy">
    <java classname="org.apache.nutch.tools.proxy.ProxyTestbed" fork="true">
      <classpath refid="test.classpath"/>
      <arg value="-fake"/>
<!--
      <arg value="-delay"/>
      <arg value="-200"/>
-->
      <jvmarg line="-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
    </java>
  </target>

  <!-- ================================================================== -->
  <!-- Run Nutch benchmarking analysis                                    -->
  <!-- ================================================================== -->

  <target name="benchmark" description="--> run nutch benchmarking analysis">
    <java classname="org.apache.nutch.tools.Benchmark" fork="true">
      <classpath refid="test.classpath"/>
      <jvmarg line="-Xmx512m -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
      <arg value="-maxPerHost"/>
      <arg value="10"/>
      <arg value="-seeds"/>
      <arg value="1"/>
      <arg value="-depth"/>
      <arg value="5"/>
    </java>
  </target>

  <!-- ================================================================== -->
  <!-- Run unit tests                                                     -->
  <!-- ================================================================== -->
  <target name="test" depends="test-core, test-plugins" description="--> run JUnit tests"/>

  <target name="test-core" depends="compile-core-test, job" description="--> run core JUnit tests only">

    <delete dir="${test.build.data}"/>
    <mkdir dir="${test.build.data}"/>
    <!--
     copy resources needed in junit tests
    -->
    <copy todir="${test.build.data}">
      <fileset dir="src/testresources" includes="**/*"/>
    </copy>

    <copy file="${test.src.dir}/log4j.properties"
          todir="${test.build.classes}"/>

    <copy file="${test.src.dir}/crawl-tests.xml"
        todir="${test.build.classes}"/>

    <copy file="${test.src.dir}/domain-urlfilter.txt"
        todir="${test.build.classes}"/>

    <copy file="${test.src.dir}/filter-all.txt"
        todir="${test.build.classes}"/>

    <junit printsummary="yes" haltonfailure="no" fork="yes" dir="${basedir}"
      errorProperty="tests.failed" failureProperty="tests.failed" maxmemory="1000m">
      <sysproperty key="test.build.data" value="${test.build.data}"/>
      <sysproperty key="test.src.dir" value="${test.src.dir}"/>
      <sysproperty key="javax.xml.parsers.DocumentBuilderFactory" value="com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"/>
      <classpath refid="test.classpath"/>
      <formatter type="${test.junit.output.format}" />
      <batchtest todir="${test.build.dir}" unless="testcase">
        <fileset dir="${test.src.dir}"
                 includes="**/Test*.java" excludes="**/${test.exclude}.java" />
      </batchtest>
      <batchtest todir="${test.build.dir}" if="testcase">
        <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/>
      </batchtest>
    </junit>

    <fail if="tests.failed">Tests failed!</fail>

  </target>

  <target name="test-plugins" depends="resolve-test, compile" description="--> run plugin JUnit tests only">
    <ant dir="src/plugin" target="test" inheritAll="false"/>
  </target>

  <target name="test-plugin" depends="resolve-test, compile" description="--> run a single plugin's JUnit tests">
    <ant dir="src/plugin" target="test-single" inheritAll="false"/>
  </target>

  <target name="nightly" depends="test, tar-src, zip-src" description="--> run the nightly target build">
  </target>

  <!-- ================================================================== -->
  <!-- Ivy targets                                                        -->
  <!-- ================================================================== -->

  <!-- target: resolve  ================================================= -->
  <target name="resolve-default" depends="clean-default-lib, init" description="--> resolve and retrieve dependencies with ivy">
    <ivy:resolve file="${ivy.file}" conf="default" log="download-only"/>
    <ivy:retrieve pattern="${build.lib.dir}/[artifact]-[revision].[ext]" symlink="false" log="quiet"/>
    <antcall target="copy-libs"/>
  </target>

  <target name="resolve-test" depends="clean-test-lib, init" description="--> resolve and retrieve dependencies with ivy">
    <ivy:resolve file="${ivy.file}" conf="test" log="download-only"/>
    <ivy:retrieve pattern="${test.build.lib.dir}/[artifact]-[revision].[ext]" symlink="false" log="quiet"/>
    <antcall target="copy-libs"/>
  </target>

  <target name="copy-libs" description="--> copy the libs in lib, which are not ivy enabled">
    <!-- copy the libs in lib, which are not ivy enabled-->
    <copy todir="${build.lib.dir}/" failonerror="false">
      <fileset dir="${lib.dir}" includes="**/*.jar"/>
    </copy>
  </target>

  <!-- target: publish-local  =========================================== -->
  <target name="publish-local" depends="jar" description="--> publish this project in the local ivy repository">
    <ivy:publish artifactspattern="${build.dir}/[artifact]-${version}.[ext]"
                    resolver="local"
                    pubrevision="${version}"
          pubdate="${now}"
                    status="integration"
              forcedeliver="true"
              overwrite="true"
        />
    <echo message="project ${ant.project.name} published locally with version ${version}" />
  </target>

  <!-- target: report  ================================================== -->
  <target name="report" depends="resolve-test" description="--> generates a report of dependencies">
    <ivy:report todir="${build.dir}" xml="true"/>
  </target>

  <!-- target: 3rd-party licenses report  =============================== -->
  <target name="report-licenses" depends="resolve-default" description="--> generates a report of licenses of dependencies">
    <ivy:report todir="${build.dir}" xml="false" graph="false" xslfile="ivy/ivy-report-license.xsl"
                outputpattern="[organisation]-[module]-[conf]-3rd-party-licenses.tsv"/>
  </target>

  <!-- target: ivy-init  ================================================ -->
  <target name="ivy-init" depends="ivy-probe-antlib, ivy-init-antlib" description="--> initialise Ivy settings">
    <ivy:settings file="${ivy.dir}/ivysettings.xml" />
  </target>

  <!-- target: ivy-probe-antlib  ======================================== -->
  <target name="ivy-probe-antlib" description="--> probe the antlib library">
    <condition property="ivy.found">
      <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" />
    </condition>
  </target>

  <!-- target: ivy-download  ============================================ -->
  <target name="ivy-download" description="--> download ivy">
    <available file="${ivy.jar}" property="ivy.jar.found"/>
    <antcall target="ivy-download-unchecked"/>
  </target>

  <!-- target: ivy-download-unchecked  ================================== -->
  <target name="ivy-download-unchecked" unless="ivy.jar.found" description="--> fetch any ivy file">
    <get src="${ivy.repo.url}" dest="${ivy.jar}" usetimestamp="true" />
  </target>

  <!-- target: ivy-init-antlib  ========================================= -->
  <target name="ivy-init-antlib" depends="ivy-download" unless="ivy.found" description="--> attempt to use Ivy with Antlib">
    <typedef uri="antlib:org.apache.ivy.ant" onerror="fail" loaderRef="ivyLoader">
      <classpath>
        <pathelement location="${ivy.jar}" />
      </classpath>
    </typedef>
    <fail>
      <condition>
        <not>
          <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" />
        </not>
      </condition>
      You need Apache Ivy 2.0 or later from http://ant.apache.org/
      It could not be loaded from ${ivy.repo.url}
    </fail>
  </target>

  <!-- Check dependencies for security vulnerabilities                                    -->
  <!-- requires installation of OWASP dependency check tool, see                          -->
  <!--   https://jeremylong.github.io/DependencyCheck/dependency-check-ant/index.html     -->
  <!-- get http://dl.bintray.com/jeremy-long/owasp/dependency-check-ant-3.3.2-release.zip -->
  <!-- and unzip in directory ./ivy/                                                      -->
  <property name="dependency-check.home" value="${ivy.dir}/dependency-check-ant/"/>
  <path id="dependency-check.path">
    <pathelement location="${dependency-check.home}/dependency-check-ant.jar"/>
    <fileset dir="${dependency-check.home}/lib" erroronmissingdir="false">
      <include name="*.jar"/>
    </fileset>
  </path>
  <taskdef resource="dependency-check-taskdefs.properties" onerror="ignore">
    <classpath refid="dependency-check.path" />
  </taskdef>
  <target name="report-vulnerabilities" description="--> check dependencies for security vulnerabilities">
    <dependency-check projectname="${name}"
                      reportoutputdirectory="${build.dir}"
                      reportformat="ALL">
        <suppressionfile path="${dependency-check.home}/dependency-check-suppressions.xml" />
        <retirejsFilter regex="copyright.*jeremy long" />
        <fileset dir="${build.dir}">
          <include name="lib/*.jar"/>
          <include name="plugins/*/*.jar"/>
        </fileset>
    </dependency-check>
  </target>

  <!-- ================================================================== -->
  <!-- Documentation                                                      -->
  <!-- ================================================================== -->
  <target name="javadoc" depends="compile" description="--> generate Javadoc">
    <fail message="Unsupported Java version: ${java.version}. Javadoc requires Java version 7u25 or greater. See https://issues.apache.org/jira/browse/NUTCH-1590">
      <condition>
        <or>
          <matches string="${java.version}" pattern="1.7.0_2[01234].+" casesensitive="false" />
          <matches string="${java.version}" pattern="1.7.0_1.+" casesensitive="false" />
          <equals arg1="${ant.java.version}" arg2="1.6" />
          <equals arg1="${ant.java.version}" arg2="1.5" />
        </or>
      </condition>
    </fail>
    <mkdir dir="${build.javadoc}"/>
    <javadoc
      overview="${src.dir}/overview.html"
      destdir="${build.javadoc}"
      author="true"
      version="true"
      use="true"
      windowtitle="${name} ${version} API"
      doctitle="${name} ${version} API"
      bottom="Copyright &amp;copy; ${year} The Apache Software Foundation"
      >
      <arg value="${javadoc.proxy.host}"/>
      <arg value="${javadoc.proxy.port}"/>

      <packageset dir="${src.dir}"/>
      <packageset dir="${plugins.dir}/any23/src/java/" />
      <packageset dir="${plugins.dir}/creativecommons/src/java"/>
      <packageset dir="${plugins.dir}/feed/src/java"/>
      <packageset dir="${plugins.dir}/headings/src/java"/>
      <packageset dir="${plugins.dir}/exchange-jexl/src/java"/>
      <packageset dir="${plugins.dir}/index-anchor/src/java"/>
      <packageset dir="${plugins.dir}/index-basic/src/java"/>
      <packageset dir="${plugins.dir}/index-geoip/src/java"/>
      <packageset dir="${plugins.dir}/index-jexl-filter/src/java"/>
      <packageset dir="${plugins.dir}/index-links/src/java"/>
      <packageset dir="${plugins.dir}/index-metadata/src/java"/>
      <packageset dir="${plugins.dir}/index-more/src/java"/>
      <packageset dir="${plugins.dir}/index-replace/src/java"/>
      <packageset dir="${plugins.dir}/index-static/src/java"/>
      <packageset dir="${plugins.dir}/indexer-cloudsearch/src/java/" />
      <packageset dir="${plugins.dir}/indexer-csv/src/java"/>
      <packageset dir="${plugins.dir}/indexer-dummy/src/java"/>
      <packageset dir="${plugins.dir}/indexer-elastic-rest/src/java/"/>
      <packageset dir="${plugins.dir}/indexer-elastic/src/java/" />
      <packageset dir="${plugins.dir}/indexer-kafka/src/java/" />
      <packageset dir="${plugins.dir}/indexer-rabbit/src/java"/>
      <packageset dir="${plugins.dir}/indexer-solr/src/java"/>
      <packageset dir="${plugins.dir}/language-identifier/src/java"/>
      <packageset dir="${plugins.dir}/lib-htmlunit/src/java"/>
      <packageset dir="${plugins.dir}/lib-http/src/java"/>
      <packageset dir="${plugins.dir}/lib-rabbitmq/src/java"/>
      <packageset dir="${plugins.dir}/lib-regex-filter/src/java"/>
      <packageset dir="${plugins.dir}/lib-selenium/src/java"/>
      <packageset dir="${plugins.dir}/microformats-reltag/src/java"/>
      <packageset dir="${plugins.dir}/mimetype-filter/src/java"/>
      <packageset dir="${plugins.dir}/parse-ext/src/java"/>
      <packageset dir="${plugins.dir}/parse-html/src/java"/>
      <packageset dir="${plugins.dir}/parse-js/src/java"/>
      <packageset dir="${plugins.dir}/parse-metatags/src/java"/>
      <packageset dir="${plugins.dir}/parse-swf/src/java"/>
      <packageset dir="${plugins.dir}/parse-tika/src/java"/>
      <packageset dir="${plugins.dir}/parse-zip/src/java"/>
      <packageset dir="${plugins.dir}/parsefilter-naivebayes/src/java"/>
      <packageset dir="${plugins.dir}/parsefilter-regex/src/java"/>
      <packageset dir="${plugins.dir}/protocol-file/src/java"/>
      <packageset dir="${plugins.dir}/protocol-ftp/src/java"/>
      <packageset dir="${plugins.dir}/protocol-htmlunit/src/java"/>
      <packageset dir="${plugins.dir}/protocol-http/src/java"/>
      <packageset dir="${plugins.dir}/protocol-httpclient/src/java"/>
      <packageset dir="${plugins.dir}/protocol-interactiveselenium/src/java"/>
      <packageset dir="${plugins.dir}/protocol-okhttp/src/java"/>
      <packageset dir="${plugins.dir}/protocol-selenium/src/java"/>
      <packageset dir="${plugins.dir}/publish-rabbitmq/src/java"/>
      <packageset dir="${plugins.dir}/scoring-depth/src/java"/>
      <packageset dir="${plugins.dir}/scoring-link/src/java"/>
      <packageset dir="${plugins.dir}/scoring-opic/src/java"/>
      <packageset dir="${plugins.dir}/scoring-orphan/src/java"/>
      <packageset dir="${plugins.dir}/scoring-similarity/src/java"/>
      <packageset dir="${plugins.dir}/subcollection/src/java"/>
      <packageset dir="${plugins.dir}/tld/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-automaton/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-domain/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-domainblacklist/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-fast/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-ignoreexempt/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-prefix/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-regex/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-suffix/src/java"/>
      <packageset dir="${plugins.dir}/urlfilter-validator/src/java"/>
      <packageset dir="${plugins.dir}/urlmeta/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-ajax/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-basic/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-host/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-pass/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-protocol/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-querystring/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-regex/src/java"/>
      <packageset dir="${plugins.dir}/urlnormalizer-slash/src/java"/>

      <link href="${javadoc.link.java}"/>
      <link href="${javadoc.link.hadoop}"/>
      <link href="${javadoc.link.lucene.core}"/>
      <link href="${javadoc.link.lucene.analyzers-common}"/>
      <link href="${javadoc.link.solr-solrj}"/>

      <classpath refid="classpath"/>
      <classpath>
        <fileset dir="${plugins.dir}" >
          <include name="**/*.jar"/>
        </fileset>
      </classpath>

      <group title="Core" packages="org.apache.nutch.*"/>
      <group title="Plugins API" packages="${plugins.api}"/>
      <group title="Protocol Plugins" packages="${plugins.protocol}"/>
      <group title="URL Filter Plugins" packages="${plugins.urlfilter}"/>
      <group title="URL Normalizer Plugins" packages="${plugins.urlnormalizer}"/>
      <group title="Scoring Plugins" packages="${plugins.scoring}"/>
      <group title="Parse Plugins" packages="${plugins.parse}"/>
      <group title="Parse Filter Plugins" packages="${plugins.parsefilter}"/>
      <group title="Publisher Plugins" packages="${plugins.publisher}"/>
      <group title="Exchange Plugins" packages="${plugins.exchange}"/>
      <group title="Indexing Filter Plugins" packages="${plugins.index}"/>
      <group title="Indexer Plugins" packages="${plugins.indexer}"/>
      <group title="Misc. Plugins" packages="${plugins.misc}"/>
    </javadoc>
    <!-- Copy the plugin.dtd file to the plugin doc-files dir -->
    <copy file="${plugins.dir}/plugin.dtd"
          todir="${build.javadoc}/org/apache/nutch/plugin/doc-files"/>
  </target>

  <target name="default-doc" description="--> generate default Nutch documentation">
    <style basedir="${conf.dir}" destdir="${docs.dir}"
           includes="nutch-default.xml" style="conf/nutch-conf.xsl"/>
  </target>

    <!-- ================================================================== -->
  <!-- D I S T R I B U T I O N                                            -->
  <!-- ================================================================== -->
  <!--                                                                    -->
  <!-- ================================================================== -->
  <target name="package-src" depends="runtime, javadoc" description="--> generate source distribution package">
    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${src.dist.version.dir}"/>
    <mkdir dir="${src.dist.version.dir}/lib"/>
    <mkdir dir="${src.dist.version.dir}/docs"/>
    <mkdir dir="${src.dist.version.dir}/docs/api"/>
    <mkdir dir="${src.dist.version.dir}/ivy"/>

    <copy todir="${src.dist.version.dir}/lib" includeEmptyDirs="false">
      <fileset dir="lib"/>
    </copy>

    <copy todir="${src.dist.version.dir}/conf">
      <fileset dir="${conf.dir}" excludes="**/*.template"/>
    </copy>

    <copy todir="${src.dist.version.dir}/docs/api">
      <fileset dir="${build.javadoc}"/>
    </copy>

    <copy todir="${src.dist.version.dir}">
      <fileset dir=".">
        <include name="*.txt" />
        <!--<include name="KEYS" />-->
      </fileset>
    </copy>

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

    <copy todir="${src.dist.version.dir}/ivy" includeEmptyDirs="true">
      <fileset dir="ivy"/>
    </copy>

    <copy todir="${src.dist.version.dir}/" file="build.xml"/>
    <copy todir="${src.dist.version.dir}/" file="default.properties"/>

  </target>

 <target name="package-bin" depends="runtime, javadoc" description="--> generate binary distribution package">
    <mkdir dir="${dist.dir}"/>
    <mkdir dir="${bin.dist.version.dir}"/>
    <mkdir dir="${bin.dist.version.dir}/lib"/>
    <mkdir dir="${bin.dist.version.dir}/bin"/>
    <mkdir dir="${bin.dist.version.dir}/conf"/>
    <mkdir dir="${bin.dist.version.dir}/docs"/>
    <mkdir dir="${bin.dist.version.dir}/docs/api"/>
    <mkdir dir="${bin.dist.version.dir}/plugins"/>

    <copy todir="${bin.dist.version.dir}/lib" includeEmptyDirs="false">
      <fileset dir="runtime/local/lib"/>
    </copy>

    <copy todir="${bin.dist.version.dir}/bin">
      <fileset dir="runtime/local/bin"/>
    </copy>

    <chmod perm="ugo+x" type="file">
        <fileset dir="${bin.dist.version.dir}/bin"/>
    </chmod>

    <copy todir="${bin.dist.version.dir}/conf">
      <fileset dir="runtime/local/conf" excludes="**/*.template"/>
    </copy>

    <copy todir="${bin.dist.version.dir}/docs/api">
      <fileset dir="${build.javadoc}"/>
    </copy>

    <copy todir="${bin.dist.version.dir}">
      <fileset dir=".">
        <include name="*.txt" />
      </fileset>
    </copy>

    <copy todir="${bin.dist.version.dir}/plugins" includeEmptyDirs="true">
      <fileset dir="runtime/local/plugins"/>
    </copy>

  </target>

  <!-- ================================================================== -->
  <!-- Make src release tarball                                               -->
  <!-- ================================================================== -->
  <target name="tar-src" depends="package-src" description="--> generate src.tar.gz distribution package">
    <tar compression="gzip" longfile="gnu"
      destfile="${src.dist.version.dir}.tar.gz">
      <tarfileset dir="${src.dist.version.dir}" mode="664" prefix="${final.name}">
        <exclude name="src/bin/*" />
        <include name="**" />
      </tarfileset>
      <tarfileset dir="${src.dist.version.dir}" mode="755" prefix="${final.name}">
        <include name="src/bin/*" />
      </tarfileset>
    </tar>
  </target>

  <!-- ================================================================== -->
  <!-- Make bin release tarball                                               -->
  <!-- ================================================================== -->
  <target name="tar-bin" depends="package-bin" description="--> generate bin.tar.gz distribution package">
    <tar compression="gzip" longfile="gnu"
      destfile="${bin.dist.version.dir}.tar.gz">
      <tarfileset dir="${bin.dist.version.dir}" mode="664" prefix="${final.name}">
        <exclude name="bin/*" />
        <include name="**" />
      </tarfileset>
      <tarfileset dir="${bin.dist.version.dir}" mode="755" prefix="${final.name}">
        <include name="bin/*" />
      </tarfileset>
    </tar>
  </target>

  <!-- ================================================================== -->
  <!-- Make src release zip                                               -->
  <!-- ================================================================== -->
  <target name="zip-src" depends="package-src" description="--> generate src.zip distribution package">
   <zip compress="true" casesensitive="yes"
     destfile="${src.dist.version.dir}.zip">
   <zipfileset dir="${src.dist.version.dir}" filemode="664" prefix="${final.name}">
       <exclude name="src/bin/*" />
       <include name="**" />
   </zipfileset>
   <zipfileset dir="${src.dist.version.dir}" filemode="755" prefix="${final.name}">
       <include name="src/bin/*" />
   </zipfileset>
   </zip>
  </target>

  <!-- ================================================================== -->
  <!-- Make bin release zip                                               -->
  <!-- ================================================================== -->
  <target name="zip-bin" depends="package-bin" description="--> generate bin.zip distribution package">
   <zip compress="true" casesensitive="yes"
     destfile="${bin.dist.version.dir}.zip">
   <zipfileset dir="${bin.dist.version.dir}" filemode="664" prefix="${final.name}">
       <exclude name="bin/*" />
       <include name="**" />
   </zipfileset>
   <zipfileset dir="${bin.dist.version.dir}" filemode="755" prefix="${final.name}">
       <include name="bin/*" />
   </zipfileset>
   </zip>
  </target>

  <!-- ================================================================== -->
  <!-- Clean.  Delete the build files, and their directories              -->
  <!-- ================================================================== -->

  <!-- target: clean  =================================================== -->
  <target name="clean" depends="clean-build, clean-lib, clean-dist, clean-runtime" description="--> clean the project" />

  <!-- target: clean-eclipse ============================================ -->
  <target name="clean-eclipse" depends="clean-build, clean-lib, clean-dist" description="--> cleans the eclipse project"/>

  <!-- target: clean-local  ============================================= -->
  <target name="clean-local" depends=""
                description="--> cleans the local repository for the current module">
    <delete dir="${ivy.local.default.root}/${ivy.organisation}/${ivy.module}"/>
  </target>

  <!-- target: clean-lib  =============================================== -->
  <target name="clean-lib" depends="clean-default-lib, clean-test-lib"
          description="--> clean the project libraries directories (dependencies: default + test)">
  </target>
  <!-- target: clean-default-lib  =============================================== -->
  <target name="clean-default-lib" description="--> clean the project libraries directory (dependencies)">
   <delete includeemptydirs="true" dir="${build.lib.dir}"/>
  </target>
  <!-- target: clean-test-lib  =============================================== -->
  <target name="clean-test-lib" description="--> clean the project test libraries directory (dependencies)">
    <delete includeemptydirs="true" dir="${test.build.lib.dir}"/>
  </target>

  <!-- target: clean-build  ============================================= -->
  <target name="clean-build" description="--> clean the project built files">
    <delete includeemptydirs="true" dir="${build.dir}"/>
  </target>

  <!-- target: clean-dist   ============================================= -->
  <target name="clean-dist" description="--> clean the project dist files">
    <delete includeemptydirs="true" dir="${dist.dir}"/>
  </target>

  <!-- target: clean-cache  ============================================= -->
  <target name="clean-cache" depends=""
                        description="--> delete ivy cache">
    <ivy:cleancache />
  </target>

  <target name="clean-runtime" description="--> clean the project runtime area">
    <delete includeemptydirs="true" dir="${runtime.dir}"/>
  </target>

  <!-- ================================================================== -->
  <!-- RAT targets                                                        -->
  <!-- ================================================================== -->
  <target name="rat-sources-typedef" description="--> run RAT antlib task">
    <typedef resource="org/apache/rat/anttasks/antlib.xml" >
      <classpath>
        <fileset dir="." includes="rat*.jar"/>
      </classpath>
    </typedef>
  </target>

  <target name="rat-sources" depends="rat-sources-typedef"
    description="--> runs RAT tasks over src/java">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <fileset dir="src">
        <include name="java/**/*"/>
        <include name="plugin/**/src/**/*"/>
      </fileset>
    </rat:report>
  </target>


  <!-- ================================================================== -->
  <!-- Eclipse targets                                                    -->
  <!-- ================================================================== -->

  <!-- classpath for generating eclipse project -->
  <path id="eclipse.classpath">
    <fileset dir="${build.lib.dir}">
      <include name="*.jar" />
      <exclude name="ant-eclipse-1.0-jvm1.2.jar" />
    </fileset>
    <fileset dir="${build.plugins}">
      <include name="**/*.jar" />
    </fileset>
    <fileset dir="${test.build.lib.dir}">
      <include name="*.jar" />
    </fileset>
  </path>

  <!-- target: ant-eclipse-download   =================================== -->
  <target name="ant-eclipse-download" description="--> downloads the ant-eclipse binary.">
    <get src="https://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"
         dest="${build.dir}/ant-eclipse-1.0.bin.tar.bz2" usetimestamp="false" />

    <untar src="${build.dir}/ant-eclipse-1.0.bin.tar.bz2"
           dest="${build.dir}" compression="bzip2">
      <patternset>
        <include name="lib/ant-eclipse-1.0-jvm1.2.jar"/>
      </patternset>
    </untar>

    <delete file="${build.dir}/ant-eclipse-1.0.bin.tar.bz2" />
  </target>

  <!-- target: eclipse   ================================================ -->
  <target name="eclipse"
          depends="clean-eclipse,init,resolve-test,job,ant-eclipse-download"
          description="--> create eclipse project files">

    <pathconvert property="eclipse.project">
      <path path="${basedir}"/>
      <regexpmapper from="^.*/([^/]+)$$" to="\1" handledirsep="yes"/>
    </pathconvert>

    <taskdef name="eclipse"
             classname="prantl.ant.eclipse.EclipseTask"
             classpath="${build.dir}/lib/ant-eclipse-1.0-jvm1.2.jar" />
    <eclipse updatealways="true">
      <project name="${eclipse.project}" />
      <classpath>
        <library path="${conf.dir}" exported="false" />
        <library path="${basedir}/src/bin" exported="false" />
        <library pathref="eclipse.classpath" exported="false" />

        <source path="${basedir}/src/java/" />
        <source path="${basedir}/src/test/" output="build/test/classes" />

        <source path="${plugins.dir}/any23/src/java/" />
        <source path="${plugins.dir}/any23/src/test/" />
        <source path="${plugins.dir}/creativecommons/src/java/" />
        <source path="${plugins.dir}/creativecommons/src/test/" />
        <source path="${plugins.dir}/feed/src/java/" />
        <source path="${plugins.dir}/feed/src/test/" />
        <source path="${plugins.dir}/headings/src/java/" />
        <source path="${plugins.dir}/headings/src/test/" />
        <source path="${plugins.dir}/exchange-jexl/src/java/" />
        <source path="${plugins.dir}/index-anchor/src/java/" />
        <source path="${plugins.dir}/index-anchor/src/test/" />
        <source path="${plugins.dir}/index-basic/src/java/" />
        <source path="${plugins.dir}/index-basic/src/test/" />
        <source path="${plugins.dir}/index-geoip/src/java/" />
        <source path="${plugins.dir}/index-jexl-filter/src/java/" />
        <source path="${plugins.dir}/index-jexl-filter/src/test/" />
        <source path="${plugins.dir}/index-links/src/java/" />
        <source path="${plugins.dir}/index-links/src/test/" />
        <source path="${plugins.dir}/index-metadata/src/java/" />
        <source path="${plugins.dir}/index-more/src/java/" />
        <source path="${plugins.dir}/index-more/src/test/" />
        <source path="${plugins.dir}/index-replace/src/java/" />
        <source path="${plugins.dir}/index-replace/src/test/" />
        <source path="${plugins.dir}/index-static/src/java/" />
        <source path="${plugins.dir}/index-static/src/test/" />
        <source path="${plugins.dir}/indexer-cloudsearch/src/java/" />
        <source path="${plugins.dir}/indexer-csv/src/java"/>
        <source path="${plugins.dir}/indexer-csv/src/test"/>
        <source path="${plugins.dir}/indexer-dummy/src/java/" />
        <source path="${plugins.dir}/indexer-elastic-rest/src/java/"/>
        <source path="${plugins.dir}/indexer-elastic/src/java/" />
        <source path="${plugins.dir}/indexer-elastic/src/test/" />
        <source path="${plugins.dir}/indexer-kafka/src/java/" />
        <source path="${plugins.dir}/indexer-rabbit/src/java/" />
        <source path="${plugins.dir}/indexer-solr/src/java/" />
        <source path="${plugins.dir}/language-identifier/src/java/" />
        <source path="${plugins.dir}/language-identifier/src/test/" />
        <source path="${plugins.dir}/lib-htmlunit/src/java/" />
        <source path="${plugins.dir}/lib-http/src/java/" />
        <source path="${plugins.dir}/lib-http/src/test/" />
        <source path="${plugins.dir}/lib-rabbitmq/src/java/" />
        <source path="${plugins.dir}/lib-regex-filter/src/java/" />
        <source path="${plugins.dir}/lib-regex-filter/src/test/" />
        <source path="${plugins.dir}/lib-selenium/src/java/" />
        <source path="${plugins.dir}/microformats-reltag/src/java/" />
        <source path="${plugins.dir}/mimetype-filter/src/java/" />
        <source path="${plugins.dir}/mimetype-filter/src/test/" />
        <source path="${plugins.dir}/parse-ext/src/java/" />
        <source path="${plugins.dir}/parse-ext/src/test/" />
        <source path="${plugins.dir}/parse-html/src/java/" />
        <source path="${plugins.dir}/parse-html/src/test/" />
        <source path="${plugins.dir}/parse-js/src/java/" />
        <source path="${plugins.dir}/parse-js/src/test/" />
        <source path="${plugins.dir}/parse-metatags/src/java/" />
        <source path="${plugins.dir}/parse-metatags/src/test/" />
        <source path="${plugins.dir}/parse-swf/src/java/" />
        <source path="${plugins.dir}/parse-swf/src/test/" />
        <source path="${plugins.dir}/parse-tika/src/java/" />
        <source path="${plugins.dir}/parse-tika/src/test/" />
        <source path="${plugins.dir}/parse-zip/src/java/" />
        <source path="${plugins.dir}/parse-zip/src/test/" />
        <source path="${plugins.dir}/parsefilter-naivebayes/src/java/" />
        <source path="${plugins.dir}/parsefilter-regex/src/java/" />
        <source path="${plugins.dir}/parsefilter-regex/src/test/" />
        <source path="${plugins.dir}/protocol-file/src/java/" />
        <source path="${plugins.dir}/protocol-file/src/test/" />
        <source path="${plugins.dir}/protocol-ftp/src/java/" />
        <source path="${plugins.dir}/protocol-htmlunit/src/java/" />
        <source path="${plugins.dir}/protocol-http/src/java/" />
        <source path="${plugins.dir}/protocol-http/src/test/" />
        <source path="${plugins.dir}/protocol-httpclient/src/java/" />
        <source path="${plugins.dir}/protocol-httpclient/src/test/" />
        <source path="${plugins.dir}/protocol-interactiveselenium/src/java/" />
        <source path="${plugins.dir}/protocol-okhttp/src/java/" />
        <source path="${plugins.dir}/protocol-okhttp/src/test/" />
        <source path="${plugins.dir}/protocol-selenium/src/java"/>
        <source path="${plugins.dir}/publish-rabbitmq/src/java"/>
        <source path="${plugins.dir}/scoring-depth/src/java/" />
        <source path="${plugins.dir}/scoring-link/src/java/" />
        <source path="${plugins.dir}/scoring-opic/src/java/" />
        <source path="${plugins.dir}/scoring-orphan/src/java"/>
        <source path="${plugins.dir}/scoring-orphan/src/test"/>
        <source path="${plugins.dir}/scoring-similarity/src/java/" />
        <source path="${plugins.dir}/subcollection/src/java/" />
        <source path="${plugins.dir}/subcollection/src/test/" />
        <source path="${plugins.dir}/tld/src/java/" />
        <source path="${plugins.dir}/urlfilter-automaton/src/java/" />
        <source path="${plugins.dir}/urlfilter-automaton/src/test/" />
        <source path="${plugins.dir}/urlfilter-domain/src/java/" />
        <source path="${plugins.dir}/urlfilter-domain/src/test/" />
        <source path="${plugins.dir}/urlfilter-domainblacklist/src/java/" />
        <source path="${plugins.dir}/urlfilter-domainblacklist/src/test/" />
        <source path="${plugins.dir}/urlfilter-fast/src/java/"/>
        <source path="${plugins.dir}/urlfilter-fast/src/test/"/>
        <source path="${plugins.dir}/urlfilter-ignoreexempt/src/java/" />
        <source path="${plugins.dir}/urlfilter-prefix/src/java/" />
        <source path="${plugins.dir}/urlfilter-prefix/src/test/" />
        <source path="${plugins.dir}/urlfilter-regex/src/java/" />
        <source path="${plugins.dir}/urlfilter-regex/src/test/" />
        <source path="${plugins.dir}/urlfilter-suffix/src/java/" />
        <source path="${plugins.dir}/urlfilter-suffix/src/test/" />
        <source path="${plugins.dir}/urlfilter-validator/src/java/" />
        <source path="${plugins.dir}/urlfilter-validator/src/test/" />
        <source path="${plugins.dir}/urlmeta/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-ajax/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-ajax/src/test/" />
        <source path="${plugins.dir}/urlnormalizer-basic/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-basic/src/test/" />
        <source path="${plugins.dir}/urlnormalizer-host/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-host/src/test/" />
        <source path="${plugins.dir}/urlnormalizer-pass/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-pass/src/test/" />
        <source path="${plugins.dir}/urlnormalizer-protocol/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-protocol/src/test/" />
        <source path="${plugins.dir}/urlnormalizer-querystring/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-querystring/src/test/" />
        <source path="${plugins.dir}/urlnormalizer-regex/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-regex/src/test/" />
        <source path="${plugins.dir}/urlnormalizer-slash/src/java/" />
        <source path="${plugins.dir}/urlnormalizer-slash/src/test/" />

        <output path="${build.classes}" />
      </classpath>
    </eclipse>
  </target>

</project>
