You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/04/01 08:58:14 UTC

svn commit: r1087603 [1/3] - in /lucene/dev/branches/solr2452: dev-tools/eclipse/ lucene/ solr/ solr/contrib/ solr/contrib/analysis-extras/ solr/contrib/clustering/ solr/contrib/dataimporthandler-extras/ solr/contrib/dataimporthandler-extras/src/ solr/...

Author: rmuir
Date: Fri Apr  1 06:58:12 2011
New Revision: 1087603

URL: http://svn.apache.org/viewvc?rev=1087603&view=rev
Log:
SOLR-2452: commit my state

Added:
    lucene/dev/branches/solr2452/solr/contrib/contrib-build.xml   (with props)
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/build.xml   (with props)
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/src/
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/src/main/
      - copied from r1087521, lucene/dev/trunk/solr/contrib/dataimporthandler/src/extras/main/
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/src/test/
      - copied from r1087521, lucene/dev/trunk/solr/contrib/dataimporthandler/src/extras/test/
    lucene/dev/branches/solr2452/solr/src/test-framework/
    lucene/dev/branches/solr2452/solr/src/test-framework/org/
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/BaseDistributedSearchTestCase.java
      - copied, changed from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/JSONTestUtil.java
      - copied unchanged from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/JSONTestUtil.java
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java
      - copied, changed from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/SolrTestCaseJ4.java
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/analysis/
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/analysis/BaseTokenTestCase.java
      - copied unchanged from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/analysis/BaseTokenTestCase.java
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java
      - copied, changed from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/util/AbstractSolrTestCase.java
    lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/TestHarness.java
      - copied, changed from r1087521, lucene/dev/trunk/solr/src/java/org/apache/solr/util/TestHarness.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/util/ExternalPaths.java   (with props)
Removed:
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/src/extras/
    lucene/dev/branches/solr2452/solr/src/java/org/apache/solr/util/TestHarness.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/JSONTestUtil.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/SolrTestCaseJ4.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/analysis/BaseTokenTestCase.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/util/AbstractSolrTestCase.java
Modified:
    lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath
    lucene/dev/branches/solr2452/lucene/common-build.xml
    lucene/dev/branches/solr2452/solr/build.xml
    lucene/dev/branches/solr2452/solr/common-build.xml
    lucene/dev/branches/solr2452/solr/contrib/analysis-extras/build.xml
    lucene/dev/branches/solr2452/solr/contrib/clustering/build.xml
    lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/build.xml
    lucene/dev/branches/solr2452/solr/contrib/extraction/build.xml
    lucene/dev/branches/solr2452/solr/contrib/uima/build.xml
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/SolrExampleBinaryTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/SolrJettyTestBase.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/response/TermsResponseTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/response/TestSpellCheckResponse.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/common/util/TestSystemIdResolver.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/servlet/NoCacheHeaderTest.java
    lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/spelling/suggest/PersistenceTest.java

Modified: lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath (original)
+++ lucene/dev/branches/solr2452/dev-tools/eclipse/dot.classpath Fri Apr  1 06:58:12 2011
@@ -57,6 +57,7 @@
 	<classpathentry kind="src" path="solr/src/webapp/src"/>
 	<classpathentry kind="src" path="solr/src/common"/>
 	<classpathentry kind="src" path="solr/src/solrj"/>
+	<classpathentry kind="src" path="solr/src/test-framework"/>
 	<classpathentry kind="src" path="solr/src/test"/>
 	<classpathentry kind="src" path="solr/src/test-files"/>
 	<classpathentry kind="src" path="solr/contrib/analysis-extras/src/java"/>

Modified: lucene/dev/branches/solr2452/lucene/common-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/lucene/common-build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/lucene/common-build.xml (original)
+++ lucene/dev/branches/solr2452/lucene/common-build.xml Fri Apr  1 06:58:12 2011
@@ -515,8 +515,11 @@
               <sysproperty key="tests.seed" value="${tests.seed}"/>
               <!-- set the Version that tests should run against -->
               <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-              <!-- for lucene we can be strict, and we don't want false fails even across methods -->
+              <!-- for lucene we can be strict, and we don't want false fails even across methods
+              make this a param so lucene-core/contrib tests use it only?
               <sysproperty key="tests.cleanthreads" value="perMethod"/>
+              -->
+	    	  <sysproperty key="tests.cleanthreads" value="perClass"/>
               <!-- logging config file -->
               <sysproperty key="java.util.logging.config.file" value="${tests.loggingfile}"/>
           <!-- set whether or not nightly tests should run -->

Modified: lucene/dev/branches/solr2452/solr/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/build.xml (original)
+++ lucene/dev/branches/solr2452/solr/build.xml Fri Apr  1 06:58:12 2011
@@ -17,36 +17,81 @@
  limitations under the License.
 -->
 
-<project name="solr" default="usage" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+<project name="solr-core" default="usage">
+  <description>Solr</description>
 
-  <property name="solr-path" value="." />
-	
-  <import file="common-build.xml"/>
+  <property name="src.dir" location="src/java"/>
+
+  <!-- solr uses this as the test working directory: nocommit classpath -->
+  <property name="tests.userdir" value="src/test-files"/>
+
+  <path id="additional.dependencies">
+  	<fileset dir="lib" includes="**/*.jar"/>
+  	<fileset dir="example/lib" includes="**/*.jar"/>
+  </path>
   
-  <!-- 3rd party libraries for compilation -->
-  <property name="lib" location="lib" />
+  <import file="common-build.xml"/>
 
