Index: solr/common-build.xml
===================================================================
--- solr/common-build.xml	(revision 1328355)
+++ solr/common-build.xml	(working copy)
@@ -196,29 +196,63 @@
     <copy file="${build.dir}/${fullnamever}.jar" todir="${dist}"/>
   </target>
 
-  <target name="javadocs" depends="compile-core,define-lucene-javadoc-url">
+  <property name="lucenedocs" location="${common.dir}/build/docs/api"/>
+
+  <!-- dependency to ensure all lucene javadocs are present -->
+  <target name="lucene-javadocs" depends="javadocs-lucene-core,javadocs-analyzers-common,javadocs-analyzers-icu,javadocs-analyzers-kuromoji,javadocs-analyzers-phonetic,javadocs-analyzers-smartcn,javadocs-analyzers-morfologik,javadocs-analyzers-stempel,javadocs-analyzers-uima,javadocs-suggest,javadocs-grouping,javadocs-queries,javadocs-queryparser,javadocs-highlighter,javadocs-memory,javadocs-misc,javadocs-spatial"/>
+
+  <!-- create javadocs for the current module -->
+  <target name="javadocs" depends="compile-core,define-lucene-javadoc-url,lucene-javadocs">
    	<sequential>
       <mkdir dir="${javadoc.dir}"/>
-      <mkdir dir="${dest}/META-INF/"/>
-      <invoke-javadoc destdir="${javadoc.dir}"
-                      title="${Name} ${version} ${name} API">
-        <sources>
-          <link offline="true" href="${lucene.javadoc.url}"
-                packagelistloc="${common.dir}/build/docs/api/all/"/>
-          <link href=""/>
+      <solr-invoke-javadoc>
+        <solrsources>
           <packageset dir="${src.dir}"/>
-        </sources>
-      </invoke-javadoc>
+        </solrsources>
+      </solr-invoke-javadoc>
       <solr-jarify basedir="${javadoc.dir}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
      </sequential>
   </target>
 
+  <!-- macro to create solr javadocs with links to lucene. make sure calling task depends on lucene-javadocs -->
+  <macrodef name="solr-invoke-javadoc">
+      <element name="solrsources" optional="yes"/>
+      <attribute name="destdir" default="${javadoc.dir}"/>
+      <attribute name="title" default="${Name} ${version} ${name} API"/>
+      <attribute name="overview" default="${src.dir}/overview.html"/>
+    <sequential>
+      <mkdir dir="@{destdir}"/>
+      <invoke-javadoc destdir="@{destdir}" title="@{title}" overview="@{overview}">
+        <sources>
+          <solrsources/>
+          <link offline="true" href="${lucene.javadoc.url}/core" packagelistloc="${lucenedocs}/core"/>
+          <link offline="true" href="${lucene.javadoc.url}/analyzers-common" packagelistloc="${lucenedocs}/analyzers-common"/>
+          <link offline="true" href="${lucene.javadoc.url}/analyzers-icu" packagelistloc="${lucenedocs}/analyzers-icu"/>
+          <link offline="true" href="${lucene.javadoc.url}/analyzers-kuromoji" packagelistloc="${lucenedocs}/analyzers-kuromoji"/>
+          <link offline="true" href="${lucene.javadoc.url}/analyzers-morfologik" packagelistloc="${lucenedocs}/analyzers-morfologik"/>
+          <link offline="true" href="${lucene.javadoc.url}/analyzers-phonetic" packagelistloc="${lucenedocs}/analyzers-phonetic"/>
+          <link offline="true" href="${lucene.javadoc.url}/analyzers-smartcn" packagelistloc="${lucenedocs}/analyzers-smartcn"/>
+          <link offline="true" href="${lucene.javadoc.url}/analyzers-stempel" packagelistloc="${lucenedocs}/analyzers-stempel"/>
+          <link offline="true" href="${lucene.javadoc.url}/suggest" packagelistloc="${lucenedocs}/suggest"/>
+          <link offline="true" href="${lucene.javadoc.url}/grouping" packagelistloc="${lucenedocs}/grouping"/>
+          <link offline="true" href="${lucene.javadoc.url}/queries" packagelistloc="${lucenedocs}/queries"/>
+          <link offline="true" href="${lucene.javadoc.url}/queryparser" packagelistloc="${lucenedocs}/queryparser"/>
+          <link offline="true" href="${lucene.javadoc.url}/highlighter" packagelistloc="${lucenedocs}/highlighter"/>
+          <link offline="true" href="${lucene.javadoc.url}/memory" packagelistloc="${lucenedocs}/memory"/>
+          <link offline="true" href="${lucene.javadoc.url}/misc" packagelistloc="${lucenedocs}/misc"/>
+          <link offline="true" href="${lucene.javadoc.url}/spatial" packagelistloc="${lucenedocs}/spatial"/>
+          <link href=""/>
+        </sources>
+      </invoke-javadoc>
+    </sequential>
+  </macrodef>
+
   <target name="define-lucene-javadoc-url"
           depends="define-lucene-javadoc-url-SNAPSHOT,define-lucene-javadoc-url-release"/>
 
   <target name="define-lucene-javadoc-url-SNAPSHOT" if="version.contains.SNAPSHOT">
     <property name="lucene.javadoc.url"
-              value="${common.dir}/build/docs/api/all/"/>
+              value="${common.dir}/build/docs/api/"/>
   </target>
 
   <target name="define-lucene-javadoc-url-release" unless="version.contains.SNAPSHOT">
@@ -230,7 +264,7 @@
       </filterchain>
     </loadproperties>
     <property name="lucene.javadoc.url"
-              value="http://lucene.apache.org/java/${underscore.version}/api/all/"/>
+              value="http://lucene.apache.org/java/${underscore.version}/api/"/>
   </target>
 
   <target name="jar-src" depends="init">
Index: solr/build.xml
===================================================================
--- solr/build.xml	(revision 1328355)
+++ solr/build.xml	(working copy)
@@ -492,7 +492,7 @@
   <!-- since we build across all contribs, we must ensure all deps
        are resolved -->
   <target name="javadocs-all"
-          depends="resolve,prep-lucene-jars,javadocs-dep,define-lucene-javadoc-url"
+          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"/>
@@ -519,11 +519,9 @@
         <pathelement location="${dest}/solr-solrj/classes/java"/>
       </path>
  
-      <invoke-javadoc destdir="${dest}/docs/api"
+      <solr-invoke-javadoc destdir="${dest}/docs/api"
                       overview="core/src/java/overview.html">
