mirror of https://github.com/apache/lucene.git
436 lines
20 KiB
XML
436 lines
20 KiB
XML
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<project name="common-solr" default="default" xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
|
|
<description>
|
|
This file is designed for importing into a main build file, and not intended
|
|
for standalone use.
|
|
</description>
|
|
|
|
<dirname file="${ant.file.common-solr}" property="common-solr.dir"/>
|
|
|
|
<property name="Name" value="Solr" />
|
|
<property name="version" value="5.0-SNAPSHOT"/>
|
|
<property name="fullname" value="apache-${ant.project.name}"/>
|
|
<property name="fullnamever" value="${fullname}-${version}"/>
|
|
<property name="final.name" value="${fullnamever}"/>
|
|
|
|
<!-- solr uses 1.6 -->
|
|
<property name="javac.source" value="1.6"/>
|
|
<property name="javac.target" value="1.6"/>
|
|
<property name="javac.args" value=""/>
|
|
|
|
<property name="dest" location="${common-solr.dir}/build" />
|
|
<property name="build.dir" location="${dest}/${ant.project.name}"/>
|
|
<property name="dist" location="${common-solr.dir}/dist"/>
|
|
<property name="package.dir" location="${common-solr.dir}/package"/>
|
|
<property name="maven.dist.dir" location="${package.dir}/maven"/>
|
|
<property name="lucene-libs" location="${dest}/lucene-libs" />
|
|
<property name="tests.userdir" location="src/test-files"/>
|
|
<property name="example" location="${common-solr.dir}/example" />
|
|
<property name="javadoc.dir" location="${dest}/docs"/>
|
|
<property name="tests.loggingfile" location="${common-solr.dir}/testlogging.properties"/>
|
|
<property name="tests.cleanthreads.sysprop" value="perClass"/>
|
|
|
|
<property name="changes.target.dir" value="${dest}/docs/changes"/>
|
|
<property name="license.dir" value="${common-solr.dir}/licenses"/>
|
|
|
|
<import file="${common-solr.dir}/../lucene/module-build.xml"/>
|
|
|
|
<path id="additional.dependencies">
|
|
<fileset dir="${common-solr.dir}/core/lib" excludes="${common.classpath.excludes}"/>
|
|
<fileset dir="${common-solr.dir}/solrj/lib" excludes="${common.classpath.excludes}"/>
|
|
<fileset dir="${common-solr.dir}/example/lib" excludes="${common.classpath.excludes}"/>
|
|
<fileset dir="${common-solr.dir}/example/example-DIH/solr/db/lib" excludes="${common.classpath.excludes}"/>
|
|
<fileset dir="lib" excludes="${common.classpath.excludes}" erroronmissingdir="false"/>
|
|
</path>
|
|
|
|
<!-- Solr Specification Version
|
|
|
|
This will be used in the Manifest file, and therefore must
|
|
match the pattern "digit+{.digit+}*"
|
|
|
|
By default, this should be set to "X.Y.M.${dateversion}"
|
|
where X.Y.M is the last version released (on this branch).
|
|
-->
|
|
<property name="solr.spec.version" value="5.0.0.${dateversion}" />
|
|
|
|
<path id="solr.lucene.libs">
|
|
<!-- List of jars that will be used as the foundation for both
|
|
the base classpath, as well as copied into the lucene-libs dir
|
|
in the release.
|
|
-->
|
|
<!-- NOTE: lucene-core is explicitly not included because of the
|
|
base.classpath (compilation & tests are done directly against
|
|
the class files w/o needing to build the jar)
|
|
-->
|
|
<pathelement location="${analyzers-common.jar}"/>
|
|
<pathelement location="${analyzers-kuromoji.jar}"/>
|
|
<pathelement location="${analyzers-phonetic.jar}"/>
|
|
<pathelement location="${highlighter.jar}"/>
|
|
<pathelement location="${memory.jar}"/>
|
|
<pathelement location="${misc.jar}"/>
|
|
<pathelement location="${spatial.jar}"/>
|
|
<pathelement location="${suggest.jar}"/>
|
|
<pathelement location="${grouping.jar}"/>
|
|
<pathelement location="${queries.jar}"/>
|
|
<pathelement location="${queryparser.jar}"/>
|
|
</path>
|
|
|
|
<path id="solr.base.classpath">
|
|
<pathelement location="${common-solr.dir}/build/solr-solrj/classes/java"/>
|
|
<pathelement location="${common-solr.dir}/build/solr-core/classes/java"/>
|
|
<path refid="solr.lucene.libs" />
|
|
<path refid="additional.dependencies"/>
|
|
<path refid="base.classpath"/>
|
|
</path>
|
|
|
|
<path id="classpath" refid="solr.base.classpath"/>
|
|
|
|
<path id="solr.test.base.classpath">
|
|
<pathelement path="${common-solr.dir}/build/solr-test-framework/classes/java"/>
|
|
<pathelement path="${build.dir}/test-files"/>
|
|
<path refid="test.base.classpath"/>
|
|
</path>
|
|
|
|
<path id="test.classpath" refid="solr.test.base.classpath"/>
|
|
|
|
<macrodef name="solr-contrib-uptodate">
|
|
<attribute name="name"/>
|
|
<attribute name="property" default="@{name}.uptodate"/>
|
|
<attribute name="classpath.property" default="@{name}.jar"/>
|
|
<!-- set jarfile only, if the target jar file has no generic name -->
|
|
<attribute name="jarfile" default="${common-solr.dir}/build/contrib/solr-@{name}/apache-solr-@{name}-${version}.jar"/>
|
|
<sequential>
|
|
<!--<echo message="Checking '@{jarfile}' against source folder '${common.dir}/contrib/@{name}/src/java'"/>-->
|
|
<property name="@{classpath.property}" location="@{jarfile}"/>
|
|
<uptodate property="@{property}" targetfile="@{jarfile}">
|
|
<srcfiles dir="${common-solr.dir}/contrib/@{name}/src/java" includes="**/*.java"/>
|
|
</uptodate>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<target name="validate" depends="compile-tools">
|
|
</target>
|
|
|
|
<target name="init-dist" >
|
|
<mkdir dir="${build.dir}"/>
|
|
<mkdir dir="${package.dir}"/>
|
|
<mkdir dir="${dist}"/>
|
|
<mkdir dir="${maven.dist.dir}"/>
|
|
</target>
|
|
|
|
<target name="prep-lucene-jars"
|
|
depends="jar-lucene-core, jar-analyzers-phonetic, jar-analyzers-kuromoji, jar-suggest, jar-highlighter, jar-memory,
|
|
jar-misc, jar-spatial, jar-grouping, jar-queries, jar-queryparser">
|
|
<property name="solr.deps.compiled" value="true"/>
|
|
</target>
|
|
|
|
<target name="lucene-jars-to-solr" depends="prep-lucene-jars">
|
|
<!-- TODO: clean this up -->
|
|
<sequential>
|
|
<ant dir="${common.dir}" target="default" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<copy todir="${lucene-libs}" preservelastmodified="true" flatten="true" failonerror="true" overwrite="true">
|
|
<path refid="solr.lucene.libs" />
|
|
<!-- NOTE: lucene-core is not already included in "solr.lucene.libs"
|
|
because of it's use in classpaths.
|
|
-->
|
|
<fileset file="${lucene-core.jar}" />
|
|
</copy>
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- Shared core/solrj/test-framework/contrib targets -->
|
|
|
|
<macrodef name="solr-jarify" description="Builds a Solr JAR file">
|
|
<attribute name="basedir" default="${build.dir}/classes/java"/>
|
|
<attribute name="destfile" default="${build.dir}/${final.name}.jar"/>
|
|
<attribute name="title" default="Apache Solr Search Server: ${ant.project.name}"/>
|
|
<attribute name="excludes" default="**/pom.xml,**/*.iml"/>
|
|
<attribute name="metainf.source.dir" default="${common-solr.dir}"/>
|
|
<attribute name="implementation.title" default="org.apache.solr"/>
|
|
<attribute name="spec.version" default="${solr.spec.version}"/>
|
|
<attribute name="manifest.file" default="${manifest.file}"/>
|
|
<element name="nested" optional="true" implicit="true"/>
|
|
<sequential>
|
|
<jarify basedir="@{basedir}" destfile="@{destfile}"
|
|
title="@{title}" excludes="@{excludes}"
|
|
metainf.source.dir="@{metainf.source.dir}"
|
|
implementation.title="@{implementation.title}"
|
|
spec.version="@{spec.version}"
|
|
manifest.file="@{manifest.file}">
|
|
<nested/>
|
|
</jarify>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<target name="jar-core" depends="compile-core">
|
|
<solr-jarify/>
|
|
</target>
|
|
|
|
<target name="compile-core" depends="prep-lucene-jars,resolve-example,common.compile-core"/>
|
|
<target name="compile-test" depends="sync-resources,compile-solr-test-framework,common.compile-test"/>
|
|
|
|
<target name="dist" depends="jar-core">
|
|
<copy file="${build.dir}/${fullnamever}.jar" todir="${dist}"/>
|
|
</target>
|
|
|
|
<property name="lucenedocs" location="${common.dir}/build/docs"/>
|
|
|
|
<!-- dependency to ensure all lucene javadocs are present -->
|
|
<target name="lucene-javadocs" depends="javadocs-lucene-core,javadocs-analyzers-common,javadocs-analyzers-icu,javadocs-analyzers-kuromoji,javadocs-analyzers-phonetic,javadocs-analyzers-smartcn,javadocs-analyzers-morfologik,javadocs-analyzers-stempel,javadocs-analyzers-uima,javadocs-suggest,javadocs-grouping,javadocs-queries,javadocs-queryparser,javadocs-highlighter,javadocs-memory,javadocs-misc,javadocs-spatial,javadocs-test-framework"/>
|
|
|
|
<!-- create javadocs for the current module -->
|
|
<target name="javadocs" depends="compile-core,define-lucene-javadoc-url,lucene-javadocs,javadocs-solr-core">
|
|
<sequential>
|
|
<mkdir dir="${javadoc.dir}/${name}"/>
|
|
<solr-invoke-javadoc>
|
|
<solrsources>
|
|
<packageset dir="${src.dir}"/>
|
|
</solrsources>
|
|
<links>
|
|
<link href="../solr-solrj"/>
|
|
<link href="../solr-core"/>
|
|
</links>
|
|
</solr-invoke-javadoc>
|
|
<solr-jarify basedir="${javadoc.dir}/${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
|
|
</sequential>
|
|
</target>
|
|
|
|
<target name="check-solr-core-javadocs-uptodate" unless="solr-core-javadocs.uptodate">
|
|
<uptodate property="solr-core-javadocs.uptodate" targetfile="${build.dir}/solr-core/apache-solr-core-${version}-javadoc.jar">
|
|
<srcfiles dir="${common-solr.dir}/core/src/java" includes="**/*.java"/>
|
|
</uptodate>
|
|
</target>
|
|
|
|
<target name="check-solrj-javadocs-uptodate" unless="solrj-javadocs.uptodate">
|
|
<uptodate property="solrj-javadocs.uptodate" targetfile="${build.dir}/solr-solrj/apache-solr-solrj-${version}-javadoc.jar">
|
|
<srcfiles dir="${common-solr.dir}/solrj/src/java" includes="**/*.java"/>
|
|
</uptodate>
|
|
</target>
|
|
|
|
<target name="javadocs-solr-core" depends="check-solr-core-javadocs-uptodate" unless="solr-core-javadocs.uptodate">
|
|
<ant dir="${common-solr.dir}/core" target="javadocs" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="solr-core-javadocs.uptodate" value="true"/>
|
|
</target>
|
|
|
|
<target name="javadocs-solrj" depends="check-solrj-javadocs-uptodate" unless="solrj-javadocs.uptodate">
|
|
<ant dir="${common-solr.dir}/solrj" target="javadocs" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="solrj-javadocs.uptodate" value="true"/>
|
|
</target>
|
|
|
|
<!-- macro to create solr javadocs with links to lucene. make sure calling task depends on lucene-javadocs -->
|
|
<macrodef name="solr-invoke-javadoc">
|
|
<element name="solrsources" optional="yes"/>
|
|
<element name="links" optional="yes"/>
|
|
<attribute name="destdir" default="${javadoc.dir}/${name}"/>
|
|
<attribute name="title" default="${Name} ${version} ${name} API"/>
|
|
<attribute name="overview" default="${src.dir}/overview.html"/>
|
|
<sequential>
|
|
<mkdir dir="@{destdir}"/>
|
|
<invoke-javadoc destdir="@{destdir}" title="@{title}" overview="@{overview}">
|
|
<sources>
|
|
<solrsources/>
|
|
<link offline="true" href="${lucene.javadoc.url}core" packagelistloc="${lucenedocs}/core"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-common" packagelistloc="${lucenedocs}/analyzers-common"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-icu" packagelistloc="${lucenedocs}/analyzers-icu"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-kuromoji" packagelistloc="${lucenedocs}/analyzers-kuromoji"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-morfologik" packagelistloc="${lucenedocs}/analyzers-morfologik"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-phonetic" packagelistloc="${lucenedocs}/analyzers-phonetic"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-smartcn" packagelistloc="${lucenedocs}/analyzers-smartcn"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-stempel" packagelistloc="${lucenedocs}/analyzers-stempel"/>
|
|
<link offline="true" href="${lucene.javadoc.url}analyzers-uima" packagelistloc="${lucenedocs}/analyzers-uima"/>
|
|
<link offline="true" href="${lucene.javadoc.url}suggest" packagelistloc="${lucenedocs}/suggest"/>
|
|
<link offline="true" href="${lucene.javadoc.url}grouping" packagelistloc="${lucenedocs}/grouping"/>
|
|
<link offline="true" href="${lucene.javadoc.url}queries" packagelistloc="${lucenedocs}/queries"/>
|
|
<link offline="true" href="${lucene.javadoc.url}queryparser" packagelistloc="${lucenedocs}/queryparser"/>
|
|
<link offline="true" href="${lucene.javadoc.url}highlighter" packagelistloc="${lucenedocs}/highlighter"/>
|
|
<link offline="true" href="${lucene.javadoc.url}memory" packagelistloc="${lucenedocs}/memory"/>
|
|
<link offline="true" href="${lucene.javadoc.url}misc" packagelistloc="${lucenedocs}/misc"/>
|
|
<link offline="true" href="${lucene.javadoc.url}spatial" packagelistloc="${lucenedocs}/spatial"/>
|
|
<links/>
|
|
<link href=""/>
|
|
</sources>
|
|
</invoke-javadoc>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<target name="define-lucene-javadoc-url" unless="lucene.javadoc.url">
|
|
<script language="javascript"><![CDATA[
|
|
var url, version = project.getProperty('version');
|
|
if (version.contains('-SNAPSHOT')) {
|
|
importClass(java.io.File);
|
|
url = new File(project.getProperty('common.dir'), 'build' + File.separator + 'docs').toURI().toASCIIString();
|
|
if (!(/\/$/.test(url))) url += '/';
|
|
} else {
|
|
version = version.replace('.', '_');
|
|
url = 'http://lucene.apache.org/core/' + version + '/';
|
|
}
|
|
project.setProperty('lucene.javadoc.url', url);
|
|
]]></script>
|
|
</target>
|
|
|
|
<target name="jar-src" depends="init">
|
|
<solr-jarify basedir="${src.dir}" destfile="${build.dir}/${final.name}-src.jar"/>
|
|
</target>
|
|
|
|
<target name="m2-deploy-solr-parent-pom" depends="filter-pom-templates"
|
|
unless="deployed.solr.parent.pom.uptodate">
|
|
<m2-deploy pom.xml="${filtered.pom.templates.dir}/solr/pom.xml"/> <!-- Solr parent POM -->
|
|
<property name="deployed.solr.parent.pom.uptodate" value="true"/>
|
|
</target>
|
|
|
|
<target name="dist-maven"
|
|
depends="filter-pom-templates, install-maven-tasks, m2-deploy-solr-parent-pom, dist-maven-common"/>
|
|
|
|
<target name="dist-maven-src-java"
|
|
depends="filter-pom-templates, install-maven-tasks, m2-deploy-solr-parent-pom, dist-maven-common-src-java"/>
|
|
|
|
<target name="-validate-maven-dependencies">
|
|
<property name="top.level.dir" location="${common.dir}/.."/>
|
|
<pathconvert property="pom.xml">
|
|
<mapper>
|
|
<chainedmapper>
|
|
<globmapper from="${top.level.dir}*" to="${filtered.pom.templates.dir}*"/>
|
|
<globmapper from="*build.xml" to="*pom.xml"/>
|
|
</chainedmapper>
|
|
</mapper>
|
|
<path location="${ant.file}"/>
|
|
</pathconvert>
|
|
<m2-validate-dependencies pom.xml="${pom.xml}" licenseDirectory="${license.dir}">
|
|
<additional-filters>
|
|
<replaceregex pattern="jetty([^/]+)$" replace="jetty" flags="gi" />
|
|
<replaceregex pattern="slf4j-([^/]+)$" replace="slf4j" flags="gi" />
|
|
<replaceregex pattern="(bcmail|bcprov)-([^/]+)$" replace="\1" flags="gi" />
|
|
</additional-filters>
|
|
<excludes>
|
|
<rsel:or>
|
|
<rsel:name name="**/lucene-*.jar" handledirsep="true"/>
|
|
<rsel:name name="**/solr-*.jar" handledirsep="true"/>
|
|
<!-- TODO: figure out what is going on here with servlet-apis -->
|
|
<rsel:name name="**/*servlet*.jar" handledirsep="true"/>
|
|
</rsel:or>
|
|
</excludes>
|
|
</m2-validate-dependencies>
|
|
</target>
|
|
|
|
<!-- Solr core targets -->
|
|
<target name="compile-solr-core" description="Compile Solr core." unless="solr.core.compiled">
|
|
<ant dir="${common-solr.dir}/core" target="compile-core" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="solr.core.compiled" value="true"/>
|
|
</target>
|
|
<target name="compile-test-solr-core" description="Compile solr core tests">
|
|
<ant dir="${common-solr.dir}/core" target="compile-test" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="solr.core.compiled" value="true"/>
|
|
</target>
|
|
<target name="dist-core" depends="init-dist"
|
|
description="Creates the Solr JAR Distribution file.">
|
|
<ant dir="${common-solr.dir}/core" target="dist" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<!-- Solrj targets -->
|
|
<target name="compile-solrj" description="Compile the java client." unless="solrj.compiled">
|
|
<ant dir="${common-solr.dir}/solrj" target="compile-core" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="solrj.compiled" value="true"/>
|
|
</target>
|
|
<target name="compile-test-solrj" description="Compile java client tests">
|
|
<ant dir="${common-solr.dir}/solrj" target="compile-test" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="solrj.compiled" value="true"/>
|
|
</target>
|
|
<target name="dist-solrj" depends="init-dist"
|
|
description="Creates the Solr-J JAR Distribution file.">
|
|
<ant dir="${common-solr.dir}/solrj" target="dist" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<!-- TODO: really a copy should work: but sync is currently safer
|
|
since some buggy tests don't create their own tempdir but
|
|
modify this target directory directly... -->
|
|
<target name="sync-resources">
|
|
<sync todir="${build.dir}/test-files">
|
|
<fileset dir="${tests.userdir}"/>
|
|
</sync>
|
|
</target>
|
|
|
|
<!-- Solr test-framework targets -->
|
|
<target name="compile-solr-test-framework" description="Compile the Solr test-framework" unless="solr.test.framework.compiled">
|
|
<ant dir="${common-solr.dir}/test-framework" target="compile-core" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="solr.core.compiled" value="true"/>
|
|
<property name="solr.test.framework.compiled" value="true"/>
|
|
</target>
|
|
|
|
<!-- resolve dependencies in the example (relied upon by compile/tests) -->
|
|
<target name="resolve-example" unless="example.libs.uptodate">
|
|
<ant dir="${common-solr.dir}/example" target="resolve" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<ant dir="${common-solr.dir}/example/example-DIH" target="resolve" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<property name="example.libs.uptodate" value="true"/>
|
|
</target>
|
|
|
|
<macrodef name="contrib-crawl">
|
|
<attribute name="target" default=""/>
|
|
<attribute name="failonerror" default="true"/>
|
|
<sequential>
|
|
<subant target="@{target}" failonerror="@{failonerror}" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
<fileset dir="." includes="contrib/*/build.xml"/>
|
|
</subant>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!-- Solr contrib targets -->
|
|
<target name="compile-contrib" description="Compile contrib modules">
|
|
<contrib-crawl target="compile-core"/>
|
|
</target>
|
|
|
|
<target name="compile-test-contrib" description="Compile contrib modules' tests">
|
|
<contrib-crawl target="compile-test"/>
|
|
</target>
|
|
|
|
<target name="javadocs-contrib" description="Compile contrib modules">
|
|
<contrib-crawl target="javadocs"/>
|
|
</target>
|
|
|
|
<target name="contribs-add-to-war">
|
|
<mkdir dir="${dest}/web"/>
|
|
<delete dir="${dest}/web" includes="**/*" failonerror="false"/>
|
|
<contrib-crawl target="add-to-war"/>
|
|
</target>
|
|
</project>
|