-  <!-- solr source files -->
-  <property name="src" location="src" />
-  <property name="web.xml" location="${src}/webapp/web/WEB-INF/web.xml"/>
+  <!-- add some descriptions to some inherited targets -->
+  <target name="compile" description="Compile the source code." 
+  	      depends="compile-core, build-contrib"/>
+  <target name="test" description="Run core and contrib unit tests." 
+  	      depends="common.test, test-contrib"/>
+  <target name="test-core" description="Runs the core unit tests."
+          depends="common.test"/>
+  <target name="compile-test" description="Compile unit tests." 
+   	      depends="compile-test-framework, common.compile-test"/>
+  <target name="javadocs" description="Generate javadocs for core, client, and contrib" 
+          depends="contrib-build.javadocs, javadocs-solrj, javadocs-contrib"/>
+  <target name="javadocs-core" description="Generate javadocs for core." 
+          depends="contrib-build.javadocs"/>
+ 
+  <!-- hackish we have to call init/clover here, but solr core depends upon solrj? -->
+  <target name="compile-core" depends="init, clover, compile-analyzers-common, 
+        compile-analyzers-phonetic, compile-highlighter, compile-memory, compile-misc, 
+        compile-queries, compile-spatial, compile-spellchecker, compile-solrj, 
+        common.compile-core, compile-webapp" 
+  	  unless="solr-core.compiled">
+  </target>
+ 
+  <target name="compile-webapp" depends="compile-solrj">
+    <compile srcdir="src/webapp/src" 
+             destdir="${build.dir}/classes/webapp">
+      <classpath refid="classpath"/>
+    </compile>
+  </target>
+ 
+  <!-- TODO: factor solrj into a separate dir so its a normal module?
+       we have to reinvent wheels the way it is now -->
+ 
+  <target name="compile-solrj" description="Compile the java client.">
+    <compile srcdir="src/common:src/solrj" 
+             destdir="${build.dir}/classes/solrj">
+  	  <classpath refid="classpath"/>
+  	</compile>
+  </target>
+
+  <!-- hacky? -->
+  <target name="compile-test-framework" depends="compile-core">
+    <compile srcdir="src/test-framework" destdir="${build.dir}/classes/test-framework">
+  	  <classpath refid="test.classpath"/>
+  	</compile>
+  </target>
 
-  <!-- Destination for distribution files (demo WAR, contrib JARs, etc.) -->
-  <property name="dist" location="dist" />
+  <target name="javadocs-solrj" depends="compile-solrj" description="Generates solrj javadoc documentation.">
+    <sequential>
+      <mkdir dir="${javadoc.dir}/solrj"/>
+      <invoke-javadoc
+        destdir="${javadoc.dir}/solrj"
+        title="${Name}-j ${version} API (${specversion})">
+        <sources>
+          <packageset dir="src/common"/>
+          <packageset dir="src/solrj"/>
+        </sources>
+      </invoke-javadoc>
+    </sequential>
+  </target>
 
-  <property name="clover.db.dir" location="${dest}/tests/clover/db"/>
-  <property name="clover.report.dir" location="${dest}/tests/clover/reports"/>
-  
-    <available
-            property="clover.present"
-            classname="com.cenqua.clover.tasks.CloverReportTask"
-            />
-   <condition property="clover.enabled">
-       <and>
-           <isset property="run.clover"/>
-           <isset property="clover.present"/>
-       </and>
-   </condition>
-                 
   <!-- Default target: usage.  Prints out instructions. -->
   <target name="usage"
           description="Prints out instructions">
@@ -64,1068 +109,45 @@
     <echo message="Use 'ant test' to run unit tests." />
   </target>
 
-  <!-- Clean: cleans compiled files and other temporary artifacts. -->
-  <target name="clean" depends="clean-contrib"
-          description="Cleans compiled files and other temporary artifacts.">
-    <delete dir="${dest}" />
-    <delete dir="${dist}" />
-    <delete dir="${package.dir}" />
-    <delete dir="example/solr/lib" />
-    <delete dir="${lucene-libs}" />
+  <!-- TODO: lucene/solr could share these -->
+  <target name="build-contrib" depends="compile-test"
+          description="Builds all contrib modules and their tests">
+    <contrib-crawl target="build-artifacts-and-tests"/>
   </target>
 
-  <target name="clean-dest"
-          description="Cleans out ${dest} but leaves ${dist} and ${package.dir} alone.  This allows us to run nightly and clover together in Hudson">
-    <delete includeemptydirs="true" >
-      <fileset dir="${dest}">
-        <exclude name="docs/"/>
-      </fileset>
-    </delete>
+  <target name="javadocs-contrib" description="Generate javadocs for contrib classes"
+  	      depends="build-contrib">
+    <contrib-crawl target="javadocs" failonerror="true"/>
   </target>
 
-  <!-- ========================================================================= -->
-  <!-- ===================== COMPILATION-RELATED TASKS ========================= -->
-  <!-- ========================================================================= -->
-  
-  <!-- The compilation classpath -->
-  <path id="compile.classpath">
-    <fileset dir="${lib}">
-      <include name="*.jar" />
-    </fileset>
-    <path refid="lucene.classpath"/>
-  </path>
-
-  <target name="compile-solrj"
-          description="Compile the java client."
-          depends="compile-lucene">
-
-    <solr-javac destdir="${dest}/solrj"
-                classpathref="compile.classpath">
-      <src path="${src}/common" />
-      <src path="${src}/solrj" />
-    </solr-javac>
+  <target name="test-contrib" description="Run contrib unit tests."
+  	      depends="build-contrib">
+    <contrib-crawl target="test" failonerror="true"/>
   </target>
 
-
-  <!-- This depend on all of solr -->
-  <path id="compile.classpath.solrj">
-    <path refid="compile.classpath" />
-    <pathelement location="${dest}/solrj"/>
-    <!-- jetty -->
-    <fileset dir="example/lib">
-      <include name="**/*.jar" />
-    </fileset>
-  </path>
-    
-  <!-- Compile the project. -->
-  <target name="compile"
-          description="Compile the source code."
-          depends="validate-solr, compile-solrj">
-
-    <solr-javac destdir="${dest}/solr"
-                classpathref="compile.classpath.solrj">
-      <src path="${src}/java" />
-      <src path="${src}/webapp/src" />
-    </solr-javac>
+  <target name="compile-analyzers-common" unless="analyzers-common.uptodate">
+  	<ant dir="${common.dir}/../modules/analysis/common" target="default" inheritAll="false"/>
   </target>
-
-  <target name="javadoc-dep">
-    <copy failonerror="false" todir="${build.docs}">
-      <fileset dir="site" />
-    </copy>
+  <target name="compile-analyzers-phonetic" unless="analyzers-phonetic.uptodate">
+  	<ant dir="${common.dir}/../modules/analysis/phonetic" target="default" inheritAll="false"/>
   </target>