-        <sources>
-          <link offline="true" href="${lucene.javadoc.url}"
-                packagelistloc="${common.dir}/build/docs/api/all/"/>
+        <solrsources>
           <packageset dir="core/src/java" />
           <packageset dir="solrj/src/java" />
           <packageset dir="contrib/analysis-extras/src/java"/>
@@ -540,8 +538,8 @@
           <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*" />
-        </sources>
-      </invoke-javadoc>
+        </solrsources>
+      </solr-invoke-javadoc>
     </sequential>
   </target>
  
Index: solr/test-framework/build.xml
===================================================================
--- solr/test-framework/build.xml	(revision 1328355)
+++ solr/test-framework/build.xml	(working copy)
@@ -39,26 +39,19 @@
     </compile>
   </target>
 
-  <!-- Override common-solr.javadocs to include a JUnit javadoc link     -->
+  <!-- Override common-solr.javadocs to include JUnit,test-framework links -->
   <!-- and to copy the built javadocs to ${dest}/docs/api/test-framework -->
   <target name="javadocs"
-          depends="compile-core,define-lucene-javadoc-url">
+          depends="compile-core,lucene-javadocs,javadocs-test-framework,define-lucene-javadoc-url">
     <sequential>
-      <mkdir dir="${javadoc.dir}"/>
-      <mkdir dir="${dest}/META-INF/"/>
-      <invoke-javadoc destdir="${javadoc.dir}"
-                      title="${Name} ${version} ${name} API">
-        <sources>
-          <link offline="true" href="${lucene.javadoc.url}"
-                packagelistloc="${common.dir}/build/docs/api/all/"/>
-          <link offline="true" href="${lucene-javadoc-url}"
-                packagelistloc="${common.dir}/build/docs/api/all/"/>
+      <solr-invoke-javadoc>
+        <solrsources>
           <link offline="true" href="${javadoc.link.junit}"
                 packagelistLoc="${javadoc.packagelist.dir}/junit"/>
-          <link href=""/>
+          <link offline="true" href="${lucene.javadoc.url}/test-framework" packagelistloc="${lucenedocs}/test-framework"/>
           <packageset dir="${src.dir}"/>
-        </sources>
-      </invoke-javadoc>
+        </solrsources>
+      </solr-invoke-javadoc>
       <solr-jarify basedir="${javadoc.dir}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
       <mkdir dir="${dest}/docs/api/test-framework"/>
       <copy todir="${dest}/docs/api/test-framework">
Index: lucene/common-build.xml
===================================================================
--- lucene/common-build.xml	(revision 1328355)
+++ lucene/common-build.xml	(working copy)
@@ -553,6 +553,19 @@
     <property name="core.compiled" value="true"/>
   </target>
 
+  <target name="check-lucene-core-javadocs-uptodate" unless="core-javadocs.uptodate">
+    <uptodate property="core-javadocs.uptodate" targetfile="${common.dir}/build/core/lucene-core-${version}-javadoc.jar">
+       <srcfiles dir="${common.dir}/core/src/java" includes="**/*.java"/>
+    </uptodate>
+  </target>
+
+  <target name="javadocs-lucene-core" depends="check-lucene-core-javadocs-uptodate" unless="core-javadocs.uptodate">
+    <ant dir="${common.dir}/core" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="core-javadocs.uptodate" value="true"/>
+  </target>
+
   <target name="compile-test-framework" unless="lucene.test.framework.compiled">
     <ant dir="${common.dir}/test-framework" target="compile-core" inheritAll="false">
       <propertyset refid="uptodate.and.compiled.properties"/>
@@ -560,6 +573,23 @@
     <property name="lucene.test.framework.compiled" value="true"/>
   </target>
 
+  <target name="check-lucene-test-framework-javadocs-uptodate" 
+          unless="lucene.test.framework-javadocs.uptodate">
+    <uptodate property="lucene.test.framework-javadocs.uptodate" 
+         targetfile="${common.dir}/build/test-framework/lucene-test-framework-${version}-javadoc.jar">
+       <srcfiles dir="${common.dir}/test-framework/src/java" includes="**/*.java"/>
+    </uptodate>
+  </target>
+
+  <target name="javadocs-test-framework" 
+          depends="check-lucene-test-framework-javadocs-uptodate"
+          unless="lucene.test.framework-javadocs.uptodate">
+    <ant dir="${common.dir}/test-framework" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="lucene.test.framework-javadocs.uptodate" value="true"/>
+  </target>
+
   <target name="compile-tools">
     <ant dir="${common.dir}/tools" target="compile-core" inheritAll="false"/>
   </target>
Index: lucene/demo/build.xml
===================================================================
--- lucene/demo/build.xml	(revision 1328355)
+++ lucene/demo/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="demo" default="default" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
 
   <description>
-    Lucene Demo
+    Simple example code
   </description>
 
   <property name="demo.name" value="lucene-demos-${version}"/>
@@ -36,6 +36,15 @@
    <pathelement location="lib/servlet-api-2.4.jar"/>
   </path>
 
+  <target name="javadocs" depends="javadocs-analyzers-common,javadocs-queryparser,compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../analyzers-common"/>
+        <link href="../queryparser"/>
+      </links>
+    </invoke-module-javadoc>
+  </target>
+
   <target name="compile-core" depends="jar-analyzers-common,jar-queryparser,common.compile-core" />
 
   <target name="default" depends="jar-core,build-web-demo"/>
Index: lucene/spatial/build.xml
===================================================================
--- lucene/spatial/build.xml	(revision 1328355)
+++ lucene/spatial/build.xml	(working copy)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <project name="spatial" default="default">
   <description>
-    Lucene Spatial
+    Geospatial search
   </description>
 
   <import file="../module-build.xml"/>
@@ -23,4 +23,12 @@
   </path>
 
   <target name="compile-core" depends="jar-queries,common.compile-core" />
+
+  <target name="javadocs" depends="javadocs-queries,compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../queries"/>
+      </links>
+    </invoke-module-javadoc>
+  </target>
 </project>
Index: lucene/build.xml
===================================================================
--- lucene/build.xml	(revision 1328355)
+++ lucene/build.xml	(working copy)
@@ -197,112 +197,25 @@
 
   <target name="javadoc" depends="javadocs"/>
   <target name="javadocs" description="Generate javadoc" 
