mirror of https://github.com/apache/lucene.git
767 lines
35 KiB
XML
767 lines
35 KiB
XML
<?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="solr" default="usage" xmlns:ivy="antlib:org.apache.ivy.ant">
|
|
<description>Solr</description>
|
|
|
|
<target name="usage" description="Prints out instructions">
|
|
<echo message="Welcome to the Solr project!" />
|
|
<echo message="Use 'ant example' to create a runnable example configuration." />
|
|
<echo message="Use 'ant run-example' to create and run the example." />
|
|
<echo message="And for developers:"/>
|
|
<echo message="Use 'ant clean' to clean compiled files." />
|
|
<echo message="Use 'ant compile' to compile the source code." />
|
|
<echo message="Use 'ant dist' to build the project WAR and JAR files." />
|
|
<echo message="Use 'ant javadocs' to build javadocs under build/docs/api" />
|
|
<echo message="Use 'ant generate-maven-artifacts' to generate maven artifacts." />
|
|
<echo message="Use 'ant package' to generate zip, tgz for distribution." />
|
|
<!--<echo message="Use 'ant luke' to start luke. see: http://luke.googlecode.com" />-->
|
|
<echo message="Use 'ant test' to run unit tests." />
|
|
</target>
|
|
|
|
<import file="common-build.xml"/>
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ============================== USER TASKS =============================== -->
|
|
<!-- ========================================================================= -->
|
|
|
|
<target name="example" description="Creates a runnable example configuration."
|
|
depends="dist-contrib,dist-war">
|
|
<copy file="${dist}/${fullnamever}.war"
|
|
tofile="${example}/webapps/${ant.project.name}.war"/>
|
|
<jar destfile="${example}/exampledocs/post.jar"
|
|
basedir="${dest}/solr-core/classes/java"
|
|
includes="org/apache/solr/util/SimplePostTool*.class">
|
|
<manifest>
|
|
<attribute name="Main-Class" value="org.apache.solr.util.SimplePostTool"/>
|
|
</manifest>
|
|
</jar>
|
|
<delete includeemptydirs="true">
|
|
<fileset dir="${example}/solr-webapp" includes="**/*"/>
|
|
</delete>
|
|
<echo>See ${example}/README.txt for how to run the Solr example configuration.</echo>
|
|
</target>
|
|
|
|
<target name="run-example" depends="example"
|
|
description="Run Solr interactively, via Jetty. -Dexample.debug=true to enable JVM debugger">
|
|
<property name="example.solr.home" location="example/solr"/>
|
|
<property name="example.data.dir" location="example/solr/data"/>
|
|
<property name="example.debug.suspend" value="n"/>
|
|
<property name="example.jetty.port" value="8983"/>
|
|
<condition property="example.jvm.line" value="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=${example.debug.suspend},address=5005">
|
|
<isset property="example.debug"/>
|
|
</condition>
|
|
<property name="example.jvm.line" value=""/>
|
|
<property name="example.heap.size" value="512M"/>
|
|
<java jar="${example}/start.jar" fork="true" dir="${example}" maxmemory="${example.heap.size}">
|
|
<jvmarg line="${example.jvm.line}"/>
|
|
<sysproperty key="solr.solr.home" file="${example.solr.home}"/>
|
|
<sysproperty key="solr.data.dir" file="${example.data.dir}"/>
|
|
<sysproperty key="jetty.port" value="${example.jetty.port}"/>
|
|
</java>
|
|
</target>
|
|
|
|
<!-- setup proxy for download tasks -->
|
|
<condition property="proxy.specified">
|
|
<or>
|
|
<isset property="proxy.host"/>
|
|
<isset property="proxy.port"/>
|
|
<isset property="proxy.user"/>
|
|
</or>
|
|
</condition>
|
|
|
|
<target name="proxy.setup" if="proxy.specified">
|
|
<setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}" proxyuser="${proxy.user}" proxypassword="${proxy.password}"/>
|
|
</target>
|
|
|
|
<!--LUCENE-3286: Luke is incompatible with new XML QP location and target is not flexible
|
|
when it comes to incompatible changes. Update when Luke has updated.
|
|
<target name="compile-xml-query-parser">
|
|
<ant dir="${common.dir}/queryparser" target="compile-core" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<property name="luke.version" value="1.0.1"/>
|
|
<available file="luke/luke-${luke.version}.jar" property="luke.jar.exists" />
|
|
<target name="luke-download" unless="luke.jar.exists" depends="proxy.setup,compile-xml-query-parser">
|
|
<mkdir dir="luke"/>
|
|
<get src="http://luke.googlecode.com/files/luke-${luke.version}.jar"
|
|
dest="luke/luke-${luke.version}.jar"/>
|
|
</target>
|
|
<path id="luke.classpath">
|
|
<pathelement location="${common.dir}/build/core/classes/java" />
|
|
<pathelement location="${common.dir}/queryparser/build/classes/java" />
|
|
</path>
|
|
<target name="luke" depends="luke-download">
|
|
<java fork="true"
|
|
classname="org.getopt.luke.Luke"
|
|
logError="true"
|
|
failonerror="true">
|
|
<classpath>
|
|
<fileset dir="luke">
|
|
<include name="luke-${luke.version}.jar"/>
|
|
</fileset>
|
|
<path refid="classpath"/>
|
|
<path refid="luke.classpath"/>
|
|
<path refid="test.classpath"/>
|
|
</classpath>
|
|
</java>
|
|
</target>-->
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ========================== BUILD/TEST TASKS ============================= -->
|
|
<!-- ========================================================================= -->
|
|
|
|
<target name="compile" description="Compile the source code."
|
|
depends="compile-core, compile-contrib"/>
|
|
<target name="test" description="Validate, then run core, solrj, and contrib unit tests."
|
|
depends="test-core, test-contrib"/>
|
|
<target name="test-core" description="Runs the core and solrj unit tests."
|
|
depends="test-solr-core, test-solrj"/>
|
|
<target name="compile-test" description="Compile unit tests."
|
|
depends="compile-solr-test-framework, compile-test-solr-core, compile-test-solrj, compile-test-contrib"/>
|
|
<target name="javadocs" description="Calls javadocs-all, javadocs-solrj, and javadocs-test-framework"
|
|
depends="javadocs-all,javadocs-solrj,javadocs-test-framework"/>
|
|
<target name="compile-core" depends="compile-solr-core" unless="solr.core.compiled"/>
|
|
|
|
<!-- Solr core targets -->
|
|
<target name="test-solr-core" description="Test solr core">
|
|
<ant dir="core" target="test" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<!-- Solrj targets -->
|
|
<target name="test-solrj" description="Test java client">
|
|
<ant dir="solrj" target="test" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
<target name="javadocs-solrj">
|
|
<ant dir="solrj" target="javadocs" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<!-- Solr contrib targets -->
|
|
<target name="test-contrib" description="Run contrib unit tests.">
|
|
<contrib-crawl target="test" failonerror="true"/>
|
|
</target>
|
|
|
|
<!-- test-framework targets -->
|
|
<target name="javadocs-test-framework">
|
|
<ant dir="test-framework" target="javadocs" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<!-- Validation (license/notice/api checks). -->
|
|
<target name="validate" depends="check-licenses,rat-sources,check-forbidden-apis" description="Validate stuff." />
|
|
|
|
<target name="check-licenses" depends="compile-tools,resolve,load-custom-tasks" description="Validate license stuff.">
|
|
<license-check-macro dir="${basedir}">
|
|
<additional-excludes>
|
|
<!-- Exclude start.jar only (it'd be weird to have a license file there?) -->
|
|
<exclude name="example/start.jar" />
|
|
<exclude name="example/exampledocs/post.jar" />
|
|
<exclude name="example/solr-webapp/**" />
|
|
</additional-excludes>
|
|
<additional-filters>
|
|
<replaceregex pattern="/jetty([^/]+)$" replace="/jetty" flags="gi" />
|
|
<replaceregex pattern="/apache-solr-commons-csv-([^/]+)$" replace="/apache-solr-commons-csv" flags="gi" />
|
|
<replaceregex pattern="/slf4j-([^/]+)$" replace="/slf4j" flags="gi" />
|
|
<replaceregex pattern="/(bcmail|bcprov)-([^/]+)$" replace="/\1" flags="gi" />
|
|
</additional-filters>
|
|
</license-check-macro>
|
|
</target>
|
|
|
|
<target name="check-forbidden-apis" depends="compile-tools,compile-test,load-custom-tasks,-check-forbidden-java-apis,-check-forbidden-test-apis"
|
|
description="Check forbidden API calls in compiled class files."/>
|
|
|
|
<target name="-check-forbidden-java-apis">
|
|
<forbidden-apis>
|
|
<classpath refid="additional.dependencies"/>
|
|
<apiFileSet dir="${custom-tasks.dir}/forbiddenApis">
|
|
<include name="jdk.txt" />
|
|
<include name="jdk-deprecated.txt" />
|
|
<include name="commons-io.txt" />
|
|
</apiFileSet>
|
|
<fileset dir="${basedir}/build">
|
|
<include name="**/*.class" />
|
|
<!-- exclude DIH for now as it is broken with Locales and Encodings: SOLR-1916 -->
|
|
<exclude name="contrib/solr-dataimporthandler*/**" />
|
|
</fileset>
|
|
</forbidden-apis>
|
|
</target>
|
|
|
|
<target name="-check-forbidden-test-apis">
|
|
<forbidden-apis apiFile="${custom-tasks.dir}/forbiddenApis/tests.txt">
|
|
<classpath refid="junit-path"/>
|
|
<fileset dir="${basedir}/build">
|
|
<include name="**/classes/test/**/*.class"/>
|
|
<include name="solr-test-framework/**/*.class"/>
|
|
<!-- not actually a test -->
|
|
<exclude name="solr-core/classes/test/org/apache/solr/search/DocSetPerf.class"/>
|
|
<!-- imported code -->
|
|
<exclude name="solr-core/classes/test/org/apache/solr/internal/**/*.class"/>
|
|
</fileset>
|
|
</forbidden-apis>
|
|
</target>
|
|
|
|
<!-- rat sources -->
|
|
<target name="rat-sources">
|
|
<sequential>
|
|
<ant dir="core" target="rat-sources" inheritall="false"/>
|
|
<ant dir="solrj" target="rat-sources" inheritall="false"/>
|
|
<ant dir="test-framework" target="rat-sources" inheritall="false"/>
|
|
<contrib-crawl target="rat-sources" failonerror="true"/>
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- Clean targets -->
|
|
<target name="clean" description="Cleans compiled files and other temporary artifacts.">
|
|
<delete dir="build" />
|
|
<delete dir="dist" />
|
|
<delete dir="package" />
|
|
<delete dir="example/solr/lib" />
|
|
<delete includeemptydirs="true">
|
|
<fileset dir="example">
|
|
<include name="**/data/**/*" />
|
|
<include name="webapps/**/*" />
|
|
<include name="solr-webapp/**/*" />
|
|
<exclude name="**/.gitignore" />
|
|
</fileset>
|
|
</delete>
|
|
</target>
|
|
|
|
<target name="clean-dest"
|
|
description="Cleans out build/ but leaves build/docs/, dist/ and package/ alone. This allows us to run nightly and clover together in Hudson">
|
|
<delete includeemptydirs="true" >
|
|
<fileset dir="build">
|
|
<exclude name="docs/"/>
|
|
</fileset>
|
|
</delete>
|
|
</target>
|
|
|
|
<!--
|
|
Run after Junit tests.
|
|
-->
|
|
<target name="generate-clover-reports" depends="clover">
|
|
<fail unless="run.clover">Clover not enabled!</fail>
|
|
<mkdir dir="${clover.report.dir}"/>
|
|
<fileset dir="build" id="clover.test.result.files">
|
|
<include name="**/test/TEST-*.xml"/>
|
|
</fileset>
|
|
<clover-report>
|
|
<current outfile="${clover.report.dir}" title="${final.name}" numThreads="0">
|
|
<format type="html" filter="assert"/>
|
|
<testresults refid="clover.test.result.files"/>
|
|
</current>
|
|
<current outfile="${clover.report.dir}/clover.xml" title="${final.name}">
|
|
<format type="xml" filter="assert"/>
|
|
<testresults refid="clover.test.result.files"/>
|
|
</current>
|
|
</clover-report>
|
|
</target>
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ===================== DISTRIBUTION-RELATED TASKS ======================== -->
|
|
<!-- ========================================================================= -->
|
|
|
|
<target name="copy-to-stage">
|
|
<copy-to-stage-macro artifacts.dir="${package.dir}"/>
|
|
</target>
|
|
|
|
<target name="dist"
|
|
description="Creates the Solr distribution files."
|
|
depends="dist-solrj, dist-core, dist-test-framework, dist-contrib, dist-war" />
|
|
|
|
<target name="dist-test-framework" depends="init-dist"
|
|
description="Creates the Solr test-framework JAR.">
|
|
<ant dir="test-framework" target="dist" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<target name="dist-contrib" depends="init-dist"
|
|
description="Make the contribs ready for distribution">
|
|
<contrib-crawl target="dist" failonerror="true" />
|
|
</target>
|
|
|
|
<target name="dist-war"
|
|
description="Creates the Solr WAR Distribution file.">
|
|
<ant dir="webapp" target="dist" inheritall="false">
|
|
<property name="exclude.from.war" value="log4j-1.*" />
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<target name="dist-war-excl-slf4j"
|
|
description="Creates a Solr WAR Distribution file, excluding slf4j bindings.">
|
|
<ant dir="webapp" target="dist" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
<property name="exclude.from.war" value="*over-slf4j*,slf4j-jdk14*,log4j-*" />
|
|
<property name="solr.war.suffix" value="-excl-slf4j" />
|
|
</ant>
|
|
</target>
|
|
|
|
<target name="prepare-release-no-sign" depends="clean, package, generate-maven-artifacts"/>
|
|
<target name="prepare-release" depends="prepare-release-no-sign, sign-artifacts"/>
|
|
|
|
<!-- make a distribution -->
|
|
<target name="package" depends="package-src-tgz,create-package"/>
|
|
|
|
<!-- Makes a tarball from running "svn export" at the root level. -->
|
|
<!-- Copies NOTICE.txt and LICENSE.txt from solr/ to the root level. -->
|
|
<target name="package-src-tgz" depends="init-dist"
|
|
description="Packages the Solr Source Distribution">
|
|
<property name="source.package.file"
|
|
value="${package.dir}/${fullnamever}-src.tgz"/>
|
|
<delete file="${source.package.file}" failonerror="false" />
|
|
<svn-export-source source.dir=".."/>
|
|
|
|
<!-- Exclude javadoc package-list files under licenses incompatible with the ASL -->
|
|
<delete dir="${svn.export.dir}/lucene/tools/javadoc/java6"/>
|
|
<!-- Exclude clover license files incompatible with the ASL -->
|
|
<delete dir="${svn.export.dir}/lucene/tools/clover"/>
|
|
|
|
<tar destfile="${source.package.file}" compression="gzip" longfile="gnu">
|
|
<tarfileset dir="${svn.export.dir}"
|
|
prefix="${fullnamever}"
|
|
excludes="solr/example/**/*.sh solr/example/**/bin/ solr/scripts/**"/>
|
|
<tarfileset dir="${svn.export.dir}"
|
|
prefix="${fullnamever}"
|
|
filemode="755"
|
|
includes="solr/example/**/*.sh solr/example/**/bin/ solr/scripts/**"/>
|
|
<tarfileset dir="${svn.export.dir}/solr" prefix="${fullnamever}"
|
|
includes="NOTICE.txt,LICENSE.txt"/>
|
|
</tar>
|
|
<make-checksums file="${source.package.file}"/>
|
|
</target>
|
|
|
|
<target name="package-local-src-tgz"
|
|
description="Packages the Solr and Lucene sources from the local working copy">
|
|
<mkdir dir="${common-solr.dir}/build"/>
|
|
<property name="source.package.file"
|
|
value="${common-solr.dir}/build/${fullnamever}-src.tgz"/>
|
|
<delete file="${source.package.file}" failonerror="false" />
|
|
|
|
<tar destfile="${source.package.file}" compression="gzip" longfile="gnu">
|
|
<tarfileset dir=".." prefix="${fullnamever}" includes="*.txt *.xml dev-tools/" />
|
|
<tarfileset dir="." prefix="${fullnamever}" includes="LICENSE.txt NOTICE.txt"/>
|
|
<tarfileset dir="." prefix="${fullnamever}/solr"
|
|
excludes="build ${package.dir}/** ${dist}/**
|
|
example/webapps/*.war example/exampledocs/post.jar
|
|
lib/README.committers.txt **/data/ **/logs/*
|
|
**/*.sh **/bin/ scripts/
|
|
.idea/ **/*.iml **/pom.xml" />
|
|
<tarfileset dir="." prefix="${fullnamever}/solr"
|
|
includes="core/src/test-files/solr/lib/classes/empty-file-main-lib.txt" />
|
|
<tarfileset dir="." filemode="755" prefix="${fullnamever}/solr"
|
|
includes="**/*.sh **/bin/ scripts/"
|
|
excludes="build/**"/>
|
|
<tarfileset dir="../lucene" prefix="${fullnamever}/lucene">
|
|
<patternset refid="lucene.local.src.package.patterns"/>
|
|
</tarfileset>
|
|
</tar>
|
|
</target>
|
|
|
|
<target name="create-package"
|
|
description="Packages the Solr Binary Distribution"
|
|
depends="init-dist, dist, example, javadocs">
|
|
<mkdir dir="${dest}/${fullnamever}"/>
|
|
<delete includeemptydirs="true">
|
|
<fileset dir="${example}/solr-webapp" includes="**/*"/>
|
|
<fileset dir="${dest}/${fullnamever}" includes="**/*"/>
|
|
</delete>
|
|
|
|
<delete file="${package.dir}/${fullnamever}.tgz" failonerror="false" />
|
|
<delete file="${package.dir}/${fullnamever}.zip" failonerror="false" />
|
|
|
|
<mkdir dir="${dest}/contrib-lucene-libs-to-package"/>
|
|
<delete dir="${dest}/contrib-lucene-libs-to-package" includes="**/*"/>
|
|
<contrib-crawl target="add-lucene-libs-to-package"/>
|
|
|
|
<tar destfile="${package.dir}/${fullnamever}.tgz" compression="gzip" longfile="gnu">
|
|
<tarfileset dir="."
|
|
prefix="${fullnamever}"
|
|
includes="LICENSE.txt NOTICE.txt CHANGES.txt README.txt example/**
|
|
client/README.txt client/ruby/solr-ruby/** contrib/**/lib/**
|
|
contrib/**/README.txt contrib/**/CHANGES.txt"
|
|
excludes="lib/README.committers.txt **/data/ **/logs/*
|
|
**/classes/ **/*.sh **/ivy.xml **/build.xml
|
|
**/bin/ **/*.iml **/*.ipr **/*.iws **/pom.xml
|
|
**/*pom.xml.template **/*.sha1" />
|
|
<tarfileset dir="${dest}/contrib-lucene-libs-to-package"
|
|
prefix="${fullnamever}"
|
|
includes="**" />
|
|
<tarfileset dir="."
|
|
filemode="755"
|
|
prefix="${fullnamever}"
|
|
includes="example/**/*.sh example/**/bin/" />
|
|
<tarfileset dir="."
|
|
prefix="${fullnamever}"
|
|
includes="dist/*.jar dist/*.war dist/solrj-lib/*"
|
|
excludes="**/*.tgz **/*.zip **/*.md5 **/*src*.jar **/*docs*.jar **/*.sha1" />
|
|
<tarfileset dir="${dest}/docs"
|
|
prefix="${fullnamever}/docs" />
|
|
</tar>
|
|
<make-checksums file="${package.dir}/${fullnamever}.tgz"/>
|
|
|
|
<untar compression="gzip" src="${package.dir}/${fullnamever}.tgz" dest="${dest}"/>
|
|
|
|
<!--
|
|
This is a list of text file patterns to convert to CRLF line-ending style.
|
|
Shell scripts and files included in shell scripts should not be converted.
|
|
NB: The line-ending conversion process will mangle non-UTF8-encoded files.
|
|
-->
|
|
<fixcrlf srcdir="${dest}/${fullnamever}"
|
|
encoding="UTF-8"
|
|
eol="crlf"
|
|
includes="**/*.alg **/*.cfg **/*.cgi **/*.cpp **/*.css **/*.csv **/*.dtd
|
|
**/*.erb **/*.fcgi **/.htaccess **/*.htm **/*.html **/*.incl
|
|
**/*.java **/*.javacc **/*.jflex **/*.jflex-macro **/*.jj
|
|
**/*.js **/*.json **/*.jsp **/*LICENSE **/package-list **/*.pl
|
|
**/*.pom **/*pom.xml.template **/*.properties **/*.py
|
|
**/*.rake **/Rakefile **/*.rb **/*.rbbi **/README* **/*.rhtml
|
|
**/*.rslp **/*.rxml **/*.script **/*.svg **/*.tsv **/*.txt
|
|
**/UPGRADING **/USAGE **/*.uxf **/*.vm **/*.xcat **/*.xml
|
|
**/*.xsl **/*.xslt **/*.yml"
|
|
excludes="**/stopwordsWrongEncoding.txt **/gb18030-example.xml"
|
|
/>
|
|
|
|
<zip destfile="${package.dir}/${fullnamever}.zip">
|
|
<zipfileset dir="${dest}/${fullnamever}"
|
|
prefix="${fullnamever}"
|
|
excludes="**/*.sh **/bin/ src/scripts/" />
|
|
<zipfileset dir="${dest}/${fullnamever}"
|
|
prefix="${fullnamever}"
|
|
includes="**/*.sh **/bin/ src/scripts/"
|
|
filemode="755" />
|
|
</zip>
|
|
<make-checksums file="${package.dir}/${fullnamever}.zip"/>
|
|
</target>
|
|
|
|
<target name="sign-artifacts">
|
|
<sign-artifacts-macro artifacts.dir="${package.dir}"/>
|
|
</target>
|
|
|
|
<target name="javadocs-dep">
|
|
<!-- NOOP -->
|
|
</target>
|
|
|
|
<target name="resolve" depends="resolve-example">
|
|
<sequential>
|
|
<ant dir="core" target="resolve" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<ant dir="solrj" target="resolve" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<ant dir="test-framework" target="resolve" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<contrib-crawl target="resolve"/>
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- since we build across all contribs, we must ensure all deps
|
|
are resolved -->
|
|
<target name="javadocs-all"
|
|
depends="resolve,prep-lucene-jars,javadocs-dep,lucene-javadocs,define-lucene-javadoc-url"
|
|
description="Generate javadoc for core, java client and contrib">
|
|
<sequential>
|
|
<mkdir dir="${dest}/docs/api"/>
|
|
|
|
<!-- TODO: optimize this, thats stupid here: -->
|
|
<subant target="module-jars-to-solr">
|
|
<fileset dir="contrib/analysis-extras" includes="build.xml"/>
|
|
</subant>
|
|
|
|
<!-- TODO: optimize this, thats stupid here: -->
|
|
<subant target="module-jars-to-solr">
|
|
<fileset dir="contrib/uima" includes="build.xml"/>
|
|
</subant>
|
|
|
|
<path id="javadoc.classpath">
|
|
<path refid="test.classpath"/>
|
|
<fileset dir="${dest}/contrib">
|
|
<include name="**/lucene-libs/**/*.jar"/>
|
|
</fileset>
|
|
<fileset dir="contrib">
|
|
<include name="**/lib/**/*.jar"/>
|
|
<exclude name="**/analysis-extras/lib/**/*icu4j*.jar"/> <!-- extraction/lib/ has this one -->
|
|
</fileset>
|
|
<pathelement location="${dest}/solr-solrj/classes/java"/>
|
|
</path>
|
|
|
|
<solr-invoke-javadoc destdir="${dest}/docs/api"
|
|
overview="core/src/java/overview.html">
|
|
<solrsources>
|
|
<packageset dir="core/src/java" />
|
|
<packageset dir="solrj/src/java" />
|
|
<packageset dir="contrib/analysis-extras/src/java"/>
|
|
<packageset dir="contrib/clustering/src/java"/>
|
|
<packageset dir="contrib/dataimporthandler/src/java"/>
|
|
<packageset dir="contrib/dataimporthandler-extras/src/java"/>
|
|
<packageset dir="contrib/extraction/src/java"/>
|
|
<packageset dir="contrib/langid/src/java"/>
|
|
<packageset dir="contrib/uima/src/java"/>
|
|
<group title="Core" packages="org.apache.*" />
|
|
<group title="SolrJ" packages="org.apache.solr.common.*,org.apache.solr.client.solrj.*,org.apache.zookeeper.*" />
|
|
<group title="contrib: Clustering" packages="org.apache.solr.handler.clustering*" />
|
|
<group title="contrib: DataImportHandler" packages="org.apache.solr.handler.dataimport*" />
|
|
<group title="contrib: Solr Cell" packages="org.apache.solr.handler.extraction*" />
|
|
<group title="contrib: Solr LangId" packages="org.apache.solr.update.processor.LanguageIdentifier*,org.apache.solr.update.processor.LangIdParams*,org.apache.solr.update.processor.DetectedLanguage*" />
|
|
<group title="contrib: Solr UIMA" packages="org.apache.solr.uima*" />
|
|
</solrsources>
|
|
</solr-invoke-javadoc>
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- TODO: does solr have any other docs we should check? -->
|
|
<!-- TODO: also integrate checkJavaDocs.py, which does more checks -->
|
|
<target name="javadocs-lint" depends="javadocs">
|
|
<check-broken-links dir="build/docs"/>
|
|
</target>
|
|
|
|
<target name="generate-maven-artifacts" depends="install-maven-tasks">
|
|
<sequential>
|
|
<subant target="dist-maven" inheritall="false" >
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
<fileset dir="core" includes="build.xml"/>
|
|
<fileset dir="solrj" includes="build.xml"/>
|
|
<fileset dir="test-framework" includes="build.xml"/>
|
|
<fileset dir="webapp" includes="build.xml"/>
|
|
</subant>
|
|
<contrib-crawl target="dist-maven"/>
|
|
</sequential>
|
|
</target>
|
|
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ========================= COMMITTERS' HELPERS =========================== -->
|
|
<!-- ========================================================================= -->
|
|
|
|
<target name="stub-factories" depends="dist-core,lucene-jars-to-solr"
|
|
description="Generates stub factories as needed">
|
|
|
|
<path id="stub.jars">
|
|
<!-- this needs to be a list of all jars that might contain
|
|
classes we want to build factories for
|
|
-->
|
|
<fileset dir="${lucene-libs}">
|
|
<include name="*.jar"/>
|
|
</fileset>
|
|
<fileset dir="${dist}">
|
|
<include name="*.jar"/>
|
|
<exclude name="*solrj*.jar"/>
|
|
</fileset>
|
|
</path>
|
|
<pathconvert property="jar.list" pathsep=" " refid="stub.jars" />
|
|
<path id="missing.factories.classpath">
|
|
<pathelement path="${common.dir}/contrib/queries/lib/jakarta-regexp-1.4.jar"/>
|
|
<path refid="test.classpath"/>
|
|
</path>
|
|
<property name="stub.list" value="${dest}/need-stub-factories.txt" />
|
|
<java fork="false"
|
|
classname="org.apache.solr.util.SuggestMissingFactories"
|
|
logError="true"
|
|
failonerror="true"
|
|
classpathref="missing.factories.classpath"
|
|
output="${stub.list}">
|
|
<arg line="${jar.list}" />
|
|
</java>
|
|
<fail unless="stub.src.path">...
|
|
|
|
This task requires that the property 'stub.src.path' be set.
|
|
|
|
It must contain a "path" listing directories containing source
|
|
files that this task should use when looking for classes that
|
|
need factories created, the format is platform specific --
|
|
typically it is colon seperated in Unix, semi-colon seperated
|
|
on windows, ie:
|
|
|
|
ant stub-factories -Dstub.src.path="core/src:../lucene/contrib:../lucene/core/src/java:../lucene/analysis"
|
|
|
|
FYI: The file ${stub.list} contains a list of classes
|
|
that seem to need stub factories. (if java files can be found to
|
|
use as guides for creating them).
|
|
</fail>
|
|
|
|
<pathconvert pathsep=" " property="stub.src.dirs">
|
|
<path>
|
|
<pathelement path="${stub.src.path}"/>
|
|
</path>
|
|
</pathconvert>
|
|
<exec executable="perl"
|
|
dir="core/src/java/org/apache/solr/analysis/"
|
|
failonerror="true">
|
|
<arg value="${common-solr.dir}/dev-tools/stub-analysis-factory-maker.pl"/>
|
|
<redirector input="${stub.list}">
|
|
<!-- place to put special case classes we want to ignore -->
|
|
<inputfilterchain>
|
|
<linecontainsregexp negate="true">
|
|
<!-- only for internal Solr highlighting purposes -->
|
|
<regexp pattern="TokenOrderingFilter"/>
|
|
</linecontainsregexp>
|
|
<linecontainsregexp negate="true">
|
|
<!-- no way to leverage this in Solr -->
|
|
<regexp pattern="CachingTokenFilter"/>
|
|
</linecontainsregexp>
|
|
<linecontainsregexp negate="true">
|
|
<!-- no way to leverage this in Solr -->
|
|
<regexp pattern="HyphenationCompoundWordTokenFilter"/>
|
|
</linecontainsregexp>
|
|
<linecontainsregexp negate="true">
|
|
<!-- no way to leverage these in Solr (yet) -->
|
|
<regexp pattern="Sink|Tee"/>
|
|
</linecontainsregexp>
|
|
<linecontainsregexp negate="true">
|
|
<!-- Solr already has a different impl for this -->
|
|
<regexp pattern="SynonymTokenFilter"/>
|
|
</linecontainsregexp>
|
|
<linecontainsregexp negate="true">
|
|
<!-- solr and lucene both have one? ? ? ? -->
|
|
<regexp pattern="LengthFilter"/>
|
|
</linecontainsregexp>
|
|
<linecontainsregexp negate="true">
|
|
<!-- solr provides it's own SnowballPorterFilter variant -->
|
|
<regexp pattern="SnowballFilter"/>
|
|
</linecontainsregexp>
|
|
</inputfilterchain>
|
|
</redirector>
|
|
<arg line="${stub.src.dirs}"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="svn-up">
|
|
<exec executable="${svn.exe}">
|
|
<arg value="update"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<property name="analysis-common.res.dir" value="../lucene/analysis/common/src/resources/org/apache/lucene/analysis"/>
|
|
<property name="analysis-kuromoji.res.dir" value="../lucene/analysis/kuromoji/src/resources/org/apache/lucene/analysis"/>
|
|
<property name="analysis.conf.dest" value="${example}/solr/conf/lang"/>
|
|
|
|
<target name="sync-analyzers"
|
|
description="Committers' Helper: synchronizes analysis resources (e.g. stoplists) to the example">
|
|
<!-- arabic -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/ar/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_ar.txt"/>
|
|
<!-- bulgarian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/bg/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_bg.txt"/>
|
|
<!-- catalan -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/ca/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_ca.txt"/>
|
|
<!-- czech -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/cz/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_cz.txt"/>
|
|
<!-- danish -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/danish_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_da.txt"/>
|
|
<!-- german -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/german_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_de.txt"/>
|
|
<!-- greek -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/el/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_el.txt"/>
|
|
<!-- spanish -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/spanish_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_es.txt"/>
|
|
<!-- basque -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/eu/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_eu.txt"/>
|
|
<!-- persian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/fa/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_fa.txt"/>
|
|
<!-- finnish -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/finnish_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_fi.txt"/>
|
|
<!-- french -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/french_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_fr.txt"/>
|
|
<!-- irish -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/ga/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_ga.txt"/>
|
|
<!-- galician -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/gl/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_gl.txt"/>
|
|
<!-- hindi -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/hi/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_hi.txt"/>
|
|
<!-- hungarian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/hungarian_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_hu.txt"/>
|
|
<!-- armenian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/hy/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_hy.txt"/>
|
|
<!-- indonesian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/id/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_id.txt"/>
|
|
<!-- italian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/italian_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_it.txt"/>
|
|
<!-- japanese -->
|
|
<copy verbose="true" file="${analysis-kuromoji.res.dir}/ja/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_ja.txt"/>
|
|
<copy verbose="true" file="${analysis-kuromoji.res.dir}/ja/stoptags.txt"
|
|
tofile="${analysis.conf.dest}/stoptags_ja.txt"/>
|
|
<!-- latvian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/lv/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_lv.txt"/>
|
|
<!-- dutch -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/dutch_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_nl.txt"/>
|
|
<!-- norwegian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/norwegian_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_no.txt"/>
|
|
<!-- portuguese -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/portuguese_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_pt.txt"/>
|
|
<!-- romanian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/ro/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_ro.txt"/>
|
|
<!-- russian -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/russian_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_ru.txt"/>
|
|
<!-- swedish -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/snowball/swedish_stop.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_sv.txt"/>
|
|
<!-- thai -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/th/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_th.txt"/>
|
|
<!-- turkish -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/tr/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_tr.txt"/>
|
|
</target>
|
|
|
|
<!-- TODO: in the future, we don't need to actually put
|
|
jars in the lib/ folders, but can just put in classpath.
|
|
only packaging tasks really need that (and could do it
|
|
under build/ directories) -->
|
|
<target name="clean-jars" description="Clean local jars">
|
|
<delete>
|
|
<fileset dir="." includes="**/*.jar"/>
|
|
</delete>
|
|
</target>
|
|
|
|
</project>
|