-
-  <target name="javadoc-solrj" depends="compile-solrj,javadoc-dep" description="Generates solrj javadoc documentation.">
-    <sequential>
-      <mkdir dir="${build.javadoc}/solrj"/>
-
-      <path id="javadoc.classpath">
-        <path refid="compile.classpath"/>
-      </path>
-
-      <invoke-javadoc
-        destdir="${build.javadoc}/solrj"
-        title="${Name}-j ${version} API (${specversion})">
-        <sources>
-          <packageset dir="${src}/common"/>
-          <packageset dir="${src}/solrj"/>
-        </sources>
-      </invoke-javadoc>
-    </sequential>
+  <target name="compile-highlighter" unless="highlighter.uptodate">
+  	<ant dir="${common.dir}/contrib/highlighter" target="default" inheritAll="false"/>
   </target>
-  
-  <target name="javadoc-core" depends="compile,javadoc-dep"  description="Generates javadoc documentation for core.">
-
-    <sequential>
-      <mkdir dir="${build.javadoc}/solr"/>
-
-      <path id="javadoc.classpath">
-        <path refid="compile.classpath"/>
-        <path refid="compile.classpath.solrj"/>
-        <pathelement location="${dest}/solrj"/>
-      </path>
-
-      <invoke-javadoc
-        destdir="${build.javadoc}/solr"
-      	title="${Name} ${version} core API (${specversion})">
-        <sources>
-          <packageset dir="${src}/java" />
-          <packageset dir="${src}/webapp/src"/>
-        </sources>
-      </invoke-javadoc>
-    </sequential>
+  <target name="compile-memory" unless="memory.uptodate">
+  	<ant dir="${common.dir}/contrib/memory" target="default" inheritAll="false"/>
   </target>
-
-
-  <target name="javadoc-all" depends="compile,javadoc-dep" description="Generate javadoc for core, client and contrib">
-    <sequential>
-      <mkdir dir="${build.javadoc}"/>
-
-      <path id="javadoc.classpath">
-         <path refid="compile.classpath"/>
-         <path refid="compile.classpath.solrj"/>
-          <fileset dir="contrib">
-            <include name="**/lib/**/*.jar"/>
-            <include name="**/lucene-libs/**/*.jar"/>
-            <exclude name="**/analysis-extras/lib/**/*icu4j*.jar"/> <!-- extraction/lib/ has this one -->
-          </fileset>
-         <pathelement location="${dest}/client/solrj"/>
-      </path>
-
-      <invoke-javadoc destdir="${build.javadoc}">
-        <sources>
-          <packageset dir="${src}/common" />
-          <packageset dir="${src}/solrj" />
-          <packageset dir="${src}/java" />
-          <packageset dir="${src}/webapp/src" />
-          <packageset dir="contrib/dataimporthandler/src/main/java" />
-          <packageset dir="contrib/dataimporthandler/src/extras/main/java" />
-          <packageset dir="contrib/clustering/src/main/java" />
-          <packageset dir="contrib/extraction/src/main/java" />
-          <packageset dir="contrib/uima/src/main/java" />
-          <packageset dir="contrib/analysis-extras/src/java" />
-          <group title="Core" packages="org.apache.*" />
-          <group title="Common" packages="org.apache.solr.common.*" />
-          <group title="SolrJ" packages="org.apache.solr.client.solrj*" />
-          <group title="contrib: DataImportHandler" packages="org.apache.solr.handler.dataimport*" />
-          <group title="contrib: Clustering" packages="org.apache.solr.handler.clustering*" />
-          <group title="contrib: Solr Cell" packages="org.apache.solr.handler.extraction*" />
-          <group title="contrib: Solr UIMA" packages="org.apache.solr.uima*" />
-        </sources>
-      </invoke-javadoc>
-    </sequential>
-  </target>
-
-  <target name="javadoc-contrib" description="Generate javadoc for contrib classes" depends="build-contrib,javadoc-dep">
-    <contrib-crawl target="javadoc"
-                   failonerror="true"/>
-  </target>
-
-  <target name="javadoc" depends="javadoc-core, javadoc-contrib, javadoc-solrj, javadoc-all">
-  </target>
-  <target name="javadocs" depends="javadoc"/>
-
-  <target name="stub-factories" depends="dist-jar"
-          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="${lib}">
-        <include name="lucene-*.jar"/>
-      </fileset>
-      <fileset dir="${dist}">
-        <include name="*.jar"/>
-        <exclude name="*solrj*.jar"/>
-      </fileset>
-    </path>
-    <pathconvert property="jar.list" pathsep=" " refid="stub.jars" />
-    <property name="stub.list" value="${dest}/need-stub-factories.txt" />
-    <java fork="false" 
-          classname="org.apache.solr.util.SuggestMissingFactories"
-          logError="true"
-          failonerror="true"
-          classpathref="test.run.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="./src:../lucene/contrib:../lucene/src/java"
-      
-  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="${basedir}/src/dev-tools/stub-analysis-factory-maker.pl" 
-          dir="src/java/org/apache/solr/analysis/"
-          failonerror="true">
-        <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>
-
-
-  <!-- ========================================================================= -->
-  <!-- ===================== TESTING-RELATED TASKS ============================= -->
-  <!-- ========================================================================= -->
-
-
-  <!-- Classpath for unit test compilation. -->
-  <!-- For now, it's the same as main classpath.  Later it will have JUnit, Clover, etc. -->
-  <path id="test.compile.classpath">
-    <path refid="compile.classpath" />
-    <path refid="compile.classpath.solrj" />
-    <pathelement location="${dest}/solr"/>
-    <pathelement location="${dest}/solrj"/> <!-- include solrj -->
-    <pathelement location="${common-solr.dir}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-  </path>
-
-  <path id="test.run.classpath">
-    <path refid="test.compile.classpath" />
-    <pathelement location="${dest}/tests"/>
-    <!-- include the solrj classpath and jetty files included in example -->
-    <path refid="compile.classpath.solrj" />
-    <pathelement location="${common-solr.dir}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-    <pathelement path="${java.class.path}"/>
-  </path>
-
-  <!-- Compile unit tests. -->
-  <target name="compileTests"
-          description="Compile unit tests."
-          depends="compile,compile-solrj">
-
-    <mkdir dir="${dest}/tests" />
-    <solr-javac 
-       destdir="${dest}/tests"
-       classpathref="test.compile.classpath">
-      <src path="${src}/test" />
-    </solr-javac>
-    <!-- Copy any data files present to the classpath -->
-    <copy todir="${dest}/tests">
-      <fileset dir="${src}/test-files" excludes="**/*.java"/>
-    </copy>
+  <target name="compile-misc" unless="misc.uptodate">
+  	<ant dir="${common.dir}/contrib/misc" target="default" inheritAll="false"/>
   </target>