-          depends="javadocs-all, javadocs-core, javadocs-modules, javadocs-test-framework">
+          depends="javadocs-lucene-core, javadocs-modules, javadocs-test-framework">
     <echo file="${javadoc.dir}/index.html" append="false">
 <![CDATA[<html><head><title>${Name} ${version} Javadoc Index</title></head>
 <body>
 <h1>${Name} ${version} Javadoc Index</h1>
 <ul>
-  <li><a href="all/index.html">All</a></li>
-  <li><a href="core/index.html">Core</a></li>
-  <li><a href="test-framework/index.html">Test Framework</a></li>
+  <li><a href="core/index.html">core</a>: Lucene core library</li>
+  <li><a href="test-framework/index.html">test-framework</a>: Framework for testing Lucene-based applications</li>
 ]]></echo>
-    <modules-crawl target="javadocs-index.html" failonerror="false"/>
+    <modules-crawl target="javadocs-index.html" failonerror="true"/>
     <echo file="${javadoc.dir}/index.html" append="true"><![CDATA[
 </ul></body>]]></echo>
   </target>
 	
-  <target name="javadocs-core" description="Generate javadoc for core classes">
-    <ant dir="${common.dir}/core" target="javadocs" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-
-  <target name="javadocs-test-framework">
-    <ant dir="${common.dir}/test-framework" target="javadocs" inheritAll="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-
   <target name="javadocs-modules" description="Generate javadoc for modules classes">
     <modules-crawl target="javadocs"
-                   failonerror="false"/>
+                   failonerror="true"/>
   </target>
 
-  <!-- call resolve to force dependencies to be in lib/ for javadocs -->
-  <target name="javadocs-all" depends="resolve"
-          description="Generate javadoc for all classes">
-  	<sequential>
-      <mkdir dir="${javadoc.dir}/all"/>
-      
-      <path id="javadoc.classpath">
-        <path refid="classpath"/>
-        <pathelement location="${ant.home}/lib/ant.jar"/>
-        <fileset dir="." includes="**/lib/" excludes="**/lib/*.txt"/>
-      </path>
-
-      <invoke-javadoc overview="${common.dir}/core/src/java/overview.html"
-                      destdir="${javadoc.dir}/all">
-        <sources>
-          <!-- TODO: find a dynamic way to do include multiple source roots -->
-          <packageset dir="core/src/java"/>
-          <packageset dir="test-framework/src/java"/>
-
-          <!-- please keep this list up to date, and in alpha order...   -->
-        
-          <!-- ie: `find ./* -path \*src/java | sort` -->
-
-          <!-- if you make changes to the list of package sets, also -->
-          <!-- make sure the group list below is updated.            -->
-          <!-- Also remember to keep site.xml in sync.            -->		  
-          <packageset dir="analysis/common/src/java"/>
-          <packageset dir="analysis/icu/src/java"/>
-          <packageset dir="analysis/kuromoji/src/java"/>
-          <packageset dir="analysis/morfologik/src/java"/>
-          <packageset dir="analysis/phonetic/src/java"/>
-          <packageset dir="analysis/smartcn/src/java"/>
-          <packageset dir="analysis/stempel/src/java"/>
-          <packageset dir="analysis/uima/src/java"/>
-          <packageset dir="benchmark/src/java"/>
-          <packageset dir="demo/src/java"/>
-          <packageset dir="facet/src/java"/>
-          <packageset dir="grouping/src/java"/>
-          <packageset dir="highlighter/src/java"/>
-          <packageset dir="join/src/java"/>
-          <packageset dir="memory/src/java"/>
-          <packageset dir="misc/src/java"/>
-          <packageset dir="queries/src/java"/>
-          <packageset dir="queryparser/src/java"/>
-          <packageset dir="sandbox/src/java"/>
-          <packageset dir="spatial/src/java"/>
-          <packageset dir="suggest/src/java"/>
-          <!-- end alpha sort -->
-
-          <!-- If the main javadoc Group listing includes an "Other   -->
-          <!-- Packages" group after the ones listed here, then those -->
-          <!-- packages are not being matched by any of these rules   -->
-  
-          <group title="Core" packages="org.apache.*:org.apache.lucene.analysis:org.apache.lucene.analysis.tokenattributes*"/>
-          <group title="Analysis" packages="org.apache.lucene.analysis.*:org.apache.lucene.collation*:org.tartarus.snowball*:org.egothor.stemmer*"/>
-          <group title="Benchmark" packages="org.apache.lucene.benchmark*"/>
-          <group title="Demo" packages="org.apache.lucene.demo*"/>
-          <group title="Facet" packages="org.apache.lucene.facet*:org.apache.lucene.util.encoding*:org.apache.lucene.util.collections*"/>
-          <group title="Grouping" packages="org.apache.lucene.search.grouping*"/>
-          <group title="Highlighter" packages="org.apache.lucene.search.highlight*:org.apache.lucene.search.vectorhighlight*"/>
-          <group title="Join" packages="org.apache.lucene.search.join*"/>
-          <group title="Memory" packages="org.apache.lucene.index.memory*"/>
-          <group title="Misc" packages="org.apache.lucene.misc*"/>
-          <group title="Queries" packages="org.apache.lucene.queries*"/>
-          <group title="Query Parser" packages="org.apache.lucene.queryparser*"/>
-          <group title="Sandbox" packages="org.apache.lucene.sandbox*"/>
-          <group title="Spatial" packages="org.apache.lucene.spatial*"/>
-          <group title="Suggest" packages="org.apache.lucene.search.spell*:org.apache.lucene.search.suggest*"/>
-
-        </sources>
-      </invoke-javadoc>
-  	</sequential>
-  </target>
-
   <target name="rat-sources">
     <sequential>
        <ant dir="core" target="rat-sources" inheritall="false"/>
Index: lucene/memory/build.xml
===================================================================
--- lucene/memory/build.xml	(revision 1328355)
+++ lucene/memory/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="memory" default="default">
 
   <description>
-    High-performance single-document index to compare against Query
+    Single-document in-memory index implementation
   </description>
 
   <import file="../module-build.xml"/>
Index: lucene/suggest/build.xml
===================================================================
--- lucene/suggest/build.xml	(revision 1328355)
+++ lucene/suggest/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="suggest" default="default">
 
   <description>
-    Suggest
+    Auto-suggest and Spellchecking support
   </description>
 	
   <!-- just a list of words for testing suggesters -->
Index: lucene/analysis/icu/build.xml
===================================================================
--- lucene/analysis/icu/build.xml	(revision 1328355)
+++ lucene/analysis/icu/build.xml	(working copy)
@@ -20,8 +20,7 @@
 <project name="analyzers-icu" default="default">
 
   <description>
