| <?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="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="<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> |
| <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> |