-
-  <!-- Run core unit tests. -->
-  <target name="test-core"
-          description="Runs the core unit tests."
-          depends="compileTests, junit" />
-	
-  <!-- Run contrib unit tests. -->
-  <target name="test"
-        description="Runs the core unit tests."
-        depends="test-core, test-contrib, test-jsp" />
-
-  <target name="junit" depends="compileTests,junit-mkdir,junit-sequential,junit-parallel"/>
-
-  <target name="junit-sequential" if="tests.sequential">
-    <junit-macro/>
+  <target name="compile-queries" unless="queries.uptodate">
+  	<ant dir="${common.dir}/contrib/queries" target="default" inheritAll="false"/>
   </target>
-
-  <target name="junit-parallel" unless="tests.sequential">
-   <parallel threadsPerProcessor="${tests.threadspercpu}">
-    <junit-macro threadNum="1" threadTotal="8"/>
-    <junit-macro threadNum="2" threadTotal="8"/>
-    <junit-macro threadNum="3" threadTotal="8"/>
-    <junit-macro threadNum="4" threadTotal="8"/>
-    <junit-macro threadNum="5" threadTotal="8"/>
-    <junit-macro threadNum="6" threadTotal="8"/>
-    <junit-macro threadNum="7" threadTotal="8"/>
-    <junit-macro threadNum="8" threadTotal="8"/>
-   </parallel>
+  <target name="compile-spatial" unless="spatial.uptodate">
+  	<ant dir="${common.dir}/contrib/spatial" target="default" inheritAll="false"/>
   </target>