-  	Provides integration with ICU (International Components for Unicode) for
-  	stronger Unicode and internationalization support. 
+   Analysis integration with ICU (International Components for Unicode).
   </description>
 
   <import file="../analysis-module-build.xml"/>
@@ -130,20 +129,5 @@
       <classpath refid="classpath"/>
     </compile>
   </target>
-  
-  <target name="javadocs" depends="compile-core">
-   	<sequential>
-       <mkdir dir="${javadoc.dir}/${name}"/>
-       <invoke-javadoc
-         destdir="${javadoc.dir}/${name}"
-       	 title="${Name} ${version} ${name} API">
-         <sources>
-           <link href="../analyzers-common"/>
-           <link href=""/>
-           <packageset dir="${src.dir}"/>
-        </sources>
-      </invoke-javadoc>
-      <jarify basedir="${javadoc.dir}/${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
-    </sequential>
-  </target>
+
 </project>
Index: lucene/analysis/common/build.xml
===================================================================
--- lucene/analysis/common/build.xml	(revision 1328355)
+++ lucene/analysis/common/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="analyzers-common" default="default">
 
   <description>
-   Analyzers
+   Analyzers for indexing content in different languages and domains.
   </description>
 
   <!-- some files for testing that do not have license headers -->
@@ -138,4 +138,6 @@
       <classpath refid="classpath"/>
     </compile>
   </target>
+
+  <target name="javadocs" depends="module-build.javadocs"/>
 </project>
Index: lucene/analysis/uima/build.xml
===================================================================
--- lucene/analysis/uima/build.xml	(revision 1328355)
+++ lucene/analysis/uima/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="analyzers-uima" default="default">
 
   <description>
-    UIMA Analysis module
+    Analysis integration with Apache UIMA
   </description>
 	
   <property name="tests.userdir" value="src/test-files"/>
Index: lucene/analysis/kuromoji/build.xml
===================================================================
--- lucene/analysis/kuromoji/build.xml	(revision 1328355)
+++ lucene/analysis/kuromoji/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="analyzers-kuromoji" default="default">
 
   <description>
-    Kuromoji Japanese Morphological Analyzer
+    Japanese Morphological Analyzer
   </description>
 
   <!-- default configuration: uses mecab-ipadic -->
Index: lucene/analysis/analysis-module-build.xml
===================================================================
--- lucene/analysis/analysis-module-build.xml	(revision 1328355)
+++ lucene/analysis/analysis-module-build.xml	(working copy)
@@ -32,4 +32,12 @@
 
   <import file="../module-build.xml"/>
 
+  <target name="javadocs" depends="javadocs-analyzers-common, compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../analyzers-common"/>
+      </links>
+    </invoke-module-javadoc>
+  </target>
+
 </project>
Index: lucene/analysis/smartcn/build.xml
===================================================================
--- lucene/analysis/smartcn/build.xml	(revision 1328355)
+++ lucene/analysis/smartcn/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="analyzers-smartcn" default="default">
 
   <description>
-    Smart Chinese Analyzer
+    Analyzer for indexing Chinese
   </description>
 
   <import file="../analysis-module-build.xml"/>
Index: lucene/analysis/morfologik/build.xml
===================================================================
--- lucene/analysis/morfologik/build.xml	(revision 1328355)
+++ lucene/analysis/morfologik/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="analyzers-morfologik" default="default">
 
   <description>
-    Morfologik Analyzer
+    Analyzer for indexing Polish
   </description>
 
   <import file="../analysis-module-build.xml"/>
Index: lucene/analysis/phonetic/build.xml
===================================================================
--- lucene/analysis/phonetic/build.xml	(revision 1328355)
+++ lucene/analysis/phonetic/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="analyzers-phonetic" default="default">
 
   <description>
-  	Provides phonetic encoding support via Apache Commons Codec.
+    Analyzer for indexing phonetic signatures (for sounds-alike search)
   </description>
 
   <import file="../analysis-module-build.xml"/>
Index: lucene/analysis/stempel/build.xml
===================================================================
--- lucene/analysis/stempel/build.xml	(revision 1328355)
+++ lucene/analysis/stempel/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="analyzers-stempel" default="default">
 
   <description>
-    Stempel Analyzer
+    Analyzer for indexing Polish
   </description>
 	
   <import file="../analysis-module-build.xml"/>
Index: lucene/misc/build.xml
===================================================================
--- lucene/misc/build.xml	(revision 1328355)
+++ lucene/misc/build.xml	(working copy)
@@ -22,7 +22,7 @@
   <!-- TODO: add javacc capability for PrecedenceQueryParser -->
 
   <description>
-    Miscellaneous Lucene extensions
+    Index tools and other miscellaneous code
   </description>
 
   <import file="../module-build.xml"/>
Index: lucene/sandbox/build.xml
===================================================================
--- lucene/sandbox/build.xml	(revision 1328355)
+++ lucene/sandbox/build.xml	(working copy)
@@ -18,7 +18,7 @@
 <project name="sandbox" default="default">
 
   <description>
-    Sandbox for odd contrib code
+    Various third party contributions and new ideas
   </description>
 
   <import file="../module-build.xml"/>
Index: lucene/test-framework/build.xml
===================================================================
--- lucene/test-framework/build.xml	(revision 1328355)
+++ lucene/test-framework/build.xml	(working copy)
@@ -18,7 +18,7 @@
  -->
 
 <project name="test-framework" default="default">
-  <description>Lucene Test Framework</description>
+  <description>Framework for testing Lucene-based applications</description>
 
   <property name="build.dir" location="../build/test-framework"/>
 
@@ -46,7 +46,7 @@
   </target>
 
   <target name="javadocs-core" depends="javadocs"/>
-  <target name="javadocs" depends="init">
+  <target name="javadocs" depends="init,javadocs-lucene-core">
     <sequential>
       <mkdir dir="${javadoc.dir}/test-framework"/>
       <invoke-javadoc overview="${src.dir}/overview.html"
@@ -56,6 +56,7 @@
           <packageset dir="${src.dir}"/>
           <link offline="true" href="${javadoc.link.junit}"
                 packagelistLoc="${javadoc.packagelist.dir}/junit"/>
+          <link href="../core/"/>
           <link href=""/>
         </sources>
       </invoke-javadoc>
Index: lucene/README.txt
===================================================================
--- lucene/README.txt	(revision 1328355)
+++ lucene/README.txt	(working copy)
@@ -22,12 +22,13 @@
 Additional modules contain the same structure:
 
 analysis/common/: Analyzers for indexing content in different languages and domains
