mirror of https://github.com/apache/lucene.git
1018 lines
41 KiB
XML
1018 lines
41 KiB
XML
<!-- Solr build file -->
|
|
|
|
<!--
|
|
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" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
|
|
|
|
<property name="solr-path" value="." />
|
|
|
|
<import file="common-build.xml"/>
|
|
|
|
<!-- 3rd party libraries for compilation -->
|
|
<property name="lib" location="lib" />
|
|
|
|
<!-- solr source files -->
|
|
<property name="src" location="src" />
|
|
<property name="web.xml" location="${src}/webapp/web/WEB-INF/web.xml"/>
|
|
|
|
<!-- Destination for distribution files (demo WAR, src distro, etc.) -->
|
|
<property name="dist" location="dist" />
|
|
|
|
<property name="clover.db.dir" location="${dest}/tests/clover/db"/>
|
|
<property name="clover.report.dir" location="${dest}/tests/clover/reports"/>
|
|
|
|
<available
|
|
property="clover.present"
|
|
classname="com.cenqua.clover.tasks.CloverReportTask"
|
|
/>
|
|
<condition property="clover.enabled">
|
|
<and>
|
|
<isset property="run.clover"/>
|
|
<isset property="clover.present"/>
|
|
</and>
|
|
</condition>
|
|
|
|
<!-- Default target: usage. Prints out instructions. -->
|
|
<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 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>
|
|
|
|
<!-- Clean: cleans compiled files and other temporary artifacts. -->
|
|
<target name="clean" depends="clean-contrib"
|
|
description="Cleans compiled files and other temporary artifacts.">
|
|
<delete dir="${dest}" />
|
|
<delete dir="${dist}" />
|
|
<delete dir="example/solr/lib" />
|
|
<delete dir="${lucene-libs}" />
|
|
</target>
|
|
|
|
<target name="clean-dest"
|
|
description="Cleans out ${dest} but leaves ${dist} alone. This allows us to run nightly and clover together in Hudson">
|
|
<delete includeemptydirs="true" >
|
|
<fileset dir="${dest}">
|
|
<exclude name="docs/"/>
|
|
</fileset>
|
|
</delete>
|
|
</target>
|
|
|
|
<!-- Prepares an entity file for use in Forrest documentation -->
|
|
<target name="init-forrest-entities">
|
|
<!-- no description, don't advertise -->
|
|
|
|
<!-- Building off Lucene trunk, we don't need this
|
|
<available file="lib/lucene-core-${version}.jar"
|
|
property="lucene-version-ok-m2deploy-wont-fail" />
|
|
<fail unless="lucene-version-ok-m2deploy-wont-fail">
|
|
lib/lucene-core-${version}.jar Missing
|
|
|
|
lib/lucene-core-${version}.jar does not exist.
|
|
This will cause problems with m2-deploy later, so fail fast now.
|
|
|
|
Probably cause: lucene jars were upgraded w/o modifying the
|
|
'version' property in common-build.xml
|
|
</fail>
|
|
-->
|
|
|
|
<mkdir dir="${dest}" />
|
|
|
|
<!-- A folder containing the expanded war file -->
|
|
<mkdir dir="${dest}/web" />
|
|
|
|
<echo file="${dest}/solr-specific-forrest-variables.ent" append="false">
|
|
<!ENTITY solr.specversion "${specversion}">
|
|
</echo>
|
|
</target>
|
|
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ===================== COMPILATION-RELATED TASKS ========================= -->
|
|
<!-- ========================================================================= -->
|
|
|
|
<!-- The compilation classpath -->
|
|
<path id="compile.classpath">
|
|
<fileset dir="${lib}">
|
|
<include name="*.jar" />
|
|
</fileset>
|
|
<path refid="lucene.classpath"/>
|
|
</path>
|
|
|
|
<target name="compile-solrj"
|
|
description="Compile the java client."
|
|
depends="init-forrest-entities, compile-lucene">
|
|
|
|
<solr-javac destdir="${dest}/solrj"
|
|
classpathref="compile.classpath">
|
|
<src path="${src}/common" />
|
|
<src path="${src}/solrj" />
|
|
</solr-javac>
|
|
</target>
|
|
|
|
|
|
<!-- This depend on all of solr -->
|
|
<path id="compile.classpath.solrj">
|
|
<path refid="compile.classpath" />
|
|
<pathelement location="${dest}/solrj"/>
|
|
<!-- jetty -->
|
|
<fileset dir="example/lib">
|
|
<include name="**/*.jar" />
|
|
</fileset>
|
|
</path>
|
|
|
|
<!-- Compile the project. -->
|
|
<target name="compile"
|
|
description="Compile the source code."
|
|
depends="compile-solrj,init-forrest-entities">
|
|
|
|
<solr-javac destdir="${dest}/solr"
|
|
classpathref="compile.classpath.solrj">
|
|
<src path="${src}/java" />
|
|
<src path="${src}/webapp/src" />
|
|
</solr-javac>
|
|
</target>
|
|
|
|
<target name="javadoc-solrj" depends="compile-solrj" description="Generates solrj javadoc documentation.">
|
|
<sequential>
|
|
<mkdir dir="${build.javadoc}/solrj"/>
|
|
|
|
<path id="javadoc.classpath">
|
|
<path refid="compile.classpath"/>
|
|
</path>
|
|
|
|
<invoke-javadoc
|
|
destdir="${build.javadoc}/solrj"
|
|
title="${Name}-j ${version} API (${specversion})">
|
|
<sources>
|
|
<packageset dir="${src}/common"/>
|
|
<packageset dir="${src}/solrj"/>
|
|
</sources>
|
|
</invoke-javadoc>
|
|
</sequential>
|
|
</target>
|
|
|
|
<target name="javadoc-core" depends="compile" description="Generates javadoc documentation for core.">
|
|
|
|
<sequential>
|
|
<mkdir dir="${build.javadoc}/solr"/>
|
|
|
|
<path id="javadoc.classpath">
|
|
<path refid="compile.classpath"/>
|
|
<path refid="compile.classpath.solrj"/>
|
|
<pathelement location="${dest}/solrj"/>
|
|
</path>
|
|
|
|
<invoke-javadoc
|
|
destdir="${build.javadoc}/solr"
|
|
title="${Name} ${version} core API (${specversion})">
|
|
<sources>
|
|
<packageset dir="${src}/java" />
|
|
<packageset dir="${src}/webapp/src"/>
|
|
</sources>
|
|
</invoke-javadoc>
|
|
</sequential>
|
|
</target>
|
|
|
|
|
|
<target name="javadoc-all" description="Generate javadoc for core, client and contrib">
|
|
<sequential>
|
|
<mkdir dir="${build.javadoc}"/>
|
|
|
|
<path id="javadoc.classpath">
|
|
<path refid="compile.classpath"/>
|
|
<path refid="compile.classpath.solrj"/>
|
|
<fileset dir="contrib">
|
|
<include name="**/lib/**/*.jar"/>
|
|
</fileset>
|
|
<pathelement location="${dest}/client/solrj"/>
|
|
</path>
|
|
|
|
<invoke-javadoc destdir="${build.javadoc}">
|
|
<sources>
|
|
<packageset dir="${src}/common" />
|
|
<packageset dir="${src}/solrj" />
|
|
<packageset dir="${src}/java" />
|
|
<packageset dir="${src}/webapp/src" />
|
|
<packageset dir="contrib/dataimporthandler/src/main/java" />
|
|
<packageset dir="contrib/clustering/src/main/java" />
|
|
<packageset dir="contrib/extraction/src/main/java" />
|
|
<packageset dir="contrib/uima/src/main/java" />
|
|
<packageset dir="contrib/analysis-extras/src/java" />
|
|
<group title="Core" packages="org.apache.*" />
|
|
<group title="Common" packages="org.apache.solr.common.*" />
|
|
<group title="SolrJ" packages="org.apache.solr.client.solrj*" />
|
|
<group title="contrib: DataImportHandler" packages="org.apache.solr.handler.dataimport*" />
|
|
<group title="contrib: Clustering" packages="org.apache.solr.handler.clustering*" />
|
|
<group title="contrib: Solr Cell" packages="org.apache.solr.handler.extraction*" />
|
|
<group title="contrib: Solr UIMA" packages="org.apache.solr.uima*" />
|
|
</sources>
|
|
</invoke-javadoc>
|
|
</sequential>
|
|
</target>
|
|
|
|
<target name="javadoc-contrib" description="Generate javadoc for contrib classes" depends="build-contrib">
|
|
<contrib-crawl target="javadoc"
|
|
failonerror="true"/>
|
|
</target>
|
|
|
|
<target name="javadoc" depends="javadoc-core, javadoc-contrib, javadoc-solrj, javadoc-all">
|
|
</target>
|
|
|
|
<target name="stub-factories" depends="dist-jar"
|
|
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="${lib}">
|
|
<include name="lucene-*.jar"/>
|
|
</fileset>
|
|
<fileset dir="${dist}">
|
|
<include name="*.jar"/>
|
|
<exclude name="*solrj*.jar"/>
|
|
</fileset>
|
|
</path>
|
|
<pathconvert property="jar.list" pathsep=" " refid="stub.jars" />
|
|
<property name="stub.list" value="${dest}/need-stub-factories.txt" />
|
|
<java fork="false"
|
|
classname="org.apache.solr.util.SuggestMissingFactories"
|
|
logError="true"
|
|
failonerror="true"
|
|
classpathref="test.run.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="./src:../lucene/contrib:../lucene/src/java"
|
|
|
|
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="${basedir}/src/dev-tools/stub-analysis-factory-maker.pl"
|
|
dir="src/java/org/apache/solr/analysis/"
|
|
failonerror="true">
|
|
<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>
|
|
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ===================== TESTING-RELATED TASKS ============================= -->
|
|
<!-- ========================================================================= -->
|
|
|
|
|
|
<!-- Classpath for unit test compilation. -->
|
|
<!-- For now, it's the same as main classpath. Later it will have JUnit, Clover, etc. -->
|
|
<path id="test.compile.classpath">
|
|
<path refid="compile.classpath" />
|
|
<path refid="compile.classpath.solrj" />
|
|
<pathelement location="${dest}/solr"/>
|
|
<pathelement location="${dest}/solrj"/> <!-- include solrj -->
|
|
<pathelement location="${common-solr.dir}/../lucene/build/classes/test-framework" /> <!-- include some lucene test code -->
|
|
</path>
|
|
|
|
<path id="test.run.classpath">
|
|
<path refid="test.compile.classpath" />
|
|
<pathelement location="${dest}/tests"/>
|
|
<!-- include the solrj classpath and jetty files included in example -->
|
|
<path refid="compile.classpath.solrj" />
|
|
<pathelement location="${common-solr.dir}/../lucene/build/classes/test-framework" /> <!-- include some lucene test code -->
|
|
<pathelement path="${java.class.path}"/>
|
|
</path>
|
|
|
|
<!-- Compile unit tests. -->
|
|
<target name="compileTests"
|
|
description="Compile unit tests."
|
|
depends="compile,compile-solrj">
|
|
|
|
<mkdir dir="${dest}/tests" />
|
|
<solr-javac
|
|
destdir="${dest}/tests"
|
|
classpathref="test.compile.classpath">
|
|
<src path="${src}/test" />
|
|
</solr-javac>
|
|
<!-- Copy any data files present to the classpath -->
|
|
<copy todir="${dest}/tests">
|
|
<fileset dir="${src}/test-files" excludes="**/*.java"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!-- Run core unit tests. -->
|
|
<target name="test-core"
|
|
description="Runs the core unit tests."
|
|
depends="init-forrest-entities, compileTests, junit" />
|
|
|
|
<!-- Run contrib unit tests. -->
|
|
<target name="test"
|
|
description="Runs the core unit tests."
|
|
depends="test-core, test-contrib" />
|
|
|
|
<target name="junit" depends="compileTests,junit-mkdir,junit-sequential,junit-parallel"/>
|
|
|
|
<target name="junit-sequential" if="tests.sequential">
|
|
<junit-macro/>
|
|
</target>
|
|
|
|
<target name="junit-parallel" unless="tests.sequential">
|
|
<parallel threadsPerProcessor="${tests.threadspercpu}">
|
|
<junit-macro threadNum="1" threadTotal="8"/>
|
|
<junit-macro threadNum="2" threadTotal="8"/>
|
|
<junit-macro threadNum="3" threadTotal="8"/>
|
|
<junit-macro threadNum="4" threadTotal="8"/>
|
|
<junit-macro threadNum="5" threadTotal="8"/>
|
|
<junit-macro threadNum="6" threadTotal="8"/>
|
|
<junit-macro threadNum="7" threadTotal="8"/>
|
|
<junit-macro threadNum="8" threadTotal="8"/>
|
|
</parallel>
|
|
</target>
|
|
|
|
<target name="junit-mkdir">
|
|
<mkdir dir="${junit.output.dir}"/>
|
|
</target>
|
|
|
|
<macrodef name="junit-macro">
|
|
<attribute name="threadNum" default="1"/>
|
|
<attribute name="threadTotal" default="1"/>
|
|
<attribute name="tempDir" default="${junit.output.dir}/temp"/>
|
|
<sequential>
|
|
<!-- no description so it doesn't show up in -projecthelp -->
|
|
<condition property="runall">
|
|
<not>
|
|
<or>
|
|
<isset property="testcase"/>
|
|
<isset property="testpackage"/>
|
|
<isset property="testpackageroot"/>
|
|
</or>
|
|
</not>
|
|
</condition>
|
|
<!-- <mkdir dir="@{tempDir}/@{pattern}"/>
|
|
This is very loud and obnoxious. abuse touch instead for a "quiet" mkdir
|
|
-->
|
|
<touch file="@{tempDir}/@{threadNum}/quiet.ant" verbose="false" mkdirs="true"/>
|
|
<property name="dir.prop" value=""/>
|
|
<junit printsummary="no"
|
|
haltonfailure="no"
|
|
maxmemory="512M"
|
|
errorProperty="tests.failed"
|
|
failureProperty="tests.failed"
|
|
dir="@{tempDir}/@{threadNum}"
|
|
tempdir="@{tempDir}/@{threadNum}"
|
|
forkmode="perBatch"
|
|
>
|
|
<sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
|
|
<sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
|
|
<sysproperty key="tests.codec" value="${tests.codec}"/>
|
|
<sysproperty key="tests.locale" value="${tests.locale}"/>
|
|
<sysproperty key="tests.timezone" value="${tests.timezone}"/>
|
|
<sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
|
|
<sysproperty key="tests.iter" value="${tests.iter}"/>
|
|
<sysproperty key="tests.seed" value="${tests.seed}"/>
|
|
<sysproperty key="tests.verbose" value="${tests.verbose}"/>
|
|
<sysproperty key="jetty.testMode" value="1"/>
|
|
<sysproperty key="tempDir" file="@{tempDir}/@{threadNum}"/>
|
|
<sysproperty key="testmethod" value="${testmethod}"/>
|
|
<!-- set whether or not nightly tests should run -->
|
|
<sysproperty key="tests.nightly" value="${tests.nightly}"/>
|
|
<!-- TODO: why is this unconditionally set to "" above? disable for now
|
|
<jvmarg line="${dir.prop}"/>
|
|
-->
|
|
<jvmarg line="${args}"/>
|
|
|
|
<formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
|
|
<classpath refid="test.run.classpath"/>
|
|
<assertions>
|
|
<enable package="org.apache.lucene"/>
|
|
<enable package="org.apache.solr"/>
|
|
</assertions>
|
|
<formatter type="${junit.formatter}"/>
|
|
<batchtest fork="yes" todir="${junit.output.dir}" if="runall">
|
|
<fileset dir="src/test" includes="**/Test*.java,**/*Test.java">
|
|
<custom classname="${junit.parallel.selector}" classpathref="test.run.classpath">
|
|
<param name="divisor" value="@{threadTotal}" />
|
|
<param name="part" value="@{threadNum}" />
|
|
</custom>
|
|
</fileset>
|
|
</batchtest>
|
|
<batchtest fork="yes" todir="${junit.output.dir}" if="testpackage">
|
|
<fileset dir="src/test" includes="**/${testpackage}/**/Test*.java,**/${testpackage}/**/*Test.java">
|
|
<custom classname="${junit.parallel.selector}" classpathref="test.run.classpath">
|
|
<param name="divisor" value="@{threadTotal}" />
|
|
<param name="part" value="@{threadNum}" />
|
|
</custom>
|
|
</fileset>
|
|
</batchtest>
|
|
<batchtest fork="yes" todir="${junit.output.dir}" if="testpackageroot">
|
|
<fileset dir="src/test" includes="**/${testpackageroot}/Test*.java,**/${testpackageroot}/*Test.java">
|
|
<custom classname="${junit.parallel.selector}" classpathref="test.run.classpath">
|
|
<param name="divisor" value="@{threadTotal}" />
|
|
<param name="part" value="@{threadNum}" />
|
|
</custom>
|
|
</fileset>
|
|
</batchtest>
|
|
<batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
|
|
<fileset dir="src/test" includes="**/${testcase}.java"/>
|
|
</batchtest>
|
|
</junit>
|
|
|
|
<fail if="tests.failed">Tests failed!</fail>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
|
|
<target name="test-reports"
|
|
description="Generates HTML test reports.">
|
|
<mkdir dir="${junit.reports}"/>
|
|
<junitreport todir="${junit.output.dir}">
|
|
<fileset dir="${junit.output.dir}">
|
|
<include name="TEST-*.xml"/>
|
|
</fileset>
|
|
<report format="frames" todir="${junit.reports}"/>
|
|
</junitreport>
|
|
</target>
|
|
|
|
<target name="clover" depends="clover.setup, clover.info"
|
|
description="Instrument the Unit tests using Clover. Requires a Clover license and clover.jar in the ANT classpath. To use, specify -Drun.clover=true on the command line."/>
|
|
|
|
<target name="clover.setup" if="clover.enabled">
|
|
<taskdef resource="cloverlib.xml"/>
|
|
<mkdir dir="${clover.db.dir}"/>
|
|
<clover-setup initString="${clover.db.dir}/solr_coverage.db">
|
|
<fileset dir="src/common"/>
|
|
<fileset dir="src/solrj"/>
|
|
<fileset dir="src/java"/>
|
|
<fileset dir="src/webapp/src"/>
|
|
<fileset dir="contrib/dataimporthandler/src/main/java" />
|
|
<fileset dir="contrib/clustering/src/main/java" />
|
|
<fileset dir="contrib/extraction/src/main/java" />
|
|
<fileset dir="contrib/uima/src/main/java" />
|
|
<fileset dir="contrib/analysis-extras/src/java" />
|
|
</clover-setup>
|
|
</target>
|
|
|
|
<target name="clover.info" unless="clover.present">
|
|
<echo>
|
|
Clover not found. Code coverage reports disabled.
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="clover.check">
|
|
<fail unless="clover.present">
|
|
##################################################################
|
|
Clover not found.
|
|
Please make sure clover.jar is in ANT_HOME/lib, or made available
|
|
to Ant using other mechanisms like -lib or CLASSPATH.
|
|
##################################################################
|
|
</fail>
|
|
</target>
|
|
<!--
|
|
Run after Junit tests.
|
|
-->
|
|
<target name="generate-clover-reports" depends="clover.check, clover">
|
|
<mkdir dir="${clover.report.dir}"/>
|
|
<clover-report>
|
|
<current outfile="${clover.report.dir}/clover.xml"
|
|
title="${fullnamever}">
|
|
<format type="xml"/>
|
|
</current>
|
|
<current outfile="${clover.report.dir}" title="${fullnamever}">
|
|
<format type="html"/>
|
|
</current>
|
|
</clover-report>
|
|
</target>
|
|
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ===================== DISTRIBUTION-RELATED TASKS ======================== -->
|
|
<!-- ========================================================================= -->
|
|
|
|
|
|
<!-- Creates the Solr distribution files. -->
|
|
<target name="dist"
|
|
description="Creates the Solr distribution files."
|
|
depends="init-forrest-entities, dist-solrj, dist-jar, dist-contrib, dist-war" />
|
|
|
|
<!-- Creates the Solr WAR file. -->
|
|
<target name="dist-war"
|
|
description="Creates the Solr WAR Distribution file."
|
|
depends="compile, make-manifest, dist-jar, dist-solrj, lucene-jars-to-solr">
|
|
<mkdir dir="${dist}" />
|
|
<war destfile="${dist}/${fullnamever}.war"
|
|
webxml="${web.xml}"
|
|
filesetmanifest="skip"
|
|
manifest="${dest}/META-INF/MANIFEST.MF">
|
|
<lib dir="${lib}">
|
|
<exclude name="servlet-api*.jar" />
|
|
<exclude name="easymock.jar" />
|
|
<exclude name="junit-*.jar" />
|
|
<exclude name="*.txt" />
|
|
<exclude name="*.template" />
|
|
</lib>
|
|
|
|
<lib dir="${lucene-libs}"/>
|
|
|
|
<lib dir="${dist}">
|
|
<include name="${fullname}-solrj-${version}.jar" />
|
|
<include name="${fullname}-core-${version}.jar" />
|
|
</lib>
|
|
<fileset dir="${src}/webapp/web" />
|
|
|
|
<!-- Include anything put in by contrib projects -->
|
|
<fileset dir="${dest}/web" />
|
|
|
|
<metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
|
|
</war>
|
|
</target>
|
|
|
|
<target name="dist-src" description="Creates the Solr source distribution files"
|
|
depends="make-manifest">
|
|
<mkdir dir="${dist}" />
|
|
|
|
<solr-jar destfile="${dist}/${fullname}-solrj-src-${version}.jar">
|
|
<fileset dir="${src}/common" />
|
|
<fileset dir="${src}/solrj"/>
|
|
</solr-jar>
|
|
|
|
<solr-jar destfile="${dist}/${fullname}-core-src-${version}.jar">
|
|
<fileset dir="${src}/java" />
|
|
<fileset dir="${src}/webapp/src"/>
|
|
</solr-jar>
|
|
|
|
<solr-jar destfile="${dist}/apache-solr-dataimporthandler-src-${version}.jar"
|
|
basedir="contrib/dataimporthandler/src/main/java" />
|
|
<solr-jar destfile="${dist}/apache-solr-dataimporthandler-extras-src-${version}.jar"
|
|
basedir="contrib/dataimporthandler/src/extras/main/java" />
|
|
|
|
<solr-jar destfile="${dist}/apache-solr-cell-src-${version}.jar"
|
|
basedir="contrib/extraction/src" />
|
|
<solr-jar destfile="${dist}/apache-solr-clustering-src-${version}.jar"
|
|
basedir="contrib/clustering/src" />
|
|
<solr-jar destfile="${dist}/apache-solr-analysis-extras-src-${version}.jar"
|
|
basedir="contrib/analysis-extras/src" />
|
|
<solr-jar destfile="${dist}/apache-solr-uima-src-${version}.jar"
|
|
basedir="contrib/uima/src/main/java" >
|
|
<fileset dir="contrib/uima/src/main/resources" />
|
|
</solr-jar>
|
|
</target>
|
|
|
|
<target name="dist-javadoc" description="Creates the Solr javadoc distribution files"
|
|
depends="make-manifest, javadoc">
|
|
<mkdir dir="${dist}" />
|
|
|
|
<solr-jar destfile="${dist}/${fullname}-core-docs-${version}.jar"
|
|
basedir="${build.javadoc}/solr" />
|
|
<solr-jar destfile="${dist}/${fullname}-solrj-docs-${version}.jar"
|
|
basedir="${build.javadoc}/solrj" />
|
|
<solr-jar destfile="${dist}/apache-solr-dataimporthandler-docs-${version}.jar"
|
|
basedir="${build.javadoc}/contrib-solr-dataimporthandler" />
|
|
<solr-jar destfile="${dist}/apache-solr-clustering-docs-${version}.jar"
|
|
basedir="${build.javadoc}/contrib-solr-clustering" />
|
|
<solr-jar destfile="${dist}/apache-solr-cell-docs-${version}.jar"
|
|
basedir="${build.javadoc}/contrib-solr-cell" />
|
|
<solr-jar destfile="${dist}/apache-solr-analysis-extras-docs-${version}.jar"
|
|
basedir="${build.javadoc}/contrib-solr-analysis-extras" />
|
|
<solr-jar destfile="${dist}/apache-solr-uima-docs-${version}.jar"
|
|
basedir="${build.javadoc}/contrib-solr-uima" />
|
|
</target>
|
|
|
|
<!-- Creates the solr jar. -->
|
|
<target name="dist-jar"
|
|
description="Creates the Solr JAR Distribution file."
|
|
depends="compile, make-manifest">
|
|
<mkdir dir="${dist}" />
|
|
<solr-jar destfile="${dist}/${fullname}-core-${version}.jar">
|
|
<fileset dir="${dest}/solr" />
|
|
</solr-jar>
|
|
|
|
</target>
|
|
|
|
<!-- Creates the solr jar. -->
|
|
<target name="dist-solrj"
|
|
description="Creates the Solr JAR Distribution file."
|
|
depends="compile-solrj, make-manifest">
|
|
<mkdir dir="${dist}" />
|
|
<solr-jar
|
|
destfile="${dist}/${fullname}-solrj-${version}.jar"
|
|
basedir="${dest}/solrj" />
|
|
|
|
<mkdir dir="${dist}/solrj-lib" />
|
|
<copy todir="${dist}/solrj-lib">
|
|
<fileset dir="${lib}">
|
|
<include name="commons-codec-*.jar"/>
|
|
<include name="commons-io-*.jar"/>
|
|
<include name="commons-httpclient-*.jar"/>
|
|
<include name="*stax-*.jar" />
|
|
<include name="wstx-*.jar" />
|
|
<include name="jcl-over-slf4j-*.jar" />
|
|
<include name="slf4j-api-*.jar" />
|
|
</fileset>
|
|
</copy>
|
|
|
|
</target>
|
|
|
|
<target name="example"
|
|
description="Creates a runnable example configuration."
|
|
depends="init-forrest-entities,compile-lucene,dist-contrib,dist-war,example-contrib">
|
|
<copy file="${dist}/${fullnamever}.war"
|
|
tofile="${example}/webapps/${ant.project.name}.war"/>
|
|
<jar destfile="${example}/exampledocs/post.jar"
|
|
basedir="${dest}/solr"
|
|
filesetmanifest="skip"
|
|
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}/work" 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>
|
|
|
|
<!-- make a distribution -->
|
|
<target name="package" depends="create-package"/>
|
|
|
|
<target name="create-package"
|
|
description="Packages the Solr Distribution files and Documentation."
|
|
depends="dist, example, javadoc, dist-src, dist-javadoc">
|
|
|
|
<copy failonerror="false" todir="${build.docs}">
|
|
<fileset dir="site" />
|
|
</copy>
|
|
|
|
<delete file="${dist}/${fullnamever}.tgz" failonerror="false" />
|
|
<delete file="${dist}/${fullnamever}.zip" failonerror="false" />
|
|
|
|
<tar destfile="${dist}/${fullnamever}.tgz" compression="gzip" longfile="gnu">
|
|
<tarfileset dir="."
|
|
prefix="${fullnamever}"
|
|
includes="LICENSE.txt NOTICE.txt *.txt *.xml lucene-libs/** lib/** src/** example/** client/** contrib/"
|
|
excludes="lib/README.committers.txt **/data/ **/logs/* **/classes/ **/*.sh **/bin/ src/scripts/ src/site/build/ **/target/ client/ruby/flare/ client/python contrib/**/build/ **/*.iml **/*.ipr **/*.iws contrib/clustering/example/lib/** contrib/clustering/lib/downloads/** contrib/analysis-extras/lib/** contrib/uima/lib/**" />
|
|
<tarfileset dir="."
|
|
prefix="${fullnamever}"
|
|
includes="src/test-files/solr/lib/classes/empty-file-main-lib.txt" />
|
|
<tarfileset dir="."
|
|
mode="755"
|
|
prefix="${fullnamever}"
|
|
includes="**/*.sh **/bin/ src/scripts/" />
|
|
<tarfileset dir="."
|
|
prefix="${fullnamever}"
|
|
includes="dist/**"
|
|
excludes="*.tgz *.zip *.md5 **/*src*.jar **/*docs*.jar" />
|
|
<tarfileset dir="${build.docs}"
|
|
prefix="${fullnamever}/docs/" />
|
|
</tar>
|
|
<solr-checksum file="${dist}/${fullnamever}.tgz"/>
|
|
|
|
<gunzip src="${dist}/${fullnamever}.tgz" dest="${dest}/${fullnamever}.tar"/>
|
|
<untar src="${dest}/${fullnamever}.tar" dest="${dest}"/>
|
|
|
|
<fixcrlf srcdir="${dest}/${fullnamever}"
|
|
eol="crlf"
|
|
includes="**/*.txt **/*.xml **/*.java **/*.html **/*.csv **/*.css **/*.properties **/*.jsp **/*.xsl **/*.py **/*.rb **/*.js **/*.json **/*.pl"
|
|
/>
|
|
|
|
<zip destfile="${dist}/${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>
|
|
<solr-checksum file="${dist}/${fullnamever}.zip"/>
|
|
|
|
</target>
|
|
|
|
<target name="build-site" depends="svn-up, init-forrest-entities" description="Prototype Helper for Committers. Assumes SVN is in the path">
|
|
<delete dir="src/site/build"/>
|
|
<exec executable="forrest" dir="src/site"/>
|
|
<copy todir="site">
|
|
<fileset dir="src/site/build/site"/>
|
|
</copy>
|
|
<exec executable="svn" dir="site">
|
|
<arg value="ci"/>
|
|
<arg value="-m"/>
|
|
<arg value=""Forrest Entity updates""/>
|
|
</exec>
|
|
<exec executable="svn" dir="src/site">
|
|
<arg value="ci"/>
|
|
<arg value="-m"/>
|
|
<arg value=""Forrest Entity updates""/>
|
|
</exec>
|
|
<antcall target="svn-up"/>
|
|
|
|
</target>
|
|
<target name="svn-up">
|
|
<exec executable="svn">
|
|
<arg value="update"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="clean-dist-signatures">
|
|
<delete failonerror="false">
|
|
<fileset dir="${dist}">
|
|
<include name="**/*.asc"/>
|
|
</fileset>
|
|
</delete>
|
|
</target>
|
|
<target name="sign-artifacts" depends="clean-dist-signatures">
|
|
<!--<property file="${user.home}/.solr/build.properties" />-->
|
|
<input message="password:>" addproperty="gpg.passphrase">
|
|
<handler classname="org.apache.tools.ant.input.SecureInputHandler" />
|
|
</input>
|
|
<sign-artifact input.file="${dist}/${fullnamever}.tgz" output.file="${dist}/${fullnamever}.tgz.asc" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-artifact input.file="${dist}/${fullnamever}.zip" output.file="${dist}/${fullnamever}.zip.asc" gpg.passphrase="${gpg.passphrase}"/>
|
|
|
|
<!-- Maven artifacts -->
|
|
<sign-maven-dependency-artifacts artifact.id="solr-commons-csv" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-dependency-artifacts artifact.id="solr-noggit" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-war-artifacts artifact.id="solr" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-artifacts artifact.id="solr-analysis-extras" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-artifacts artifact.id="solr-cell" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-artifacts artifact.id="solr-clustering" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-artifacts artifact.id="solr-core" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-artifacts artifact.id="solr-dataimporthandler" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-artifacts artifact.id="solr-dataimporthandler-extras" gpg.passphrase="${gpg.passphrase}"/>
|
|
<sign-maven-artifacts artifact.id="solr-solrj" gpg.passphrase="${gpg.passphrase}"/>
|
|
|
|
<!-- These are special since there are no jars, just poms -->
|
|
<sign-artifact input.file="${maven.dist.prefix}/solr-parent/${version}/solr-parent-${version}.pom" gpg.passphrase="${gpg.passphrase}"/>
|
|
</target>
|
|
|
|
<target name="prepare-release" depends="clean, svn-up, build-site, package, sign-artifacts" description="Prototype helper for Committers. Assumes gpg is in the path">
|
|
|
|
<tar destfile="${dist}/solr-maven.tar" longfile="gnu">
|
|
<tarfileset dir="${dist}/maven" prefix="maven"/>
|
|
</tar>
|
|
<tar destfile="${dist}/solr.tar" longfile="gnu">
|
|
<tarfileset dir="${dist}" includes="${fullnamever}.* solr-maven.tar" excludes="${fullnamever}.war"/>
|
|
</tar>
|
|
</target>
|
|
|
|
<target name="generate-maven-artifacts" depends="maven.ant.tasks-check, create-package">
|
|
<sequential>
|
|
<ant target="get-maven-poms" dir=".."/>
|
|
|
|
<!--
|
|
|
|
!!!!!!!!!!
|
|
NOTE: If you add new artifacts, please make sure you also add to the sign-artifacts target
|
|
so that they get signed during release.
|
|
!!!!!!!
|
|
-->
|
|
|
|
<mkdir dir="${maven.build.dir}"/>
|
|
<mkdir dir="${maven.dist.dir}"/>
|
|
|
|
<!-- ========== SOLR PARENT POM ========== -->
|
|
|
|
<m2-deploy pom.xml="pom.xml"/>
|
|
|
|
<!-- ========== SOLR SPECIFIC COMMONS CSV ========== -->
|
|
<m2-deploy-with-pom-template pom.xml="lib/solr-commons-csv-pom.xml.template"
|
|
jar.file="lib/commons-csv-1.0-SNAPSHOT-r966014.jar" />
|
|
|
|
<!-- ========== SOLR ARTIFACTS ========== -->
|
|
|
|
<m2-deploy-with-pom-template pom.xml="lib/apache-solr-noggit-pom.xml.template"
|
|
jar.file="lib/apache-solr-noggit-r944541.jar" />
|
|
|
|
<m2-deploy pom.xml="contrib/dataimporthandler/src/pom.xml"
|
|
jar.file="${dist}/apache-solr-dataimporthandler-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-dataimporthandler-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-dataimporthandler-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="contrib/dataimporthandler/src/extras/pom.xml"
|
|
jar.file="${dist}/apache-solr-dataimporthandler-extras-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-dataimporthandler-extras-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-dataimporthandler-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="contrib/extraction/pom.xml"
|
|
jar.file="${dist}/apache-solr-cell-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-cell-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-cell-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="contrib/clustering/pom.xml"
|
|
jar.file="${dist}/apache-solr-clustering-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-clustering-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-clustering-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="contrib/analysis-extras/pom.xml"
|
|
jar.file="${dist}/apache-solr-analysis-extras-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-analysis-extras-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-analysis-extras-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="contrib/uima/pom.xml"
|
|
jar.file="${dist}/apache-solr-uima-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-uima-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-uima-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="src/pom.xml"
|
|
jar.file="${dist}/apache-solr-core-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-core-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-core-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="src/solrj/pom.xml"
|
|
jar.file="${dist}/apache-solr-solrj-${version}.jar">
|
|
<artifact-attachments>
|
|
<attach file="${dist}/apache-solr-solrj-src-${version}.jar" classifier="sources"/>
|
|
<attach file="${dist}/apache-solr-solrj-docs-${version}.jar" classifier="javadoc"/>
|
|
</artifact-attachments>
|
|
</m2-deploy>
|
|
|
|
<m2-deploy pom.xml="src/webapp/pom.xml"
|
|
jar.file="${dist}/apache-solr-${version}.war"/>
|
|
</sequential>
|
|
</target>
|
|
|
|
<target name="set-fsdir">
|
|
<property name="use.fsdir" value="true"/>
|
|
</target>
|
|
|
|
<target name="-taskdef">
|
|
<typedef resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:rat.anttasks">
|
|
<classpath>
|
|
<fileset dir="." includes="rat*.jar"/>
|
|
</classpath>
|
|
</typedef>
|
|
</target>
|
|
<target name="rat-sources" depends="-taskdef"
|
|
description="runs the tasks over src/java excluding the license directory">
|
|
<rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
|
|
<fileset dir="src/java"/>
|
|
<fileset dir="src/test"/>
|
|
<fileset dir="src/webapp"/>
|
|
<fileset dir="src/common"/>
|
|
<fileset dir="src/solrj"/>
|
|
<fileset dir="client">
|
|
<exclude name="**/CHANGES.*"/>
|
|
</fileset>
|
|
<fileset dir="contrib/dataimporthandler/src/main/java"/>
|
|
<fileset dir="contrib/dataimporthandler/src/test/java"/>
|
|
<fileset dir="contrib/dataimporthandler/src/extras/main/java"/>
|
|
<fileset dir="contrib/dataimporthandler/src/extras/test/java"/>
|
|
<fileset dir="contrib/clustering/src/main/java"/>
|
|
<fileset dir="contrib/clustering/src/test/java"/>
|
|
<fileset dir="contrib/extraction/src/main/java"/>
|
|
<fileset dir="contrib/extraction/src/test/java"/>
|
|
<fileset dir="contrib/analysis-extras/src/test"/>
|
|
<fileset dir="contrib/analysis-extras/src/test"/>
|
|
<fileset dir="contrib/uima/src/main/java"/>
|
|
<fileset dir="contrib/uima/src/test/java"/>
|
|
</rat:report>
|
|
</target>
|
|
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ===================== Runtime: luke ============================= -->
|
|
<!-- ========================================================================= -->
|
|
<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">
|
|
<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-solr.dir}/../lucene/build/classes/java" />
|
|
<pathelement location="${common-solr.dir}/../lucene/build/contrib/xml-query-parser/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="lucene.classpath"/>
|
|
<path refid="luke.classpath"/>
|
|
<path refid="test.run.classpath"/>
|
|
</classpath>
|
|
</java>
|
|
</target>
|
|
|
|
</project>
|
|
|
|
|