| <?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: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 example' to create a runnable example configuration." /> |
| <echo message="Use 'ant run-example' to create and run the example." /> |
| <echo message="And for developers:"/> |
| <echo message="Use 'ant clean' to clean compiled files." /> |
| <echo message="Use 'ant compile' to compile the source code." /> |
| <echo message="Use 'ant dist' to build the project WAR and JAR files." /> |
| <echo message="Use 'ant javadocs' to build javadocs under build/docs/api" /> |
| <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="example" description="Creates a runnable example configuration." |
| depends="dist-contrib,dist-war"> |
| <copy file="${dist}/${fullnamever}.war" |
| tofile="${example}/webapps/${ant.project.name}.war"/> |
| <jar destfile="${example}/exampledocs/post.jar" |
| basedir="${dest}/solr-core/classes/java" |
| includes="org/apache/solr/util/SimplePostTool*.class"> |
| <manifest> |
| <attribute name="Main-Class" value="org.apache.solr.util.SimplePostTool"/> |
| </manifest> |
| </jar> |
| <delete includeemptydirs="true"> |
| <fileset dir="${example}/solr-webapp" includes="**/*"/> |
| </delete> |
| <echo>See ${example}/README.txt for how to run the Solr example configuration.</echo> |
| </target> |
| |
| <target name="run-example" depends="example" |
| description="Run Solr interactively, via Jetty. -Dexample.debug=true to enable JVM debugger"> |
| <property name="example.solr.home" location="example/solr"/> |
| <property name="example.data.dir" location="example/solr/data"/> |
| <property name="example.debug.suspend" value="n"/> |
| <property name="example.jetty.port" value="8983"/> |
| <condition property="example.jvm.line" value="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=${example.debug.suspend},address=5005"> |
| <isset property="example.debug"/> |
| </condition> |
| <property name="example.jvm.line" value=""/> |
| <property name="example.heap.size" value="512M"/> |
| <java jar="${example}/start.jar" fork="true" dir="${example}" maxmemory="${example.heap.size}"> |
| <jvmarg line="${example.jvm.line}"/> |
| <sysproperty key="solr.solr.home" file="${example.solr.home}"/> |
| <sysproperty key="solr.data.dir" file="${example.data.dir}"/> |
| <sysproperty key="jetty.port" value="${example.jetty.port}"/> |
| </java> |
| </target> |
| |
| <!-- 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 ============================= --> |
| <!-- ========================================================================= --> |
| |
| <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="test-core, test-contrib"/> |
| <target name="test-core" description="Runs the core and solrj unit tests." |
| depends="test-solr-core, test-solrj"/> |
| <target name="compile-test" description="Compile unit tests." |
| 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="javadocs-all,javadocs-solrj,javadocs-test-framework"/> |
| <target name="compile-core" depends="compile-solr-core" unless="solr.core.compiled"/> |
| |
| <!-- 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> |
| |
| <!-- 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> |
| <target name="javadocs-solrj"> |
| <ant dir="solrj" target="javadocs" 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" failonerror="true"/> |
| </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-licenses,rat-sources,check-forbidden-apis" description="Validate stuff." /> |
| |
| <target name="check-licenses" depends="compile-tools,resolve,load-custom-tasks" description="Validate license stuff."> |
| <license-check-macro dir="${basedir}"> |
| <additional-excludes> |
| <!-- Exclude start.jar only (it'd be weird to have a license file there?) --> |
| <exclude name="example/start.jar" /> |
| <exclude name="example/exampledocs/post.jar" /> |
| <exclude name="example/solr-webapp/**" /> |
| </additional-excludes> |
| <additional-filters> |
| <replaceregex pattern="/jetty([^/]+)$" replace="/jetty" flags="gi" /> |
| <replaceregex pattern="/apache-solr-commons-csv-([^/]+)$" replace="/apache-solr-commons-csv" 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="compile-tools,compile-test,load-custom-tasks,-check-forbidden-java-apis,-check-forbidden-test-apis" |
| description="Check forbidden API calls in compiled class files."/> |
| |
| <target name="-check-forbidden-java-apis"> |
| <forbidden-apis> |
| <classpath refid="additional.dependencies"/> |
| <apiFileSet dir="${custom-tasks.dir}/forbiddenApis"> |
| <include name="jdk.txt" /> |
| <include name="jdk-deprecated.txt" /> |
| <include name="commons-io.txt" /> |
| </apiFileSet> |
| <fileset dir="${basedir}/build"> |
| <include name="**/*.class" /> |
| <!-- exclude DIH for now as it is broken with Locales and Encodings: SOLR-1916 --> |
| <exclude name="contrib/solr-dataimporthandler*/**" /> |
| </fileset> |
| </forbidden-apis> |
| </target> |
| |
| <target name="-check-forbidden-test-apis"> |
| <forbidden-apis apiFile="${custom-tasks.dir}/forbiddenApis/tests.txt"> |
| <classpath refid="junit-path"/> |
| <fileset dir="${basedir}/build"> |
| <include name="**/classes/test/**/*.class"/> |
| <include name="solr-test-framework/**/*.class"/> |
| <!-- not actually a test --> |
| <exclude name="solr-core/classes/test/org/apache/solr/search/DocSetPerf.class"/> |
| <!-- imported code --> |
| <exclude name="solr-core/classes/test/org/apache/solr/internal/**/*.class"/> |
| </fileset> |
| </forbidden-apis> |
| </target> |
| |
| <!-- rat sources --> |
| <target name="rat-sources"> |
| <sequential> |
| <ant dir="core" target="rat-sources" inheritall="false"/> |
| <ant dir="solrj" target="rat-sources" inheritall="false"/> |
| <ant dir="test-framework" target="rat-sources" inheritall="false"/> |
| <contrib-crawl target="rat-sources" failonerror="true"/> |
| </sequential> |
| </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="example/solr/lib" /> |
| <delete includeemptydirs="true"> |
| <fileset dir="example"> |
| <include name="**/data/**/*" /> |
| <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> |
| |
| <!-- |
| Run after Junit tests. |
| --> |
| <target name="generate-clover-reports" depends="clover"> |
| <fail unless="run.clover">Clover not enabled!</fail> |
| <mkdir dir="${clover.report.dir}"/> |
| <fileset dir="build" id="clover.test.result.files"> |
| <include name="**/test/TEST-*.xml"/> |
| </fileset> |
| <clover-report> |
| <current outfile="${clover.report.dir}" title="${final.name}" numThreads="0"> |
| <format type="html" filter="assert"/> |
| <testresults refid="clover.test.result.files"/> |
| </current> |
| <current outfile="${clover.report.dir}/clover.xml" title="${final.name}"> |
| <format type="xml" filter="assert"/> |
| <testresults refid="clover.test.result.files"/> |
| </current> |
| </clover-report> |
| </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, dist-war" /> |
| |
| <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" failonerror="true" /> |
| </target> |
| |
| <target name="dist-war" |
| description="Creates the Solr WAR Distribution file."> |
| <ant dir="webapp" target="dist" inheritall="false"> |
| <property name="exclude.from.war" value="log4j-1.*" /> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| </ant> |
| </target> |
| |
| <target name="dist-war-excl-slf4j" |
| description="Creates a Solr WAR Distribution file, excluding slf4j bindings."> |
| <ant dir="webapp" target="dist" inheritall="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| <property name="exclude.from.war" value="*over-slf4j*,slf4j-jdk14*,log4j-*" /> |
| <property name="solr.war.suffix" value="-excl-slf4j" /> |
| </ant> |
| </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"/> |
| |
| <!-- Makes a tarball from running "svn export" at the root level. --> |
| <!-- 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" |
| value="${package.dir}/${fullnamever}-src.tgz"/> |
| <delete file="${source.package.file}" failonerror="false" /> |
| <svn-export-source source.dir=".."/> |
| |
| <!-- Exclude javadoc package-list files under licenses incompatible with the ASL --> |
| <delete dir="${svn.export.dir}/lucene/tools/javadoc/java6"/> |
| <!-- Exclude clover license files incompatible with the ASL --> |
| <delete dir="${svn.export.dir}/lucene/tools/clover"/> |
| |
| <tar destfile="${source.package.file}" compression="gzip" longfile="gnu"> |
| <tarfileset dir="${svn.export.dir}" |
| prefix="${fullnamever}" |
| excludes="solr/example/**/*.sh solr/example/**/bin/ solr/scripts/**"/> |
| <tarfileset dir="${svn.export.dir}" |
| prefix="${fullnamever}" |
| filemode="755" |
| includes="solr/example/**/*.sh solr/example/**/bin/ solr/scripts/**"/> |
| <tarfileset dir="${svn.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" /> |
| |
| <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}/** ${dist}/** |
| example/webapps/*.war example/exampledocs/post.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" |
| depends="init-dist, dist, example, javadocs"> |
| <mkdir dir="${dest}/${fullnamever}"/> |
| <delete includeemptydirs="true"> |
| <fileset dir="${example}/solr-webapp" includes="**/*"/> |
| <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="." |
| prefix="${fullnamever}" |
| includes="LICENSE.txt NOTICE.txt CHANGES.txt README.txt example/** |
| client/README.txt client/ruby/solr-ruby/** contrib/**/lib/** |
| contrib/**/README.txt contrib/**/CHANGES.txt" |
| excludes="lib/README.committers.txt **/data/ **/logs/* |
| **/classes/ **/*.sh **/ivy.xml **/build.xml |
| **/bin/ **/*.iml **/*.ipr **/*.iws **/pom.xml |
| **/*pom.xml.template **/*.sha1" /> |
| <tarfileset dir="${dest}/contrib-lucene-libs-to-package" |
| prefix="${fullnamever}" |
| includes="**" /> |
| <tarfileset dir="." |
| filemode="755" |
| prefix="${fullnamever}" |
| includes="example/**/*.sh example/**/bin/" /> |
| <tarfileset dir="." |
| prefix="${fullnamever}" |
| includes="dist/*.jar dist/*.war dist/solrj-lib/*" |
| excludes="**/*.tgz **/*.zip **/*.md5 **/*src*.jar **/*docs*.jar **/*.sha1" /> |
| <tarfileset dir="${dest}/docs" |
| 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="sign-artifacts"> |
| <sign-artifacts-macro artifacts.dir="${package.dir}"/> |
| </target> |
| |
| <target name="javadocs-dep"> |
| <!-- NOOP --> |
| </target> |
| |
| <target name="resolve" depends="resolve-example"> |
| <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> |
| |
| <!-- since we build across all contribs, we must ensure all deps |
| are resolved --> |
| <target name="javadocs-all" |
| depends="resolve,prep-lucene-jars,javadocs-dep,lucene-javadocs,define-lucene-javadoc-url" |
| description="Generate javadoc for core, java client and contrib"> |
| <sequential> |
| <mkdir dir="${dest}/docs/api"/> |
| |
| <!-- TODO: optimize this, thats stupid here: --> |
| <subant target="module-jars-to-solr"> |
| <fileset dir="contrib/analysis-extras" includes="build.xml"/> |
| </subant> |
| |
| <!-- TODO: optimize this, thats stupid here: --> |
| <subant target="module-jars-to-solr"> |
| <fileset dir="contrib/uima" includes="build.xml"/> |
| </subant> |
| |
| <path id="javadoc.classpath"> |
| <path refid="test.classpath"/> |
| <fileset dir="${dest}/contrib"> |
| <include name="**/lucene-libs/**/*.jar"/> |
| </fileset> |
| <fileset dir="contrib"> |
| <include name="**/lib/**/*.jar"/> |
| <exclude name="**/analysis-extras/lib/**/*icu4j*.jar"/> <!-- extraction/lib/ has this one --> |
| </fileset> |
| <pathelement location="${dest}/solr-solrj/classes/java"/> |
| </path> |
| |
| <solr-invoke-javadoc destdir="${dest}/docs/api" |
| overview="core/src/java/overview.html"> |
| <solrsources> |
| <packageset dir="core/src/java" /> |
| <packageset dir="solrj/src/java" /> |
| <packageset dir="contrib/analysis-extras/src/java"/> |
| <packageset dir="contrib/clustering/src/java"/> |
| <packageset dir="contrib/dataimporthandler/src/java"/> |
| <packageset dir="contrib/dataimporthandler-extras/src/java"/> |
| <packageset dir="contrib/extraction/src/java"/> |
| <packageset dir="contrib/langid/src/java"/> |
| <packageset dir="contrib/uima/src/java"/> |
| <group title="Core" packages="org.apache.*" /> |
| <group title="SolrJ" packages="org.apache.solr.common.*,org.apache.solr.client.solrj.*,org.apache.zookeeper.*" /> |
| <group title="contrib: Clustering" packages="org.apache.solr.handler.clustering*" /> |
| <group title="contrib: DataImportHandler" packages="org.apache.solr.handler.dataimport*" /> |
| <group title="contrib: Solr Cell" packages="org.apache.solr.handler.extraction*" /> |
| <group title="contrib: Solr LangId" packages="org.apache.solr.update.processor.LanguageIdentifier*,org.apache.solr.update.processor.LangIdParams*,org.apache.solr.update.processor.DetectedLanguage*" /> |
| <group title="contrib: Solr UIMA" packages="org.apache.solr.uima*" /> |
| </solrsources> |
| </solr-invoke-javadoc> |
| </sequential> |
| </target> |
| |
| <!-- TODO: does solr have any other docs we should check? --> |
| <!-- TODO: also integrate checkJavaDocs.py, which does more checks --> |
| <target name="javadocs-lint" depends="javadocs"> |
| <check-broken-links dir="build/docs"/> |
| </target> |
| |
| <target name="generate-maven-artifacts" depends="install-maven-tasks"> |
| <sequential> |
| <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> |
| |
| |
| <!-- ========================================================================= --> |
| <!-- ========================= COMMITTERS' HELPERS =========================== --> |
| <!-- ========================================================================= --> |
| |
| <target name="stub-factories" depends="dist-core,lucene-jars-to-solr" |
| description="Generates stub factories as needed"> |
| |
| <path id="stub.jars"> |
| <!-- this needs to be a list of all jars that might contain |
| classes we want to build factories for |
| --> |
| <fileset dir="${lucene-libs}"> |
| <include name="*.jar"/> |
| </fileset> |
| <fileset dir="${dist}"> |
| <include name="*.jar"/> |
| <exclude name="*solrj*.jar"/> |
| </fileset> |
| </path> |
| <pathconvert property="jar.list" pathsep=" " refid="stub.jars" /> |
| <path id="missing.factories.classpath"> |
| <pathelement path="${common.dir}/contrib/queries/lib/jakarta-regexp-1.4.jar"/> |
| <path refid="test.classpath"/> |
| </path> |
| <property name="stub.list" value="${dest}/need-stub-factories.txt" /> |
| <java fork="false" |
| classname="org.apache.solr.util.SuggestMissingFactories" |
| logError="true" |
| failonerror="true" |
| classpathref="missing.factories.classpath" |
| output="${stub.list}"> |
| <arg line="${jar.list}" /> |
| </java> |
| <fail unless="stub.src.path">... |
| |
| This task requires that the property 'stub.src.path' be set. |
| |
| It must contain a "path" listing directories containing source |
| files that this task should use when looking for classes that |
| need factories created, the format is platform specific -- |
| typically it is colon seperated in Unix, semi-colon seperated |
| on windows, ie: |
| |
| ant stub-factories -Dstub.src.path="core/src:../lucene/contrib:../lucene/core/src/java:../lucene/analysis" |
| |
| FYI: The file ${stub.list} contains a list of classes |
| that seem to need stub factories. (if java files can be found to |
| use as guides for creating them). |
| </fail> |
| |
| <pathconvert pathsep=" " property="stub.src.dirs"> |
| <path> |
| <pathelement path="${stub.src.path}"/> |
| </path> |
| </pathconvert> |
| <exec executable="perl" |
| dir="core/src/java/org/apache/solr/analysis/" |
| failonerror="true"> |
| <arg value="${common-solr.dir}/dev-tools/stub-analysis-factory-maker.pl"/> |
| <redirector input="${stub.list}"> |
| <!-- place to put special case classes we want to ignore --> |
| <inputfilterchain> |
| <linecontainsregexp negate="true"> |
| <!-- only for internal Solr highlighting purposes --> |
| <regexp pattern="TokenOrderingFilter"/> |
| </linecontainsregexp> |
| <linecontainsregexp negate="true"> |
| <!-- no way to leverage this in Solr --> |
| <regexp pattern="CachingTokenFilter"/> |
| </linecontainsregexp> |
| <linecontainsregexp negate="true"> |
| <!-- no way to leverage this in Solr --> |
| <regexp pattern="HyphenationCompoundWordTokenFilter"/> |
| </linecontainsregexp> |
| <linecontainsregexp negate="true"> |
| <!-- no way to leverage these in Solr (yet) --> |
| <regexp pattern="Sink|Tee"/> |
| </linecontainsregexp> |
| <linecontainsregexp negate="true"> |
| <!-- Solr already has a different impl for this --> |
| <regexp pattern="SynonymTokenFilter"/> |
| </linecontainsregexp> |
| <linecontainsregexp negate="true"> |
| <!-- solr and lucene both have one? ? ? ? --> |
| <regexp pattern="LengthFilter"/> |
| </linecontainsregexp> |
| <linecontainsregexp negate="true"> |
| <!-- solr provides it's own SnowballPorterFilter variant --> |
| <regexp pattern="SnowballFilter"/> |
| </linecontainsregexp> |
| </inputfilterchain> |
| </redirector> |
| <arg line="${stub.src.dirs}"/> |
| </exec> |
| </target> |
| |
| <target name="svn-up"> |
| <exec executable="${svn.exe}"> |
| <arg value="update"/> |
| </exec> |
| </target> |
| |
| <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/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"/> |
| <!-- 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> |
| |
| <!-- TODO: in the future, we don't need to actually put |
| jars in the lib/ folders, but can just put in classpath. |
| only packaging tasks really need that (and could do it |
| under build/ directories) --> |
| <target name="clean-jars" description="Clean local jars"> |
| <delete> |
| <fileset dir="." includes="**/*.jar"/> |
| </delete> |
| </target> |
| |
| </project> |