+analysis/icu/: Analysis integration with ICU (International Components for Unicode)
 analysis/kuromoji/: Analyzer for indexing Japanese
 analysis/morfologik/: Analyzer for indexing Polish
 analysis/phonetic/: Analyzer for indexing phonetic signatures (for sounds-alike search)
 analysis/smartcn/: Analyzer for indexing Chinese
 analysis/stempel/: Analyzer for indexing Polish
-analysis/uima/: Analyzer that integrates with Apache UIMA
+analysis/uima/: Analysis integration with Apache UIMA
 benchmark/: System for benchmarking Lucene
 demo/: Simple example code
 facet/: Faceted indexing and search capabilities
Index: lucene/module-build.xml
===================================================================
--- lucene/module-build.xml	(revision 1328355)
+++ lucene/module-build.xml	(working copy)
@@ -63,25 +63,35 @@
   </target>
   <target name="build-artifacts-and-tests" depends="jar, compile-test" />
 	
-  <target name="javadocs" depends="compile-core">
-   	<sequential>
-       <mkdir dir="${javadoc.dir}/${name}"/>
-       <invoke-javadoc
+  <!-- TODO: why does this previous depend on compile-core? -->
+  <target name="javadocs" depends="compile-core,javadocs-lucene-core">
+    <invoke-module-javadoc/>
+  </target>	
+
+  <macrodef name="invoke-module-javadoc">
+    <!-- additional links for dependencies to other modules -->
+      <element name="links" optional="yes"/>
+    <sequential>
+      <mkdir dir="${javadoc.dir}/${name}"/>
+      <invoke-javadoc
          destdir="${javadoc.dir}/${name}"
-       	title="${Name} ${version} ${name} API">
+       	 title="${Name} ${version} ${name} API">
          <sources>
+           <link href="../core/"/>
+           <links/>
            <link href=""/>
            <packageset dir="${src.dir}"/>
         </sources>
       </invoke-javadoc>
       <jarify basedir="${javadoc.dir}/${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
     </sequential>
-  </target>	
+  </macrodef>
 
   <target name="javadocs-index.html" description="Generate line for index.html of JavaDocs">
+    <xmlproperty file="${ant.file}" collapseAttributes="true"/>
     <echo file="${javadoc.dir}/index.html" append="true">
 <![CDATA[
-  <li><a href="${name}/index.html">${name}</a></li>
+  <li><a href="${name}/index.html">${name}</a>: ${project.description}</a></li>
 ]]></echo>
   </target>
 
@@ -95,6 +105,17 @@
     </ant>
     <property name="queryparser.uptodate" value="true"/>
   </target>
+
+  <property name="queryparser-javadoc.jar" value="${common.dir}/build/queryparser/lucene-queryparser-${version}-javadoc.jar"/>
+  <target name="check-queryparser-javadocs-uptodate" unless="queryparser-javadocs.uptodate">
+    <module-uptodate name="queryparser" jarfile="${queryparser-javadoc.jar}" property="queryparser-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-queryparser" unless="queryparser-javadocs.uptodate" depends="check-queryparser-javadocs-uptodate">
+    <ant dir="${common.dir}/queryparser" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="queryparser-javadocs.uptodate" value="true"/>
+  </target>
   
   <property name="analyzers-common.jar" value="${common.dir}/build/analysis/common/lucene-analyzers-common-${version}.jar"/>
   <target name="check-analyzers-common-uptodate" unless="analyzers-common.uptodate">
@@ -107,6 +128,17 @@
     <property name="analyzers-common.uptodate" value="true"/>
   </target>
 
+  <property name="analyzers-common-javadoc.jar" value="${common.dir}/build/analysis/common/lucene-analyzers-common-${version}-javadoc.jar"/>
+  <target name="check-analyzers-common-javadocs-uptodate" unless="analyzers-common-javadocs.uptodate">
+    <module-uptodate name="analysis/common" jarfile="${analyzers-common-javadoc.jar}" property="analyzers-common-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-common" unless="analyzers-common-javadocs.uptodate" depends="check-analyzers-common-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/common" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-common-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="queries.jar" value="${common.dir}/build/queries/lucene-queries-${version}.jar"/>
   <target name="check-queries-uptodate" unless="queries.uptodate">
     <module-uptodate name="queries" jarfile="${queries.jar}" property="queries.uptodate"/>
@@ -117,6 +149,17 @@
     </ant>
     <property name="queries.uptodate" value="true"/>
   </target>
+
+  <property name="queries-javadoc.jar" value="${common.dir}/build/queries/lucene-queries-${version}-javadoc.jar"/>
+  <target name="check-queries-javadocs-uptodate" unless="queries-javadocs.uptodate">
+    <module-uptodate name="queries" jarfile="${queries-javadoc.jar}" property="queries-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-queries" unless="queries-javadocs.uptodate" depends="check-queries-javadocs-uptodate">
+    <ant dir="${common.dir}/queries" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="queries-javadocs.uptodate" value="true"/>
+  </target>
   
   <property name="facet.jar" value="${common.dir}/build/facet/lucene-facet-${version}.jar"/>
   <target name="check-facet-uptodate" unless="facet.uptodate">
@@ -129,6 +172,17 @@
     <property name="facet.uptodate" value="true"/>
   </target>
 
+  <property name="facet-javadoc.jar" value="${common.dir}/build/facet/lucene-facet-${version}-javadoc.jar"/>
+  <target name="check-facet-javadocs-uptodate" unless="facet-javadocs.uptodate">
+    <module-uptodate name="facet" jarfile="${facet-javadoc.jar}" property="facet-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-facet" unless="facet-javadocs.uptodate" depends="check-facet-javadocs-uptodate">
+    <ant dir="${common.dir}/facet" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="facet-javadocs.uptodate" value="true"/>
+  </target>
+ 
   <property name="analyzers-icu.jar" value="${common.dir}/build/analysis/icu/lucene-analyzers-icu-${version}.jar"/>
   <target name="check-analyzers-icu-uptodate" unless="analyzers-icu.uptodate">
     <module-uptodate name="analysis/icu" jarfile="${analyzers-icu.jar}" property="analyzers-icu.uptodate"/>
@@ -140,6 +194,17 @@
     <property name="analyzers-icu.uptodate" value="true"/>
   </target>
 