-
-  <target name="junit-mkdir">
-    <mkdir dir="${junit.output.dir}"/>
-  </target>
-
-  <macrodef name="junit-macro">
-  <attribute name="threadNum" default="1"/>
-  <attribute name="threadTotal" default="1"/>
-  <attribute name="tempDir" default="${junit.output.dir}/temp"/>
-    <sequential>
-    <!-- no description so it doesn't show up in -projecthelp -->  
-    <condition property="runall">
-      <not>
-        <or>
-          <isset property="testcase"/>
-          <isset property="testpackage"/>
-          <isset property="testpackageroot"/>
-        </or>
-      </not>
-    </condition>
-    <!-- <mkdir dir="@{tempDir}/@{pattern}"/> 
-       This is very loud and obnoxious. abuse touch instead for a "quiet" mkdir
-    -->
-    <touch file="@{tempDir}/@{threadNum}/quiet.ant" verbose="false" mkdirs="true"/>
-    <property name="dir.prop" value=""/>
-    <junit printsummary="no"
-           haltonfailure="no"
-           maxmemory="512M"
-           errorProperty="tests.failed"
-           failureProperty="tests.failed"
-           dir="@{tempDir}/@{threadNum}"
-           tempdir="@{tempDir}/@{threadNum}"
-           forkmode="perBatch"
-           >
-      <sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
-      <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-      <sysproperty key="tests.codec" value="${tests.codec}"/>
-      <sysproperty key="tests.locale" value="${tests.locale}"/>
-      <sysproperty key="tests.timezone" value="${tests.timezone}"/>
-      <sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
-      <sysproperty key="tests.iter" value="${tests.iter}"/>
-      <sysproperty key="tests.seed" value="${tests.seed}"/>
-      <sysproperty key="tests.verbose" value="${tests.verbose}"/>
-      <sysproperty key="jetty.testMode" value="1"/>
-      <sysproperty key="tempDir" file="@{tempDir}/@{threadNum}"/>
-      <sysproperty key="testmethod" value="${testmethod}"/>
-      <!-- set whether or not nightly tests should run -->
-      <sysproperty key="tests.nightly" value="${tests.nightly}"/>
-      <!-- TODO: why is this unconditionally set to "" above? disable for now
-         <jvmarg line="${dir.prop}"/>
-      -->
-      <jvmarg line="${args}"/>
-
-      <formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
-      <classpath refid="test.run.classpath"/>
-      <assertions>
-        <enable package="org.apache.lucene"/>
-        <enable package="org.apache.solr"/>
-      </assertions>
-      <formatter type="${junit.formatter}"/>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="runall">
-        <fileset dir="src/test" includes="**/Test*.java,**/*Test.java">
-          <custom classname="${junit.parallel.selector}" classpathref="test.run.classpath">
-          	<param name="divisor" value="@{threadTotal}" />
-          	<param name="part" value="@{threadNum}" />
-          </custom>
-        </fileset>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackage">
-        <fileset dir="src/test" includes="**/${testpackage}/**/Test*.java,**/${testpackage}/**/*Test.java">
-          <custom classname="${junit.parallel.selector}" classpathref="test.run.classpath">
-      	    <param name="divisor" value="@{threadTotal}" />
-      	    <param name="part" value="@{threadNum}" />
-          </custom>
-      	</fileset>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackageroot">
-        <fileset dir="src/test" includes="**/${testpackageroot}/Test*.java,**/${testpackageroot}/*Test.java">
-          <custom classname="${junit.parallel.selector}" classpathref="test.run.classpath">
-        	<param name="divisor" value="@{threadTotal}" />
-        	<param name="part" value="@{threadNum}" />
-          </custom>
-        </fileset>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
-        <fileset dir="src/test" includes="**/${testcase}.java"/>
-      </batchtest>
-    </junit>
-
-    <fail if="tests.failed">Tests failed!</fail>
-    </sequential>
-  </macrodef>
-
-      
-  <target name="test-reports"
-          description="Generates HTML test reports.">
-    <mkdir dir="${junit.reports}"/>
-    <junitreport todir="${junit.output.dir}">
-      <fileset dir="${junit.output.dir}">
-        <include name="TEST-*.xml"/>
-      </fileset>
-      <report format="frames" todir="${junit.reports}"/>
-    </junitreport>
-  </target>
-
-  <target name="clover" depends="clover.setup, clover.info"
-          description="Instrument the Unit tests using Clover.  Requires a Clover license and clover.jar in the ANT classpath.  To use, specify -Drun.clover=true on the command line."/>
-
-  <target name="clover.setup" if="clover.enabled">
-    <taskdef resource="cloverlib.xml"/>
-    <mkdir dir="${clover.db.dir}"/>
-    <clover-setup initString="${clover.db.dir}/solr_coverage.db">
-      <fileset dir="src/common"/>
-      <fileset dir="src/solrj"/>
-      <fileset dir="src/java"/>
-      <fileset dir="src/webapp/src"/>
-      <fileset dir="contrib/dataimporthandler/src/main/java" />
-      <fileset dir="contrib/clustering/src/main/java" />
-      <fileset dir="contrib/extraction/src/main/java" />
-      <fileset dir="contrib/uima/src/main/java" />
-      <fileset dir="contrib/analysis-extras/src/java" />
-    </clover-setup>
-  </target>
-
-  <target name="clover.info" unless="clover.present">
-  	<echo>
-      Clover not found. Code coverage reports disabled.
-  	</echo>
-  </target>
-
-  <target name="clover.check">
-	<fail unless="clover.present">
-	  ##################################################################
-      Clover not found.
-      Please make sure clover.jar is in ANT_HOME/lib, or made available
-      to Ant using other mechanisms like -lib or CLASSPATH.
-      ##################################################################
-  	</fail>
-  </target>
-    <!--
-     Run after Junit tests.
-     -->
-  <target name="generate-clover-reports" depends="clover.check, clover">
-    <mkdir dir="${clover.report.dir}"/>
-    <clover-report>
-       <current outfile="${clover.report.dir}/clover.xml"
-                title="${fullnamever}">
-          <format type="xml"/>
-       </current>
-       <current outfile="${clover.report.dir}" title="${fullnamever}">
-          <format type="html"/>
-       </current>
-    </clover-report>
-  </target>
-
-  <!-- ========================================================================= -->
-
-  <!-- Checks that all JSP files in the webapp compile successfully using Jetty's Jasper -->
-  <target name="test-jsp" depends="compile">
-    <property name="jsp.target" location="${dest}/jsp-temp" />
-    <taskdef classname="org.apache.jasper.JspC" name="jasper" >
-      <classpath>
-        <fileset dir="example/lib" includes="**/*.jar" />
-      </classpath>
-    </taskdef>
-    <delete dir="${jsp.target}" />
-    <mkdir dir="${jsp.target}" />
-    <jasper
-      uriroot="${src}/webapp/web"
-      outputDir="${jsp.target}" 
-      compile="false" 
-      verbose="1"
-      package="j"
-    />
-    <javac
-      srcdir="${jsp.target}"
-      destdir="${jsp.target}"
-      target="${java.compat.version}"
-      source="${java.compat.version}"
-      debug="off"
-      encoding="utf8"
-      includeAntRuntime="${javac.includeAntRuntime}"
-      classpathref="test.compile.classpath"
-    />
-  </target>
-
-
-  <!-- ========================================================================= -->
-  <!-- ===================== DISTRIBUTION-RELATED TASKS ======================== -->
-  <!-- ========================================================================= -->
-
-
-  <!-- Creates the Solr distribution files. -->
-  <target name="dist"
-          description="Creates the Solr distribution files."
-          depends="dist-solrj, dist-jar, dist-contrib, dist-war" />
-
-  <!-- Creates the Solr WAR file. -->
-  <target name="dist-war"
-          description="Creates the Solr WAR Distribution file."
-          depends="compile, test-jsp, make-manifest, dist-jar, dist-solrj, lucene-jars-to-solr">
-    <mkdir dir="${dist}" />
-    <war destfile="${dist}/${fullnamever}.war"
-         webxml="${web.xml}"
-         filesetmanifest="skip"
-         manifest="${dest}/META-INF/MANIFEST.MF">
-       <lib dir="${lib}">
-         <exclude name="servlet-api*.jar" />
-         <exclude name="easymock-*.jar" />
-         <exclude name="junit-*.jar" />
-         <exclude name="*.txt" />
-         <exclude name="*.template" />
-       </lib>
-      
-       <lib dir="${lucene-libs}"/>
-         
-       <lib dir="${dist}">
-         <include name="${fullname}-solrj-${version}.jar" />
-         <include name="${fullname}-core-${version}.jar" />
-       </lib>
-       <fileset dir="${src}/webapp/web" />
-       
-       <!-- Include anything put in by contrib projects -->
-       <fileset dir="${dest}/web" />
-       	
-       <metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
-    </war>
-  </target>
-
-  <target name="dist-src" description="Creates the Solr source distribution files for maven"
-          depends="make-manifest">
-    <mkdir dir="${dist}" />
-
-    <solr-jar destfile="${dist}/${fullname}-solrj-src-${version}.jar">
-      <fileset dir="${src}/common" />
-      <fileset dir="${src}/solrj"/>
-    </solr-jar>
-    	
-    <solr-jar destfile="${dist}/${fullname}-core-src-${version}.jar">
-      <fileset dir="${src}/java" />
-      <fileset dir="${src}/webapp/src"/>
-    </solr-jar>
-  	
-    <solr-jar destfile="${dist}/apache-solr-dataimporthandler-src-${version}.jar"
-              basedir="contrib/dataimporthandler/src/main/java" />
-    <solr-jar destfile="${dist}/apache-solr-dataimporthandler-extras-src-${version}.jar"
-              basedir="contrib/dataimporthandler/src/extras/main/java" />
-
-    <solr-jar destfile="${dist}/apache-solr-cell-src-${version}.jar"
-              basedir="contrib/extraction/src" />
-    <solr-jar destfile="${dist}/apache-solr-clustering-src-${version}.jar"
-              basedir="contrib/clustering/src" />
-    <solr-jar destfile="${dist}/apache-solr-analysis-extras-src-${version}.jar"
-              basedir="contrib/analysis-extras/src" />
-    <solr-jar destfile="${dist}/apache-solr-uima-src-${version}.jar"
-              basedir="contrib/uima/src/main/java" >
-       <fileset dir="contrib/uima/src/main/resources" />
-    </solr-jar>
-  </target>
-
-  <target name="dist-javadoc" description="Creates the Solr javadoc distribution files for maven"
-          depends="make-manifest, javadoc">
-    <mkdir dir="${dist}" />
-
-    <solr-jar destfile="${dist}/${fullname}-core-docs-${version}.jar"
-              basedir="${build.javadoc}/solr" />
-    <solr-jar destfile="${dist}/${fullname}-solrj-docs-${version}.jar"
-              basedir="${build.javadoc}/solrj" />
-    <solr-jar destfile="${dist}/apache-solr-dataimporthandler-docs-${version}.jar"
-              basedir="${build.javadoc}/contrib-solr-dataimporthandler" />
-    <solr-jar destfile="${dist}/apache-solr-clustering-docs-${version}.jar"
-              basedir="${build.javadoc}/contrib-solr-clustering" />
-    <solr-jar destfile="${dist}/apache-solr-cell-docs-${version}.jar"
-              basedir="${build.javadoc}/contrib-solr-cell" />
-    <solr-jar destfile="${dist}/apache-solr-analysis-extras-docs-${version}.jar"
-              basedir="${build.javadoc}/contrib-solr-analysis-extras" />
-    <solr-jar destfile="${dist}/apache-solr-uima-docs-${version}.jar"
-              basedir="${build.javadoc}/contrib-solr-uima" />
-  </target>
-
-  <!-- Creates the solr jar. -->
-  <target name="dist-jar"
-          description="Creates the Solr JAR Distribution file."
-          depends="compile, make-manifest">
-    <mkdir dir="${dist}" />
-    <solr-jar destfile="${dist}/${fullname}-core-${version}.jar">
-      <fileset dir="${dest}/solr" />
-    </solr-jar>
-
-  </target>
-
-  <!-- Creates the solr jar. -->
-  <target name="dist-solrj"
-          description="Creates the Solr JAR Distribution file."
-          depends="compile-solrj, make-manifest">
-    <mkdir dir="${dist}" />
-    <solr-jar
-         destfile="${dist}/${fullname}-solrj-${version}.jar"
-         basedir="${dest}/solrj" />
-
-    <mkdir  dir="${dist}/solrj-lib" />
-    <copy todir="${dist}/solrj-lib">
-      <fileset dir="${lib}">
-        <include name="commons-codec-*.jar"/>
-        <include name="commons-io-*.jar"/>
-        <include name="commons-httpclient-*.jar"/>
-        <include name="*stax-*.jar" />
-        <include name="wstx-*.jar" />
-        <include name="jcl-over-slf4j-*.jar" />
-        <include name="slf4j-api-*.jar" />
-      </fileset>
-    </copy>
-      
-  </target>
-
-  <target name="example" 
-          description="Creates a runnable example configuration."
-          depends="compile-lucene,dist-contrib,dist-war,example-contrib">
-    <copy file="${dist}/${fullnamever}.war"
-          tofile="${example}/webapps/${ant.project.name}.war"/>
-    <jar destfile="${example}/exampledocs/post.jar"
-         basedir="${dest}/solr"
-         filesetmanifest="skip"
-         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}/work" 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>
-  
-  <!-- make a distribution -->
-  <target name="package" depends="package-src,create-package"/>
-
-  <property name="svn.export.dir" location="${dest}/svn-export"/>
-
-  <!-- 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" depends="svn-export-source"
-          description="Packages the Solr Source Distribution">
-    <mkdir dir="${package.dir}"/>
-    <property name="source.package.file"
-              value="${package.dir}/${fullnamever}-src.tgz"/>
-    <delete file="${source.package.file}" failonerror="false" />
-    <tar destfile="${source.package.file}" compression="gzip" longfile="gnu">
-      <tarfileset dir="${svn.export.dir}" prefix="${fullnamever}"/>
-      <tarfileset dir="${svn.export.dir}/solr" prefix="${fullnamever}"
-                  includes="NOTICE.txt,LICENSE.txt"/>
-    </tar>
-    <solr-checksum file="${source.package.file}"/>
-  </target>
-
-  <!-- Runs "svn export" in build/svn-export/ with the same root-level URL -->
-  <!-- and revision as the current working copy.                           -->
-  <target name="svn-export-source" depends="get-svn-info">
-    <delete dir="${svn.export.dir}" includeemptydirs="true" failonerror="false"/>
-    <mkdir dir="${dest}"/>
-    <exec dir="." executable="${svn.exe}" failonerror="true">
-      <arg value="export"/>
-      <arg value="--native-eol"/>
-      <arg value="LF"/>
-      <arg value="-r"/>
-      <arg value="${svn.Revision}"/>
-      <arg value="${svn.URL}"/>
-      <arg value="${svn.export.dir}"/>
-    </exec>
-  </target>
-
-  <!-- Populates properties svn.URL and svn.Revision using "svn info" -->
-  <target name="get-svn-info">
-    <exec dir=".." executable="${svn.exe}" outputproperty="svn.info" failonerror="true">
-      <arg value="info"/>
-    </exec>
-    <loadproperties>
-      <propertyresource name="svn.info"/>
-      <filterchain>
-        <linecontainsregexp>
-          <regexp pattern="(URL|Revision):"/>
-        </linecontainsregexp>
-        <replacestring from=": " to="="/>
-        <prefixlines prefix="svn."/>
-      </filterchain>
-    </loadproperties>
-  </target>
-
-  <target name="create-package"
-          description="Packages the Solr Binary Distribution"
-          depends="dist, example, javadoc">
-    <mkdir dir="${package.dir}"/>
-
-    <delete includeemptydirs="true">
-      <fileset dir="${example}/work" includes="**/*"/>
-    </delete>
-
-    <delete includeemptydirs="true" failonerror="false">
-      <fileset dir="${dest}/${fullnamever}" includes="**/*"/>
-    </delete>
-
-    <delete file="${package.dir}/${fullnamever}.tgz" failonerror="false" />
-    <delete file="${package.dir}/${fullnamever}.zip" failonerror="false" />
-
-    <tar destfile="${package.dir}/${fullnamever}.tgz" compression="gzip" longfile="gnu">
-      <tarfileset dir="."
-        prefix="${fullnamever}"
-        includes="LICENSE.txt NOTICE.txt *.txt example/** client/** contrib/**/lib/ contrib/**/lucene-libs/ contrib/**/README.txt contrib/**/CHANGES.txt"
-        excludes="${dist}/** ${dest}/** lib/README.committers.txt **/data/ **/logs/* **/classes/ **/*.sh **/bin/ src/scripts/** src/site/build/** **/target/** client/ruby/flare/** client/python/** client/javascript/** contrib/**/build/** **/*.iml **/*.ipr **/*.iws **/*pom.xml.template" />
-      <tarfileset dir="."
-        mode="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" />
-      <!-- hack: the javadocs are built twice since maven needs separate packages... exclude those -->
-      <tarfileset dir="${build.docs}"
-        prefix="${fullnamever}/docs/"
-        excludes="api/solr/** api/contrib-*/**"
-       />
-    </tar>
-    <solr-checksum file="${package.dir}/${fullnamever}.tgz"/>
-
-    <gunzip src="${package.dir}/${fullnamever}.tgz" dest="${dest}/${fullnamever}.tar"/>
-    <untar src="${dest}/${fullnamever}.tar" 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>
-    <solr-checksum file="${package.dir}/${fullnamever}.zip"/>
-
-  </target>
-
-
-  <target name="build-site" depends="svn-up" 
-          description="Prototype Helper for Committers.  Assumes SVN is in the path">
-    <delete dir="src/site/build"/>
-    <exec executable="forrest" dir="src/site"/>
-    <copy todir="site">
-      <fileset dir="src/site/build/site"/>
-    </copy>
-    <antcall target="svn-up"/>
-  
-  </target>
-  <target name="svn-up">
-    <exec executable="${svn.exe}">
-      <arg value="update"/>
-    </exec>
-  </target>
-
-  <target name="clean-package-signatures">
-    <delete failonerror="false">
-      <fileset dir="${package.dir}">
-        <include name="**/*.asc"/>
-      </fileset>
-    </delete>
-  </target>
-  <target name="sign-artifacts" depends="clean-package-signatures">
-    <!--<property file="${user.home}/.solr/build.properties" />-->
-    <input message="password:>" addproperty="gpg.passphrase">
-      <handler classname="org.apache.tools.ant.input.SecureInputHandler" />
-    </input>
-    <sign-artifact input.file="${package.dir}/${fullnamever}.tgz" output.file="${package.dir}/${fullnamever}.tgz.asc" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-artifact input.file="${package.dir}/${fullnamever}.zip" output.file="${package.dir}/${fullnamever}.zip.asc" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-artifact input.file="${package.dir}/${fullnamever}-src.tgz" output.file="${package.dir}/${fullnamever}-src.tgz.asc" gpg.passphrase="${gpg.passphrase}"/>
-
-    <!-- Maven artifacts -->
-    <sign-maven-dependency-artifacts artifact.id="solr-commons-csv" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-dependency-artifacts artifact.id="solr-noggit" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-dependency-artifacts artifact.id="solr-uima-an-alchemy" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-dependency-artifacts artifact.id="solr-uima-an-calais" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-dependency-artifacts artifact.id="solr-uima-an-tagger" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-dependency-artifacts artifact.id="solr-uima-an-wst" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-war-artifacts artifact.id="solr" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-analysis-extras" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-cell" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-clustering" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-core" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-dataimporthandler" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-dataimporthandler-extras" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-solrj" gpg.passphrase="${gpg.passphrase}"/>
-    <sign-maven-artifacts artifact.id="solr-uima" gpg.passphrase="${gpg.passphrase}"/>
-
-    <!-- These are special since there are no jars, just poms -->
-    <sign-artifact input.file="${maven.dist.prefix}/solr-parent/${version}/solr-parent-${version}.pom" gpg.passphrase="${gpg.passphrase}"/>
-  </target>
-
-  <property name="rc" value="rc0"/>
-  <property name="remote.staging.dir" value="public_html/staging_area/${rc}/${version}"/>
-  <property name="keyfile" value="${user.home}/.ssh/id_rsa"/>
-  <property name="scp.user" value="${user.name}"/>
-  <!--keys.dir is the location of the https://svn.apache.org/repos/asf/lucene/java/dist/ directory-->
-  <property name="keys.dir" value="${common-solr.dir}/../../dist"/>
-  <target name="copy-to-stage">
-    <sshexec host="people.apache.org"
-	    username="${scp.user}"
-	    keyfile="${keyfile}"
-	    command="mkdir -p ${remote.staging.dir}"/>
-    <echo>Uploading artifacts to ${scp.user}@people.apache.org:${remote.staging.dir}</echo>
-    <scp todir="${scp.user}@people.apache.org:${remote.staging.dir}"
-         username="${scp.user}"
-	    keyfile="${keyfile}"
-      verbose="true"
-        >
-      <fileset dir="package"/>
-      <fileset dir="${keys.dir}">
-        <include name="KEYS"/>
-      </fileset>
-    </scp>
-  </target>
-
-  <target name="prepare-release" depends="clean, svn-up, package, generate-maven-artifacts, sign-artifacts"
-          description="Prototype helper for Committers.  Assumes gpg is in the path"/>
-
-  <target name="stage" depends="prepare-release, copy-to-stage"/>
-
-  <target name="generate-maven-artifacts" depends="maven.ant.tasks-check,dist,dist-src,dist-javadoc">
-    <sequential>
-	  <ant target="get-maven-poms" dir=".."/>
-
-      <!--
-
-       !!!!!!!!!!
-       NOTE:  If you add new artifacts, please make sure you also add to the sign-artifacts target
-       so that they get signed during release.
-      !!!!!!!
-       -->
-
-      <mkdir dir="${maven.build.dir}"/>
-      <mkdir dir="${maven.dist.dir}"/>
-
-      <!-- ========== SOLR PARENT POM ========== -->
-
-      <m2-deploy pom.xml="pom.xml"/>
-
-      <!-- ========== SOLR SPECIFIC NON-MAVENIZED DEPENDENCIES ========== -->
-      <m2-deploy-with-pom-template pom.xml="lib/solr-commons-csv-pom.xml.template"
-                                   jar.file="lib/commons-csv-1.0-SNAPSHOT-r966014.jar" />
-
-      <m2-deploy-with-pom-template pom.xml="lib/apache-solr-noggit-pom.xml.template"
-                                   jar.file="lib/apache-solr-noggit-r944541.jar" />
-      
-      <m2-deploy-with-pom-template pom.xml="contrib/uima/lib/solr-uima-an-alchemy-pom.xml.template"
-                                   jar.file="contrib/uima/lib/uima-an-alchemy-2.3.1-SNAPSHOT-r1062868.jar" />
-
-      <m2-deploy-with-pom-template pom.xml="contrib/uima/lib/solr-uima-an-calais-pom.xml.template"
-                                   jar.file="contrib/uima/lib/uima-an-calais-2.3.1-SNAPSHOT-r1062868.jar" />
-
-      <m2-deploy-with-pom-template pom.xml="contrib/uima/lib/solr-uima-an-tagger-pom.xml.template"
-                                   jar.file="contrib/uima/lib/uima-an-tagger-2.3.1-SNAPSHOT-r1062868.jar" />
-
-      <m2-deploy-with-pom-template pom.xml="contrib/uima/lib/solr-uima-an-wst-pom.xml.template"
-                                   jar.file="contrib/uima/lib/uima-an-wst-2.3.1-SNAPSHOT-r1076132.jar" />
-
-      <!-- ========== SOLR ARTIFACTS ========== -->
-
-      <m2-deploy pom.xml="contrib/dataimporthandler/src/pom.xml"
-                 jar.file="${dist}/apache-solr-dataimporthandler-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-dataimporthandler-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-dataimporthandler-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-
-      <m2-deploy pom.xml="contrib/dataimporthandler/src/extras/pom.xml"
-                 jar.file="${dist}/apache-solr-dataimporthandler-extras-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-dataimporthandler-extras-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-dataimporthandler-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-
-      <m2-deploy pom.xml="contrib/extraction/pom.xml"
-                 jar.file="${dist}/apache-solr-cell-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-cell-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-cell-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-      
-      <m2-deploy pom.xml="contrib/clustering/pom.xml"
-                 jar.file="${dist}/apache-solr-clustering-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-clustering-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-clustering-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-
-      <m2-deploy pom.xml="contrib/analysis-extras/pom.xml"
-                 jar.file="${dist}/apache-solr-analysis-extras-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-analysis-extras-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-analysis-extras-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-
-      <m2-deploy pom.xml="contrib/uima/pom.xml"
-                 jar.file="${dist}/apache-solr-uima-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-uima-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-uima-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-
-      <m2-deploy pom.xml="src/pom.xml"
-                 jar.file="${dist}/apache-solr-core-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-core-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-core-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-
-      <m2-deploy pom.xml="src/solrj/pom.xml"
-                 jar.file="${dist}/apache-solr-solrj-${version}.jar">
-        <artifact-attachments>
-          <attach file="${dist}/apache-solr-solrj-src-${version}.jar" classifier="sources"/>
-          <attach file="${dist}/apache-solr-solrj-docs-${version}.jar" classifier="javadoc"/>
-        </artifact-attachments>
-      </m2-deploy>
-
-      <m2-deploy pom.xml="src/webapp/pom.xml"
-                 jar.file="${dist}/apache-solr-${version}.war"/>
-    </sequential>
-  </target>
-
-  <target name="set-fsdir">
-     <property name="use.fsdir" value="true"/>
-  </target>
-  
-  <target name="-taskdef">
-    <typedef resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:rat.anttasks">
-      <classpath>
-        <fileset dir="." includes="rat*.jar"/>
-      </classpath>
-    </typedef>
-  </target>
-  <target name="rat-sources" depends="-taskdef"
-    description="runs the tasks over src/java excluding the license directory">
-    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
-      <fileset dir="src/java"/>
-      <fileset dir="src/test"/>
-      <fileset dir="src/webapp"/>
-      <fileset dir="src/common"/>
-      <fileset dir="src/solrj"/>
-      <fileset dir="client">
-        <exclude name="**/CHANGES.*"/>
-      </fileset>
-      <fileset dir="contrib/dataimporthandler/src/main/java"/>
-      <fileset dir="contrib/dataimporthandler/src/test/java"/>
-      <fileset dir="contrib/dataimporthandler/src/extras/main/java"/>
-      <fileset dir="contrib/dataimporthandler/src/extras/test/java"/>
-      <fileset dir="contrib/clustering/src/main/java"/>
-      <fileset dir="contrib/clustering/src/test/java"/>
-      <fileset dir="contrib/extraction/src/main/java"/>
-      <fileset dir="contrib/extraction/src/test/java"/>
-      <fileset dir="contrib/analysis-extras/src/test"/>
-      <fileset dir="contrib/analysis-extras/src/test"/>
-      <fileset dir="contrib/uima/src/main/java"/>
-      <fileset dir="contrib/uima/src/test/java"/>
-    </rat:report>
-  </target>
-
-	
-  <!-- ========================================================================= -->
-  <!-- ===================== Runtime: luke         ============================= -->
-  <!-- ========================================================================= -->
-  <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">
-    <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-solr.dir}/../lucene/build/classes/java" />
-    <pathelement location="${common-solr.dir}/../lucene/build/contrib/xml-query-parser/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="lucene.classpath"/>
-        <path refid="luke.classpath"/>
-        <path refid="test.run.classpath"/>
-       </classpath>
-    </java>
+  <target name="compile-spellchecker" unless="spellchecker.uptodate">
+  	<ant dir="${common.dir}/contrib/spellchecker" target="default" inheritAll="false"/>
   </target>
 
 </project>
-
-