blob: ef597603faafcba178c97570836efcc18af0dd4d [file] [log] [blame]
<?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 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/CLIO.class"/>
<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>
<!-- ========================================================================= -->
<!-- ========================== 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">
<ant dir="solr-ref-guide" target="bare-bones-html-validation" inheritall="false">
<propertyset refid="uptodate.and.compiled.properties"/>
<property name="local.javadocs" value="true" />
</ant>
</target>
<target name="compile-core" depends="compile-solr-core" unless="solr.core.compiled"/>
<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>
<loadresource property="doc-solr-guide-version-path">
<propertyresource name="version"/>
<filterchain>
<tokenfilter>
<filetokenizer/>
<replaceregex pattern="^(\d+)\.(\d+).*" replace="\1_\2"/>
</tokenfilter>
</filterchain>
</loadresource>
<!--
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}"/>
<param name="solrGuideVersion" expression="${doc-solr-guide-version-path}"/>
</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="&lt;luceneMatchVersion&gt;${tests.luceneMatchVersion}&lt;" 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="&lt;luceneMatchVersion&gt;${tests.luceneMatchVersion}&lt;" 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="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"/>
<!-- copy changes/ to the release folder -->
<target name="-dist-changes">
<copy todir="${package.dir}/changes">
<fileset dir="build/docs/changes"/>
</copy>
</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"/>
<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/**/conf/** 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/ contrib/**/src/" />
<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/ contrib/**/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 **/*.sha512" />
<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>
<ant dir="server" target="resolve" inheritall="false">
<propertyset refid="uptodate.and.compiled.properties"/>
</ant>
<ant dir="solr-ref-guide" 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"/>
</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="-install-to-maven-local-repo" depends="install-maven-tasks">
<sequential>
<m2-install pom.xml="${filtered.pom.templates.dir}/solr/pom.xml"/> <!-- Solr parent POM -->
<subant target="-install-to-maven-local-repo" 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="-install-to-maven-local-repo"/>
</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>