+  <property name="analyzers-icu-javadoc.jar" value="${common.dir}/build/analysis/icu/lucene-analyzers-icu-${version}-javadoc.jar"/>
+  <target name="check-analyzers-icu-javadocs-uptodate" unless="analyzers-icu-javadocs.uptodate">
+    <module-uptodate name="analysis/icu" jarfile="${analyzers-icu-javadoc.jar}" property="analyzers-icu-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-icu" unless="analyzers-icu-javadocs.uptodate" depends="check-analyzers-icu-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/icu" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-icu-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="analyzers-phonetic.jar" value="${common.dir}/build/analysis/phonetic/lucene-analyzers-phonetic-${version}.jar"/>
   <target name="check-analyzers-phonetic-uptodate" unless="analyzers-phonetic.uptodate">
     <module-uptodate name="analysis/phonetic" jarfile="${analyzers-phonetic.jar}" property="analyzers-phonetic.uptodate"/>
@@ -150,6 +215,16 @@
     </ant>
   </target>
 
+  <property name="analyzers-phonetic-javadoc.jar" value="${common.dir}/build/analysis/phonetic/lucene-analyzers-phonetic-${version}-javadoc.jar"/>
+  <target name="check-analyzers-phonetic-javadocs-uptodate" unless="analyzers-phonetic-javadocs.uptodate">
+    <module-uptodate name="analysis/phonetic" jarfile="${analyzers-phonetic-javadoc.jar}" property="analyzers-phonetic-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-phonetic" unless="analyzers-phonetic-javadocs.uptodate" depends="check-analyzers-phonetic-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/phonetic" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-phonetic-javadocs.uptodate" value="true"/>
+  </target>
 
   <property name="analyzers-smartcn.jar" value="${common.dir}/build/analysis/smartcn/lucene-analyzers-smartcn-${version}.jar"/>
   <target name="check-analyzers-smartcn-uptodate" unless="analyzers-smartcn.uptodate">
@@ -162,6 +237,17 @@
     <property name="analyzers-smartcn.uptodate" value="true"/>
   </target>
 
+  <property name="analyzers-smartcn-javadoc.jar" value="${common.dir}/build/analysis/smartcn/lucene-analyzers-smartcn-${version}-javadoc.jar"/>
+  <target name="check-analyzers-smartcn-javadocs-uptodate" unless="analyzers-smartcn-javadocs.uptodate">
+    <module-uptodate name="analysis/smartcn" jarfile="${analyzers-smartcn-javadoc.jar}" property="analyzers-smartcn-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-smartcn" unless="analyzers-smartcn-javadocs.uptodate" depends="check-analyzers-smartcn-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/smartcn" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-smartcn-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="analyzers-stempel.jar" value="${common.dir}/build/analysis/stempel/lucene-analyzers-stempel-${version}.jar"/>
   <target name="check-analyzers-stempel-uptodate" unless="analyzers-stempel.uptodate">
     <module-uptodate name="analysis/stempel" jarfile="${analyzers-stempel.jar}" property="analyzers-stempel.uptodate"/>
@@ -173,6 +259,17 @@
     <property name="analyzers-stempel.uptodate" value="true"/>
   </target>
 
+  <property name="analyzers-stempel-javadoc.jar" value="${common.dir}/build/analysis/stempel/lucene-analyzers-stempel-${version}-javadoc.jar"/>
+  <target name="check-analyzers-stempel-javadocs-uptodate" unless="analyzers-stempel-javadocs.uptodate">
+    <module-uptodate name="analysis/stempel" jarfile="${analyzers-stempel-javadoc.jar}" property="analyzers-stempel-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-stempel" unless="analyzers-stempel-javadocs.uptodate" depends="check-analyzers-stempel-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/stempel" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-stempel-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="analyzers-kuromoji.jar" value="${common.dir}/build/analysis/kuromoji/lucene-analyzers-kuromoji-${version}.jar"/>
   <target name="check-analyzers-kuromoji-uptodate" unless="analyzers-kuromoji.uptodate">
     <module-uptodate name="analysis/kuromoji" jarfile="${analyzers-kuromoji.jar}" property="analyzers-kuromoji.uptodate"/>
@@ -184,6 +281,17 @@
     <property name="analyzers-kuromoji.uptodate" value="true"/>
   </target>
 
+  <property name="analyzers-kuromoji-javadoc.jar" value="${common.dir}/build/analysis/kuromoji/lucene-analyzers-kuromoji-${version}-javadoc.jar"/>
+  <target name="check-analyzers-kuromoji-javadocs-uptodate" unless="analyzers-kuromoji-javadocs.uptodate">
+    <module-uptodate name="analysis/kuromoji" jarfile="${analyzers-kuromoji-javadoc.jar}" property="analyzers-kuromoji-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-kuromoji" unless="analyzers-kuromoji-javadocs.uptodate" depends="check-analyzers-kuromoji-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/kuromoji" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-kuromoji-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="analyzers-uima.jar" value="${common.dir}/build/analysis/uima/lucene-analyzers-uima-${version}.jar"/>
   <target name="check-analyzers-uima-uptodate" unless="analyzers-uima.uptodate">
     <module-uptodate name="analysis/uima" jarfile="${analyzers-uima.jar}" property="analyzers-uima.uptodate"/>
@@ -195,6 +303,17 @@
     <property name="analyzers-uima.uptodate" value="true"/>
   </target>
 
+  <property name="analyzers-uima-javadoc.jar" value="${common.dir}/build/analysis/uima/lucene-analyzers-uima-${version}-javadoc.jar"/>
+  <target name="check-analyzers-uima-javadocs-uptodate" unless="analyzers-uima-javadocs.uptodate">
+    <module-uptodate name="analysis/uima" jarfile="${analyzers-uima-javadoc.jar}" property="analyzers-uima-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-uima" unless="analyzers-uima-javadocs.uptodate" depends="check-analyzers-uima-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/uima" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-uima-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="analyzers-morfologik.jar" value="${common.dir}/build/analysis/morfologik/lucene-analyzers-morfologik-${version}.jar"/>
   <fileset id="analyzers-morfologik.fileset" dir="${common.dir}">
     <include name="build/analysis/morfologik/lucene-analyzers-morfologik-${version}.jar" />
@@ -212,6 +331,17 @@
     <property name="analyzers-morfologik.uptodate" value="true"/>
   </target>
 
