mirror of https://github.com/apache/lucene.git
847 lines
39 KiB
XML
847 lines
39 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:jacoco="antlib:org.jacoco.ant"
|
|
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 server' to create the Solr server." />
|
|
<echo message="Use 'bin/solr' to run the Solr after it is created." />
|
|
<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 JAR files." />
|
|
<echo message="Use 'ant documentation' to build documentation." />
|
|
<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="server" depends="dist-contrib"
|
|
description="Creates a Solr server">
|
|
<ant dir="webapp" target="dist" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<jar destfile="${example}/exampledocs/post.jar">
|
|
<fileset dir="${dest}/solr-core/classes/java">
|
|
<include name="org/apache/solr/util/SimplePostTool*.class"/>
|
|
<include name="org/apache/solr/util/RTimer.class"/>
|
|
<include name="org/apache/solr/util/RTimer$*.class"/>
|
|
</fileset>
|
|
<manifest>
|
|
<attribute name="Main-Class" value="org.apache.solr.util.SimplePostTool"/>
|
|
</manifest>
|
|
</jar>
|
|
<echo>See ${common-solr.dir}/README.txt for how to run the Solr server.</echo>
|
|
</target>
|
|
|
|
<target name="run-example" depends="server"
|
|
description="Run Solr interactively, via Jetty. -Dexample.debug=true to enable JVM debugger">
|
|
<property name="example.solr.home" location="${server.dir}/solr"/>
|
|
<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="${server.dir}/start.jar" fork="true" dir="${server.dir}" maxmemory="${example.heap.size}">
|
|
<jvmarg line="${example.jvm.line}"/>
|
|
<arg value="--module=http"/>
|
|
<sysproperty key="solr.solr.home" file="${example.solr.home}"/>
|
|
<sysproperty key="jetty.port" value="${example.jetty.port}"/>
|
|
<sysproperty key="jetty.home" value="${server.dir}"/>
|
|
</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 ============================= -->
|
|
<!-- ========================================================================= -->
|
|
|
|
<!-- solr/test-framework is excluded from compilation -->
|
|
<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="-init-totals, test-core, test-contrib, -check-totals"/>
|
|
<target name="test-nocompile">
|
|
<fail message="Target 'test-nocompile' will not run recursively. First change directory to the module you want to test."/>
|
|
</target>
|
|
|
|
<target name="jacoco" description="Generates JaCoCo code coverage reports." depends="-jacoco-install">
|
|
<!-- run jacoco for each module -->
|
|
<ant dir="${common-solr.dir}/core" target="jacoco" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<ant dir="solrj" target="jacoco" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
<contrib-crawl target="jacoco" failonerror="false"/>
|
|
|
|
<!-- produce aggregate report -->
|
|
<property name="jacoco.output.dir" location="${jacoco.report.dir}/solr-all"/>
|
|
<!-- try to clean output dir to prevent any confusion -->
|
|
<delete dir="${jacoco.output.dir}" failonerror="false"/>
|
|
<mkdir dir="${jacoco.output.dir}"/>
|
|
|
|
<jacoco:report>
|
|
<executiondata>
|
|
<fileset dir="${common-solr.dir}/build" includes="**/jacoco.db"/>
|
|
</executiondata>
|
|
<structure name="${Name} aggregate JaCoCo coverage report">
|
|
<classfiles>
|
|
<fileset dir="${common-solr.dir}/build">
|
|
<include name="**/classes/java/**/*.class"/>
|
|
<exclude name="solr-test-framework/**"/>
|
|
</fileset>
|
|
</classfiles>
|
|
<!-- TODO: trying to specify source files could maybe work, but would
|
|
double the size of the reports -->
|
|
</structure>
|
|
<html destdir="${jacoco.output.dir}" footer="Copyright ${year} Apache Software Foundation. All Rights Reserved."/>
|
|
</jacoco:report>
|
|
</target>
|
|
|
|
<!-- "-clover.load" is *not* a useless dependency. do not remove -->
|
|
<target name="test-core" description="Runs the core and solrj unit tests."
|
|
depends="-clover.load, test-solr-core, test-solrj"/>
|
|
<target name="pitest" description="Validate, then run core, solrj, and contrib unit tests."
|
|
depends="pitest-core, pitest-contrib"/>
|
|
<target name="beast">
|
|
<fail message="The Beast only works inside of individual modules"/>
|
|
</target>
|
|
<target name="compile-test" description="Compile core, solrj, and contrib unit tests, and solr-test-framework."
|
|
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="define-lucene-javadoc-url,javadocs-solr-core,javadocs-solrj,javadocs-test-framework,javadocs-contrib"/>
|
|
<target name="documentation" description="Generate all documentation"
|
|
depends="javadocs,changes-to-html,process-webpages"/>
|
|
<target name="compile-core" depends="compile-solr-core" unless="solr.core.compiled"/>
|
|
|
|
<target name="generate-website-quickstart"
|
|
description="Generate a version of the quickstart tutorial suitable for the website, at build/website/quickstart.mdtext">
|
|
<copy file="${common-solr.dir}/site/quickstart.mdtext" tofile="${common-solr.dir}/build/website/quickstart.mdtext"
|
|
overwrite="false" encoding="UTF-8">
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
<!-- Website images are under /solr/assets/images/ -->
|
|
<replaceregex pattern="src\s*=\s*"images/" replace="src="/solr/assets/images/" flags="gs"/>
|
|
<!-- Redirect to the website's version-specific system requirements page -->
|
|
<replaceregex pattern="\(SYSTEM_REQUIREMENTS.html\)" replace="(/solr/api/SYSTEM_REQUIREMENTS.html)" flags="gs"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="documentation-online" description="Generate a link to the online documentation"
|
|
depends="define-solr-javadoc-url">
|
|
<xslt in="${ant.file}" out="${javadoc-online.dir}/index.html" style="site/online-link.xsl" force="true">
|
|
<outputproperty name="method" value="html"/>
|
|
<outputproperty name="version" value="4.0"/>
|
|
<outputproperty name="encoding" value="UTF-8"/>
|
|
<outputproperty name="indent" value="yes"/>
|
|
<param name="version" expression="${version}"/>
|
|
<param name="solrJavadocUrl" expression="${solr.javadoc.url}"/>
|
|
</xslt>
|
|
<copy todir="${javadoc-online.dir}">
|
|
<fileset dir="site/assets" includes="**/solr.svg"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="process-webpages" depends="define-lucene-javadoc-url,resolve-markdown">
|
|
<makeurl property="process-webpages.buildfiles" separator="|">
|
|
<fileset dir="." includes="core/build.xml,test-framework/build.xml,solrj/build.xml,contrib/**/build.xml"/>
|
|
</makeurl>
|
|
<!--
|
|
The XSL input file is ignored completely, but XSL expects one to be given,
|
|
so we pass ourself (${ant.file}) here. The list of module build.xmls is given
|
|
via string parameter, that must be splitted by the XSL at '|'.
|
|
-->
|
|
<xslt in="${ant.file}" out="${javadoc.dir}/index.html" style="site/index.xsl" force="true">
|
|
<outputproperty name="method" value="html"/>
|
|
<outputproperty name="version" value="4.0"/>
|
|
<outputproperty name="encoding" value="UTF-8"/>
|
|
<outputproperty name="indent" value="yes"/>
|
|
<param name="buildfiles" expression="${process-webpages.buildfiles}"/>
|
|
<param name="version" expression="${version}"/>
|
|
<param name="luceneJavadocUrl" expression="${lucene.javadoc.url}"/>
|
|
</xslt>
|
|
|
|
<markdown todir="${javadoc.dir}">
|
|
<fileset dir="site" includes="**/*.mdtext"/>
|
|
<globmapper from="*.mdtext" to="*.html"/>
|
|
</markdown>
|
|
|
|
<copy todir="${javadoc.dir}">
|
|
<fileset dir="site/assets" />
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="jar" depends="jar-core,jar-solrj,jar-solr-test-framework,jar-contrib"
|
|
description="Jar solr core, solrj, solr-test-framework, and all contribs"/>
|
|
|
|
<target name="jar-src"
|
|
description="Create source jars for solr core, solrj, solr-test-framework, and all contribs">
|
|
<ant dir="core" target="jar-src" inheritAll="false"/>
|
|
<ant dir="solrj" target="jar-src" inheritAll="false"/>
|
|
<ant dir="test-framework" target="jar-src" inheritAll="false"/>
|
|
<contrib-crawl target="jar-src"/>
|
|
</target>
|
|
|
|
<!-- 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>
|
|
|
|
<target name="jar-core">
|
|
<ant dir="${common-solr.dir}/core" target="jar-core" 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>
|
|
|
|
<!-- Solr contrib targets -->
|
|
<target name="test-contrib" description="Run contrib unit tests.">
|
|
<contrib-crawl target="test"/>
|
|
</target>
|
|
|
|
<!-- Pitest targets -->
|
|
<target name="pitest-core" description="PiTest solr core">
|
|
<ant dir="core" target="pitest" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<target name="pitest-solrj" description="PiTest java client">
|
|
<ant dir="solrj" target="pitest" inheritAll="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</ant>
|
|
</target>
|
|
|
|
<target name="pitest-contrib" description="Run contrib PiTests.">
|
|
<contrib-crawl target="pitest" failonerror="false"/>
|
|
</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-example-lucene-match-version,check-licenses,rat-sources,check-forbidden-apis" description="Validate stuff." />
|
|
|
|
<target name="check-example-lucene-match-version">
|
|
<property name="configsets.dir" value="${server.dir}/solr/configsets"/>
|
|
<!-- validates all configset solrconfig files-->
|
|
<fail message="Some example solrconfig.xml files under ${configsets.dir} do not refer to the correct luceneMatchVersion: ${tests.luceneMatchVersion}">
|
|
<condition>
|
|
<resourcecount when="greater" count="0">
|
|
<fileset dir="${configsets.dir}" includes="**/solrconfig.xml">
|
|
<not>
|
|
<contains text="<luceneMatchVersion>${tests.luceneMatchVersion}<" casesensitive="no"/>
|
|
</not>
|
|
</fileset>
|
|
</resourcecount>
|
|
</condition>
|
|
</fail>
|
|
<!-- validates remaining example solrconfig files-->
|
|
<fail message="Some example solrconfig.xml files under ${example} do not refer to the correct luceneMatchVersion: ${tests.luceneMatchVersion}">
|
|
<condition>
|
|
<resourcecount when="greater" count="0">
|
|
<fileset dir="${example}" includes="**/solrconfig.xml">
|
|
<not>
|
|
<contains text="<luceneMatchVersion>${tests.luceneMatchVersion}<" casesensitive="no"/>
|
|
</not>
|
|
</fileset>
|
|
</resourcecount>
|
|
</condition>
|
|
</fail>
|
|
<!-- Count the immediate sub-directories of the configsets dir to ensure all sub-dirs have a solrconfig.xml -->
|
|
<resourcecount property="count.subdirs">
|
|
<dirset dir="${configsets.dir}" includes="*"/>
|
|
</resourcecount>
|
|
<!-- Ensure there is at least one sub-directory -->
|
|
<fail message="No sub-directories found under ${configsets.dir}">
|
|
<condition>
|
|
<equals arg1="${count.subdirs}" arg2="0"/>
|
|
</condition>
|
|
</fail>
|
|
<fail message="At least one sub-directory under ${configsets.dir} does not have a solrconfig.xml file">
|
|
<condition>
|
|
<resourcecount when="ne" count="${count.subdirs}">
|
|
<fileset dir="${configsets.dir}" includes="**/solrconfig.xml"/>
|
|
</resourcecount>
|
|
</condition>
|
|
</fail>
|
|
</target>
|
|
|
|
<target name="check-licenses" depends="compile-tools,resolve,load-custom-tasks" description="Validate license stuff.">
|
|
<property name="skipRegexChecksum" value=""/>
|
|
<license-check-macro dir="${basedir}" licensedir="${common-solr.dir}/licenses">
|
|
<additional-excludes>
|
|
<exclude name="example/exampledocs/post.jar" />
|
|
<exclude name="server/solr-webapp/**" />
|
|
<exclude name="package/**"/>
|
|
</additional-excludes>
|
|
<additional-filters>
|
|
<replaceregex pattern="jetty([^/]+)$" replace="jetty" flags="gi" />
|
|
<!-- start.jar comes from jetty, .jar already stripped by checker defaults -->
|
|
<replaceregex pattern="^start$" replace="jetty" 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="-install-forbidden-apis" description="Check forbidden API calls in compiled class files.">
|
|
<subant target="check-forbidden-apis" 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"/>
|
|
</subant>
|
|
<contrib-crawl target="check-forbidden-apis"/>
|
|
</target>
|
|
|
|
<!-- rat sources -->
|
|
<!-- rat-sources-typedef is *not* a useless dependency. do not remove -->
|
|
<target name="rat-sources" depends="rat-sources-typedef,common.rat-sources">
|
|
<subant target="rat-sources" 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="rat-sources"/>
|
|
</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="server/solr/lib" />
|
|
<delete dir="example/solr/lib" />
|
|
<delete dir="example/cloud" />
|
|
<delete dir="example/techproducts" />
|
|
<delete dir="example/schemaless" />
|
|
<delete includeemptydirs="true">
|
|
<fileset dir="bin">
|
|
<include name="*.pid" />
|
|
</fileset>
|
|
<fileset dir="example">
|
|
<include name="**/data/**/*" />
|
|
<exclude name="**/.gitignore" />
|
|
</fileset>
|
|
<fileset dir="server">
|
|
<include name="**/data/**/*" />
|
|
<include name="solr/zoo_data/" />
|
|
<include name="start.jar" />
|
|
<include name="logs/*" />
|
|
<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>
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ===================== 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" />
|
|
|
|
<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"/>
|
|
</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,documentation,-dist-changes,-dist-keys"/>
|
|
|
|
<!-- copy changes/ to the release folder -->
|
|
<target name="-dist-changes">
|
|
<copy todir="${package.dir}/changes">
|
|
<fileset dir="build/docs/changes"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!-- copy KEYS to the release folder -->
|
|
<target name="-dist-keys">
|
|
<get src="http://home.apache.org/keys/group/lucene.asc"
|
|
dest="${package.dir}/KEYS"/>
|
|
</target>
|
|
|
|
<!-- Makes a tarball of the source. -->
|
|
<!-- 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"
|
|
location="${package.dir}/${fullnamever}-src.tgz"/>
|
|
<delete file="${source.package.file}" failonerror="false" />
|
|
<export-source source.dir=".."/>
|
|
|
|
<!-- Exclude javadoc package-list files under licenses incompatible with the ASL -->
|
|
<delete dir="${src.export.dir}/lucene/tools/javadoc/java8"/>
|
|
<!-- Exclude clover license files incompatible with the ASL -->
|
|
<delete dir="${src.export.dir}/lucene/tools/clover"/>
|
|
|
|
<build-changes changes.src.file="${src.export.dir}/solr/CHANGES.txt"
|
|
changes.target.dir="${src.export.dir}/solr/docs/changes"
|
|
changes.product="solr"/>
|
|
|
|
<tar destfile="${source.package.file}" compression="gzip" longfile="gnu">
|
|
<tarfileset dir="${src.export.dir}/lucene"
|
|
includes="CHANGES.txt"
|
|
fullpath="${fullnamever}/solr/LUCENE_CHANGES.txt" />
|
|
<tarfileset dir="${src.export.dir}"
|
|
prefix="${fullnamever}"
|
|
excludes="solr/example/**/*.sh solr/example/**/bin/ solr/scripts/**"/>
|
|
<tarfileset dir="${src.export.dir}"
|
|
prefix="${fullnamever}"
|
|
filemode="755"
|
|
includes="solr/example/**/*.sh solr/example/**/bin/ solr/scripts/**"/>
|
|
<tarfileset dir="${src.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" />
|
|
|
|
<!-- includes/excludes requires a relative path -->
|
|
<property name="dist.rel" location="${dist}" relative="yes"/>
|
|
<property name="package.dir.rel" location="${package.dir}" relative="yes"/>
|
|
|
|
<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.rel}/** ${dist.rel}/**
|
|
example/lib/**
|
|
**/*.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">
|
|
<antcall inheritall="true">
|
|
<param name="called.from.create-package" value="true"/>
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
<target name="init-dist"/>
|
|
<target name="dist"/>
|
|
<target name="server"/>
|
|
<target name="documentation-online"/>
|
|
</antcall>
|
|
<mkdir dir="${dest}/${fullnamever}"/>
|
|
<delete includeemptydirs="true">
|
|
<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="../lucene"
|
|
includes="CHANGES.txt"
|
|
fullpath="${fullnamever}/LUCENE_CHANGES.txt" />
|
|
<tarfileset dir="."
|
|
prefix="${fullnamever}"
|
|
includes="LICENSE.txt NOTICE.txt CHANGES.txt README.txt SYSTEM_REQUIREMENTS.txt
|
|
bin/** server/** example/** contrib/**/lib/** contrib/**/README.txt
|
|
licenses/**"
|
|
excludes="licenses/README.committers.txt **/data/ **/logs/*
|
|
**/classes/ **/*.sh **/ivy.xml **/build.xml
|
|
**/bin/ **/*.iml **/*.ipr **/*.iws **/pom.xml
|
|
**/*pom.xml.template server/etc/test/" />
|
|
<tarfileset dir="${dest}/contrib-lucene-libs-to-package"
|
|
prefix="${fullnamever}"
|
|
includes="**" />
|
|
<tarfileset dir="."
|
|
filemode="755"
|
|
prefix="${fullnamever}"
|
|
includes="bin/** server/**/*.sh example/**/*.sh example/**/bin/"
|
|
excludes="server/etc/test/**" />
|
|
<tarfileset dir="."
|
|
prefix="${fullnamever}"
|
|
includes="dist/*.jar
|
|
dist/solrj-lib/*
|
|
dist/test-framework/**"
|
|
excludes="**/*.tgz **/*.zip **/*.md5 **/*src*.jar **/*docs*.jar **/*.sha1" />
|
|
<tarfileset dir="${javadoc-online.dir}"
|
|
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="changes-to-html" depends="define-lucene-javadoc-url">
|
|
<build-changes changes.product="solr"/>
|
|
</target>
|
|
|
|
<target name="sign-artifacts">
|
|
<sign-artifacts-macro artifacts.dir="${package.dir}"/>
|
|
</target>
|
|
|
|
<target name="resolve" depends="resolve-example,resolve-server">
|
|
<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>
|
|
|
|
<target name="documentation-lint" depends="-ecj-javadoc-lint,-documentation-lint-unsupported" if="documentation-lint.supported"
|
|
description="Validates the generated documentation (HTML errors, broken links,...)">
|
|
<!-- we use antcall here, otherwise ANT will run all dependent targets: -->
|
|
<antcall target="-documentation-lint"/>
|
|
</target>
|
|
|
|
<!-- TODO: does solr have any other docs we should check? -->
|
|
<!-- TODO: also integrate checkJavaDocs.py, which does more checks -->
|
|
<target name="-documentation-lint" depends="documentation">
|
|
<jtidy-macro>
|
|
<!-- NOTE: must currently exclude deprecated-list due to a javadocs bug (as of 1.7.0_09)
|
|
javadocs generates invalid XML if you deprecate a method that takes a parameter
|
|
with a generic type -->
|
|
<fileset dir="build/docs" includes="**/*.html" excludes="**/deprecated-list.html,quickstart.html"/>
|
|
</jtidy-macro>
|
|
<echo message="Checking for broken links..."/>
|
|
<check-broken-links dir="${javadoc.dir}"/>
|
|
<echo message="Checking for malformed docs..."/>
|
|
<!-- TODO: add missing docs for all classes and bump this to level=class -->
|
|
<check-missing-javadocs dir="${javadoc.dir}" level="package"/>
|
|
</target>
|
|
|
|
<target name="-ecj-javadoc-lint" depends="compile,compile-test,jar-test-framework,-ecj-javadoc-lint-unsupported,-ecj-resolve" if="ecj-javadoc-lint.supported">
|
|
<subant target="-ecj-javadoc-lint" failonerror="true" 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"/>
|
|
</subant>
|
|
<contrib-crawl target="-ecj-javadoc-lint"/>
|
|
</target>
|
|
|
|
<!-- define-lucene-javadoc-url is *not* a useless dependencies. Do not remove! -->
|
|
<target name="-dist-maven" depends="install-maven-tasks,define-lucene-javadoc-url">
|
|
<sequential>
|
|
<m2-deploy pom.xml="${filtered.pom.templates.dir}/solr/pom.xml"/> <!-- Solr parent POM -->
|
|
<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>
|
|
|
|
<target name="generate-maven-artifacts" depends="-unpack-solr-tgz">
|
|
<ant dir=".." target="resolve" inheritall="false"/>
|
|
<antcall target="-filter-pom-templates" inheritall="false"/>
|
|
<antcall target="-dist-maven" inheritall="false">
|
|
<propertyset refid="uptodate.and.compiled.properties"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="-validate-maven-dependencies" depends="compile-tools, install-maven-tasks, load-custom-tasks">
|
|
<sequential>
|
|
<subant target="-validate-maven-dependencies" failonerror="true" 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="-validate-maven-dependencies"/>
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- ========================================================================= -->
|
|
<!-- ========================= COMMITTERS' HELPERS =========================== -->
|
|
<!-- ========================================================================= -->
|
|
|
|
<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/collection1/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"/>
|
|
<!-- kurdish -->
|
|
<copy verbose="true" file="${analysis-common.res.dir}/ckb/stopwords.txt"
|
|
tofile="${analysis.conf.dest}/stopwords_ckb.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>
|
|
|
|
<target name="jar-checksums" depends="resolve">
|
|
<jar-checksum-macro srcdir="${common-solr.dir}" dstdir="${common-solr.dir}/licenses"/>
|
|
</target>
|
|
|
|
<target name="-append-module-dependencies-properties">
|
|
<ant dir="core" target="-append-module-dependencies-properties" inheritAll="false"/>
|
|
<ant dir="solrj" target="-append-module-dependencies-properties" inheritAll="false"/>
|
|
<ant dir="test-framework" target="-append-module-dependencies-properties" inheritAll="false"/>
|
|
<contrib-crawl target="-append-module-dependencies-properties"/>
|
|
</target>
|
|
|
|
</project>
|