+  <property name="analyzers-morfologik-javadoc.jar" value="${common.dir}/build/analysis/morfologik/lucene-analyzers-morfologik-${version}-javadoc.jar"/>
+  <target name="check-analyzers-morfologik-javadocs-uptodate" unless="analyzers-morfologik-javadocs.uptodate">
+    <module-uptodate name="analysis/morfologik" jarfile="${analyzers-morfologik-javadoc.jar}" property="analyzers-morfologik-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-analyzers-morfologik" unless="analyzers-morfologik-javadocs.uptodate" depends="check-analyzers-morfologik-javadocs-uptodate">
+    <ant dir="${common.dir}/analysis/morfologik" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="analyzers-morfologik-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="grouping.jar" value="${common.dir}/build/grouping/lucene-grouping-${version}.jar"/>
   <target name="check-grouping-uptodate" unless="grouping.uptodate">
     <module-uptodate name="grouping" jarfile="${grouping.jar}" property="grouping.uptodate"/>
@@ -223,6 +353,17 @@
     <property name="grouping.uptodate" value="true"/>
   </target>
 
+  <property name="grouping-javadoc.jar" value="${common.dir}/build/grouping/lucene-grouping-${version}-javadoc.jar"/>
+  <target name="check-grouping-javadocs-uptodate" unless="grouping-javadocs.uptodate">
+    <module-uptodate name="grouping" jarfile="${grouping-javadoc.jar}" property="grouping-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-grouping" unless="grouping-javadocs.uptodate" depends="check-grouping-javadocs-uptodate">
+    <ant dir="${common.dir}/grouping" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="grouping-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="highlighter.jar" value="${common.dir}/build/highlighter/lucene-highlighter-${version}.jar"/>
   <target name="check-highlighter-uptodate" unless="highlighter.uptodate">
     <module-uptodate name="highlighter" jarfile="${highlighter.jar}" property="highlighter.uptodate"/>
@@ -234,6 +375,17 @@
     <property name="highlighter.uptodate" value="true"/>
   </target>
 
+  <property name="highlighter-javadoc.jar" value="${common.dir}/build/highlighter/lucene-highlighter-${version}-javadoc.jar"/>
+  <target name="check-highlighter-javadocs-uptodate" unless="highlighter-javadocs.uptodate">
+    <module-uptodate name="highlighter" jarfile="${highlighter-javadoc.jar}" property="highlighter-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-highlighter" unless="highlighter-javadocs.uptodate" depends="check-highlighter-javadocs-uptodate">
+    <ant dir="${common.dir}/highlighter" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="highlighter-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="memory.jar" value="${common.dir}/build/memory/lucene-memory-${version}.jar"/>
   <target name="check-memory-uptodate" unless="memory.uptodate">
     <module-uptodate name="memory" jarfile="${memory.jar}" property="memory.uptodate"/>
@@ -245,6 +397,17 @@
     <property name="memory.uptodate" value="true"/>
   </target>
 
+  <property name="memory-javadoc.jar" value="${common.dir}/build/memory/lucene-memory-${version}-javadoc.jar"/>
+  <target name="check-memory-javadocs-uptodate" unless="memory-javadocs.uptodate">
+    <module-uptodate name="memory" jarfile="${memory-javadoc.jar}" property="memory-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-memory" unless="memory-javadocs.uptodate" depends="check-memory-javadocs-uptodate">
+    <ant dir="${common.dir}/memory" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="memory-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="misc.jar" value="${common.dir}/build/misc/lucene-misc-${version}.jar"/>
   <target name="check-misc-uptodate" unless="misc.uptodate">
     <module-uptodate name="misc" jarfile="${misc.jar}" property="misc.uptodate"/>
@@ -256,6 +419,17 @@
     <property name="misc.uptodate" value="true"/>
   </target>
 
+  <property name="misc-javadoc.jar" value="${common.dir}/build/misc/lucene-misc-${version}-javadoc.jar"/>
+  <target name="check-misc-javadocs-uptodate" unless="misc-javadocs.uptodate">
+    <module-uptodate name="misc" jarfile="${misc-javadoc.jar}" property="misc-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-misc" unless="misc-javadocs.uptodate" depends="check-misc-javadocs-uptodate">
+    <ant dir="${common.dir}/misc" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="misc-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="sandbox.jar" value="${common.dir}/build/sandbox/lucene-sandbox-${version}.jar"/>
   <target name="check-sandbox-uptodate" unless="sandbox.uptodate">
     <module-uptodate name="sandbox" jarfile="${sandbox.jar}" property="sandbox.uptodate"/>
@@ -267,6 +441,17 @@
     <property name="sandbox.uptodate" value="true"/>
   </target>
 
+  <property name="sandbox-javadoc.jar" value="${common.dir}/build/sandbox/lucene-sandbox-${version}-javadoc.jar"/>
+  <target name="check-sandbox-javadocs-uptodate" unless="sandbox-javadocs.uptodate">
+    <module-uptodate name="sandbox" jarfile="${sandbox-javadoc.jar}" property="sandbox-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-sandbox" unless="sandbox-javadocs.uptodate" depends="check-sandbox-javadocs-uptodate">
+    <ant dir="${common.dir}/sandbox" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="sandbox-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="spatial.jar" value="${common.dir}/build/spatial/lucene-spatial-${version}.jar"/>
   <target name="check-spatial-uptodate" unless="spatial.uptodate">
     <module-uptodate name="spatial" jarfile="${spatial.jar}" property="spatial.uptodate"/>
@@ -278,6 +463,17 @@
     <property name="spatial.uptodate" value="true"/>
   </target>
 
+  <property name="spatial-javadoc.jar" value="${common.dir}/build/spatial/lucene-spatial-${version}-javadoc.jar"/>
+  <target name="check-spatial-javadocs-uptodate" unless="spatial-javadocs.uptodate">
+    <module-uptodate name="spatial" jarfile="${spatial-javadoc.jar}" property="spatial-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-spatial" unless="spatial-javadocs.uptodate" depends="check-spatial-javadocs-uptodate">
+    <ant dir="${common.dir}/spatial" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="spatial-javadocs.uptodate" value="true"/>
+  </target>
+
   <property name="suggest.jar" value="${common.dir}/build/suggest/lucene-suggest-${version}.jar"/>
   <target name="check-suggest-uptodate" unless="suggest.uptodate">
     <module-uptodate name="suggest" jarfile="${suggest.jar}" property="suggest.uptodate"/>
@@ -288,4 +484,15 @@
     </ant>
     <property name="suggest.uptodate" value="true"/>
   </target>
+
+  <property name="suggest-javadoc.jar" value="${common.dir}/build/suggest/lucene-suggest-${version}-javadoc.jar"/>
+  <target name="check-suggest-javadocs-uptodate" unless="suggest-javadocs.uptodate">
+    <module-uptodate name="suggest" jarfile="${suggest-javadoc.jar}" property="suggest-javadocs.uptodate"/>
+  </target>
+  <target name="javadocs-suggest" unless="suggest-javadocs.uptodate" depends="check-suggest-javadocs-uptodate">
+    <ant dir="${common.dir}/suggest" target="javadocs" inheritAll="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
+    <property name="suggest-javadocs.uptodate" value="true"/>
+  </target>
 </project>
Index: lucene/facet/build.xml
===================================================================
--- lucene/facet/build.xml	(revision 1328355)
+++ lucene/facet/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="facet" default="default">
 
   <description>
-    Faceted search module
+    Faceted indexing and search capabilities
   </description>
 
   <!-- prettify.css/js -->
@@ -73,5 +73,13 @@
   <target name="compile-core" depends="jar-analyzers-common,common.compile-core,compile-examples" description="Compiles facet classes" />
 
   <target name="jar-core" depends="common.jar-core,jar-examples" />
+
+  <target name="javadocs" depends="javadocs-analyzers-common,compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../analyzers-common"/>
+      </links>
+    </invoke-module-javadoc>
+  </target>
     
 </project>
Index: lucene/queryparser/build.xml
===================================================================
--- lucene/queryparser/build.xml	(revision 1328355)
+++ lucene/queryparser/build.xml	(working copy)
@@ -17,7 +17,7 @@
 
 <project name="queryparser" default="default">
   <description>
-    Lucene QueryParsers
+    Query parsers and parsing framework
   </description>
 
   <import file="../module-build.xml"/>
@@ -30,6 +30,15 @@
 
   <target name="compile-core" depends="jar-queries,jar-sandbox,common.compile-core"/>
 
+  <target name="javadocs" depends="javadocs-queries,javadocs-sandbox,compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../queries"/>
+        <link href="../sandbox"/>
+      </links>
+    </invoke-module-javadoc>
+  </target>
+
   <target name="javacc" depends="init,javacc-check,javacc-QueryParser,javacc-surround,javacc-flexible"/>
 
   <target name="javacc-QueryParser" depends="init,javacc-check" if="javacc.present">
Index: lucene/core/build.xml
===================================================================
--- lucene/core/build.xml	(revision 1328355)
+++ lucene/core/build.xml	(working copy)
@@ -18,7 +18,7 @@
  -->
 
 <project name="core" default="default">
-  <description>Lucene Core</description>
+  <description>Lucene core library</description>
 
   <property name="build.dir" location="../build/core"/>
 
Index: lucene/benchmark/build.xml
===================================================================
--- lucene/benchmark/build.xml	(revision 1328355)
+++ lucene/benchmark/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="benchmark" default="default">
 
     <description>
-        Lucene Benchmarking Contributions
+      System for benchmarking Lucene
     </description>
 
     <import file="../module-build.xml"/>
@@ -163,6 +163,18 @@
         <pathelement path="${benchmark.ext.classpath}"/>
     </path>
 
+    <target name="javadocs" depends="javadocs-memory,javadocs-highlighter,javadocs-analyzers-common,javadocs-queryparser,javadocs-facet,compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../memory"/>
+        <link href="../highlighter"/>
+        <link href="../analyzers-common"/>
+        <link href="../queryparser"/>
+        <link href="../facet"/>
+      </links>
+    </invoke-module-javadoc>
+    </target>
+
     <property name="task.alg" location="conf/micro-standard.alg"/>
     <property name="task.mem" value="140M"/>
 
Index: lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java
===================================================================
--- lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java	(revision 1328355)
+++ lucene/join/src/java/org/apache/lucene/search/join/JoinUtil.java	(working copy)
@@ -23,7 +23,7 @@
 import java.io.IOException;
 
 /**
- * Utility for query time joining using {@link TermsQuery} and {@link TermsCollector}.
+ * Utility for query time joining using TermsQuery and TermsCollector.
  *
  * @lucene.experimental
  */
Index: lucene/join/build.xml
===================================================================
--- lucene/join/build.xml	(revision 1328355)
+++ lucene/join/build.xml	(working copy)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <project name="join" default="default">
   <description>
-    Queries and collectors for performing joins
+    Index-time and Query-time joins for normalized content
   </description>
 
   <import file="../module-build.xml"/>
@@ -17,4 +17,13 @@
   </path>
 
   <target name="init" depends="module-build.init,jar-grouping"/>
+
+  <target name="javadocs" depends="javadocs-grouping,compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../grouping"/>
+      </links>
+    </invoke-module-javadoc>
+  </target>
+
 </project>
Index: lucene/grouping/build.xml
===================================================================
--- lucene/grouping/build.xml	(revision 1328355)
+++ lucene/grouping/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="grouping" default="default">
   
     <description>
-       Grouping module. Collectors for grouping search results
+       Collectors for grouping search results.
     </description>
 
     <import file="../module-build.xml"/>
@@ -35,7 +35,14 @@
       <path refid="base.classpath"/>
     </path>
 
-    <target name="compile" depends="jar-queries,common.compile-core" description="Compiles facet classes" />
+    <target name="compile" depends="jar-queries,common.compile-core" description="Compiles grouping classes" />
     <target name="jar-core" depends="common.jar-core" />
+    <target name="javadocs" depends="javadocs-queries,compile-core">
+      <invoke-module-javadoc>
+        <links>
+          <link href="../queries"/>
+        </links>
+      </invoke-module-javadoc>
+    </target>
 
 </project>
Index: lucene/highlighter/build.xml
===================================================================
--- lucene/highlighter/build.xml	(revision 1328355)
+++ lucene/highlighter/build.xml	(working copy)
@@ -20,7 +20,7 @@
 <project name="highlighter" default="default">
 
   <description>
-    Hits highlighter
+    Highlights search keywords in results
   </description>
 
   <import file="../module-build.xml"/>
@@ -31,4 +31,11 @@
   </path>
 
   <target name="compile-core" depends="jar-memory, common.compile-core" />
+  <target name="javadocs" depends="javadocs-memory,compile-core">
+    <invoke-module-javadoc>
+      <links>
+        <link href="../memory"/>
+      </links>
+    </invoke-module-javadoc>
+  </target>
 </project>
Index: lucene/queries/build.xml
===================================================================
--- lucene/queries/build.xml	(revision 1328355)
+++ lucene/queries/build.xml	(working copy)
@@ -17,7 +17,7 @@
 
 <project name="queries" default="default">
   <description>
-    Queries that exist outside of Lucene core
+    Filters and Queries that add to core Lucene
   </description>
 
   <import file="../../lucene/module-build.xml"/>
