Index: build.xml
===================================================================
--- build.xml	(revision 1535303)
+++ build.xml	(working copy)
@@ -137,15 +137,9 @@
   <property name="maven-build-dir" value="maven-build"/>
   <property name="maven-version" value="2.2.1"/>
   
-  <target name="get-maven-poms"
+  <target name="get-maven-poms" depends="resolve"
           description="Copy Maven POMs from dev-tools/maven/ to maven-build/">
-    <copy todir="${maven-build-dir}" overwrite="true" encoding="UTF-8">
-      <fileset dir="${basedir}/dev-tools/maven"/>
-      <filterset begintoken="@" endtoken="@">
-        <filter token="version" value="${version}"/>
-      </filterset>
-      <globmapper from="*.template" to="*"/>
-    </copy>
+    <ant dir="lucene" target="-get-maven-poms" inheritall="false"/>
   </target>
 
   <target name="clean-maven-build"
@@ -174,6 +168,7 @@
     </subant>
   </target>
   
+  <!-- nocommit: move to lucene/ -->
   <target name="run-maven-build" depends="get-maven-poms" description="Runs the Maven build using automatically generated POMs">
     <subant buildpath="." antfile="extra-targets.xml" target="-run-maven-build" inheritall="false" failonerror="true">
       <propertyset>
@@ -471,4 +466,13 @@
   <!-- TODO: remove me when jenkins works -->
   <target name="regenerateAndCheck" depends="regenerate,-check-after-regeneration"/>
 
+  <target name="-append-internal-dependency-properties">
+    <sequential>
+      <delete file="lucene/build/internal.dependency.properties"/>
+      <subant target="-append-internal-dependency-properties" inheritall="false" failonerror="true">
+        <fileset dir="lucene" includes="build.xml" />
+        <fileset dir="solr" includes="build.xml" />
+      </subant>
+    </sequential>
+  </target>
 </project>
Index: dev-tools/maven/lucene/analysis/common/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/common/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/common/pom.xml.template	(working copy)
@@ -44,16 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-analyzers-common.internal.dependencies@
+@lucene-analyzers-common.external.dependencies@
+@lucene-analyzers-common.internal.test.dependencies@
+@lucene-analyzers-common.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/analysis/icu/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/icu/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/icu/pom.xml.template	(working copy)
@@ -49,23 +49,12 @@
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
       <groupId>${project.groupId}</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.ibm.icu</groupId>
-      <artifactId>icu4j</artifactId>
-    </dependency>
+@lucene-analyzers-icu.internal.dependencies@
+@lucene-analyzers-icu.external.dependencies@
+@lucene-analyzers-icu.internal.test.dependencies@
+@lucene-analyzers-icu.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/analysis/kuromoji/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/kuromoji/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/kuromoji/pom.xml.template	(working copy)
@@ -46,21 +46,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-analyzers-kuromoji.internal.dependencies@
+@lucene-analyzers-kuromoji.external.dependencies@
+@lucene-analyzers-kuromoji.internal.test.dependencies@
+@lucene-analyzers-kuromoji.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/analysis/morfologik/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/morfologik/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/morfologik/pom.xml.template	(working copy)
@@ -46,25 +46,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.carrot2</groupId>
-      <artifactId>morfologik-polish</artifactId>
-    </dependency>
+@lucene-analyzers-morfologik.internal.dependencies@
+@lucene-analyzers-morfologik.external.dependencies@
+@lucene-analyzers-morfologik.internal.test.dependencies@
+@lucene-analyzers-morfologik.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/analysis/phonetic/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/phonetic/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/phonetic/pom.xml.template	(working copy)
@@ -46,25 +46,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-codec</groupId>
-      <artifactId>commons-codec</artifactId>
-    </dependency>
+@lucene-analyzers-phonetic.internal.dependencies@
+@lucene-analyzers-phonetic.external.dependencies@
+@lucene-analyzers-phonetic.internal.test.dependencies@
+@lucene-analyzers-phonetic.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/analysis/smartcn/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/smartcn/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/smartcn/pom.xml.template	(working copy)
@@ -44,21 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-analyzers-smartcn.internal.dependencies@
+@lucene-analyzers-smartcn.external.dependencies@
+@lucene-analyzers-smartcn.internal.test.dependencies@
+@lucene-analyzers-smartcn.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/analysis/stempel/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/stempel/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/stempel/pom.xml.template	(working copy)
@@ -44,21 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-analyzers-stempel.internal.dependencies@
+@lucene-analyzers-stempel.external.dependencies@
+@lucene-analyzers-stempel.internal.test.dependencies@
+@lucene-analyzers-stempel.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/analysis/uima/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/analysis/uima/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/analysis/uima/pom.xml.template	(working copy)
@@ -48,33 +48,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>Tagger</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>WhitespaceTokenizer</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-core</artifactId>
-    </dependency>
+@lucene-analyzers-uima.internal.dependencies@
+@lucene-analyzers-uima.external.dependencies@
+@lucene-analyzers-uima.internal.test.dependencies@
+@lucene-analyzers-uima.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/benchmark/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/benchmark/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/benchmark/pom.xml.template	(working copy)
@@ -44,64 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-highlighter</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-memory</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queryparser</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-facet</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.ibm.icu</groupId>
-      <artifactId>icu4j</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>net.sourceforge.nekohtml</groupId>
-      <artifactId>nekohtml</artifactId>
-      <version>1.9.17</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-compress</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.tukaani</groupId>
-          <artifactId>xz</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>xerces</groupId>
-      <artifactId>xercesImpl</artifactId>
-    </dependency>
+@lucene-benchmark.internal.dependencies@
+@lucene-benchmark.external.dependencies@
+@lucene-benchmark.internal.test.dependencies@
+@lucene-benchmark.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/classification/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/classification/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/classification/pom.xml.template	(working copy)
@@ -44,27 +44,14 @@
   <dependencies>
     <dependency>
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-      <scope>test</scope>
-    </dependency>
+@lucene-classification.internal.dependencies@
+@lucene-classification.external.dependencies@
+@lucene-classification.internal.test.dependencies@
+@lucene-classification.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/codecs/src/java/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/codecs/src/java/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/codecs/src/java/pom.xml.template	(working copy)
@@ -44,11 +44,8 @@
     <url>${vc-browse-base-url}/${module-directory}</url>
   </scm>
   <dependencies>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-codecs.internal.dependencies@
+@lucene-codecs.external.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}</sourceDirectory>
Index: dev-tools/maven/lucene/codecs/src/test/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/codecs/src/test/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/codecs/src/test/pom.xml.template	(working copy)
@@ -40,15 +40,15 @@
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-codecs</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+@lucene-codecs.internal.test.dependencies@
+@lucene-codecs.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory/>
Index: dev-tools/maven/lucene/core/src/test/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/core/src/test/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/core/src/test/pom.xml.template	(working copy)
@@ -40,25 +40,15 @@
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.ant</groupId>
-      <artifactId>ant</artifactId>
-      <scope>test</scope>
-    </dependency>
+@lucene-core.internal.test.dependencies@
+@lucene-core.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory/>
Index: dev-tools/maven/lucene/demo/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/demo/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/demo/pom.xml.template	(working copy)
@@ -44,36 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>lucene.apache.org</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-facet</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queryparser</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <scope>provided</scope>
-    </dependency>
+@lucene-demo.internal.dependencies@
+@lucene-demo.external.dependencies@
+@lucene-demo.internal.test.dependencies@
+@lucene-demo.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/expressions/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/expressions/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/expressions/pom.xml.template	(working copy)
@@ -41,33 +41,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>lucene.apache.org</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr-runtime</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.ow2.asm</groupId>
-      <artifactId>asm</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.ow2.asm</groupId>
-      <artifactId>asm-commons</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-expressions.internal.dependencies@
+@lucene-expressions.external.dependencies@
+@lucene-expressions.internal.test.dependencies@
+@lucene-expressions.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/facet/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/facet/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/facet/pom.xml.template	(working copy)
@@ -46,21 +46,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-facet.internal.dependencies@
+@lucene-facet.external.dependencies@
+@lucene-facet.internal.test.dependencies@
+@lucene-facet.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/grouping/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/grouping/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/grouping/pom.xml.template	(working copy)
@@ -44,21 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-grouping.internal.dependencies@
+@lucene-grouping.external.dependencies@
+@lucene-grouping.internal.test.dependencies@
+@lucene-grouping.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/highlighter/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/highlighter/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/highlighter/pom.xml.template	(working copy)
@@ -46,26 +46,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-memory</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-highlighter.internal.dependencies@
+@lucene-highlighter.external.dependencies@
+@lucene-highlighter.internal.test.dependencies@
+@lucene-highlighter.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/join/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/join/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/join/pom.xml.template	(working copy)
@@ -44,21 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-grouping</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-join.internal.dependencies@
+@lucene-join.external.dependencies@
+@lucene-join.internal.test.dependencies@
+@lucene-join.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/memory/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/memory/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/memory/pom.xml.template	(working copy)
@@ -46,22 +46,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queryparser</artifactId>
-      <version>${project.version}</version>
-      <scope>test</scope>
-    </dependency>
+@lucene-memory.internal.dependencies@
+@lucene-memory.external.dependencies@
+@lucene-memory.internal.test.dependencies@
+@lucene-memory.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/misc/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/misc/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/misc/pom.xml.template	(working copy)
@@ -44,16 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
-      <scope>test</scope>
+     <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-misc.internal.dependencies@
+@lucene-misc.external.dependencies@
+@lucene-misc.internal.test.dependencies@
+@lucene-misc.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/queries/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/queries/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/queries/pom.xml.template	(working copy)
@@ -44,16 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-queries.internal.dependencies@
+@lucene-queries.external.dependencies@
+@lucene-queries.internal.test.dependencies@
+@lucene-queries.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/queryparser/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/queryparser/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/queryparser/pom.xml.template	(working copy)
@@ -44,26 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-sandbox</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-queryparser.internal.dependencies@
+@lucene-queryparser.external.dependencies@
+@lucene-queryparser.internal.test.dependencies@
+@lucene-queryparser.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/replicator/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/replicator/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/replicator/pom.xml.template	(working copy)
@@ -44,43 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-facet</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlet</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.eclipse.jetty</groupId>
-          <artifactId>jetty-security</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-util</artifactId>
-    </dependency>
+@lucene-replicator.internal.dependencies@
+@lucene-replicator.external.dependencies@
+@lucene-replicator.internal.test.dependencies@
+@lucene-replicator.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/sandbox/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/sandbox/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/sandbox/pom.xml.template	(working copy)
@@ -44,20 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>jakarta-regexp</groupId>
-      <artifactId>jakarta-regexp</artifactId>
-    </dependency>
+@lucene-sandbox.internal.dependencies@
+@lucene-sandbox.external.dependencies@
+@lucene-sandbox.internal.test.dependencies@
+@lucene-sandbox.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/spatial/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/spatial/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/spatial/pom.xml.template	(working copy)
@@ -41,25 +41,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>com.spatial4j</groupId>
-      <artifactId>spatial4j</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-spatial.internal.dependencies@
+@lucene-spatial.external.dependencies@
+@lucene-spatial.internal.test.dependencies@
+@lucene-spatial.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/suggest/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/suggest/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/suggest/pom.xml.template	(working copy)
@@ -44,36 +44,14 @@
   <dependencies>
     <dependency> 
       <!-- lucene-test-framework dependency must be declared before lucene-core -->
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-misc</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-expressions</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
+@lucene-suggest.internal.dependencies@
+@lucene-suggest.external.dependencies@
+@lucene-suggest.internal.test.dependencies@
+@lucene-suggest.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/lucene/test-framework/pom.xml.template
===================================================================
--- dev-tools/maven/lucene/test-framework/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/lucene/test-framework/pom.xml.template	(working copy)
@@ -42,24 +42,10 @@
     <url>${vc-browse-base-url}/${module-directory}</url>
   </scm>
   <dependencies>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>lucene-codecs</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.carrotsearch.randomizedtesting</groupId>
-      <artifactId>randomizedtesting-runner</artifactId>
-    </dependency>
+@lucene-test-framework.internal.dependencies@
+@lucene-test-framework.external.dependencies@
+@lucene-test-framework.internal.test.dependencies@
+@lucene-test-framework.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/pom.xml.template
===================================================================
--- dev-tools/maven/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/pom.xml.template	(working copy)
@@ -45,13 +45,6 @@
     <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
     <java.compat.version>1.7</java.compat.version>
     <jetty.version>8.1.10.v20130312</jetty.version>
-    <slf4j.version>1.6.6</slf4j.version>
-    <log4j.version>1.2.16</log4j.version>
-    <tika.version>1.4</tika.version>
-    <httpcomponents.version>4.2.6</httpcomponents.version>
-    <commons-io.version>2.1</commons-io.version>
-    <restlet.version>2.1.1</restlet.version>
-    <hadoop.version>2.0.5-alpha</hadoop.version>
 
     <!-- RandomizedTesting library system properties -->
     <tests.iters>1</tests.iters>
@@ -142,417 +135,7 @@
   </repositories>
   <dependencyManagement>
     <dependencies>
-      <dependency>
-        <groupId>com.ibm.icu</groupId>
-        <artifactId>icu4j</artifactId>
-        <version>49.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.google.guava</groupId>
-        <artifactId>guava</artifactId>
-        <version>14.0.1</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-codec</groupId>
-        <artifactId>commons-codec</artifactId>
-        <version>1.7</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-cli</groupId>
-        <artifactId>commons-cli</artifactId>
-        <version>1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-digester</groupId>
-        <artifactId>commons-digester</artifactId>
-        <version>1.7</version>
-        <exclusions>
-          <exclusion>
-            <groupId>xml-apis</groupId>
-            <artifactId>xml-apis</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>commons-fileupload</groupId>
-        <artifactId>commons-fileupload</artifactId>
-        <version>1.2.1</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-io</groupId>
-        <artifactId>commons-io</artifactId>
-        <version>${commons-io.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>joda-time</groupId>
-        <artifactId>joda-time</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient</artifactId>
-        <version>${httpcomponents.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpmime</artifactId>
-        <version>${httpcomponents.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.noggit</groupId>
-        <artifactId>noggit</artifactId>
-        <version>0.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
-        <artifactId>concurrentlinkedhashmap-lru</artifactId>
-        <version>1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sun.jersey</groupId>
-        <artifactId>jersey-core</artifactId>
-        <version>1.16</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-lang</groupId>
-        <artifactId>commons-lang</artifactId>
-        <version>2.6</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-logging</groupId>
-        <artifactId>commons-logging</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>hsqldb</groupId>
-        <artifactId>hsqldb</artifactId>
-        <version>1.8.0.10</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta-regexp</groupId>
-        <artifactId>jakarta-regexp</artifactId>
-        <version>1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.activation</groupId>
-        <artifactId>activation</artifactId>
-        <version>1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.mail</groupId>
-        <artifactId>mail</artifactId>
-        <version>1.4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>jline</groupId>
-        <artifactId>jline</artifactId>
-        <version>0.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>4.10</version>
-        <exclusions>
-          <exclusion>
-            <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-core</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr-runtime</artifactId>
-        <version>3.5</version>
-        <!-- these are dependencies to compile antlr-runtime itself -->
-        <exclusions>
-          <exclusion>
-            <groupId>antlr</groupId>
-            <artifactId>antlr</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.antlr</groupId>
-            <artifactId>stringtemplate</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.ow2.asm</groupId>
-        <artifactId>asm</artifactId>
-        <version>4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.ow2.asm</groupId>
-        <artifactId>asm-commons</artifactId>
-        <version>4.1</version>
-        <exclusions>
-          <exclusion>
-            <groupId>org.ow2.asm</groupId>
-            <artifactId>asm-tree</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.ant</groupId>
-        <artifactId>ant</artifactId>
-        <version>1.8.2</version>
-        <exclusions>
-          <exclusion>
-            <groupId>org.apache.ant</groupId>
-            <artifactId>ant-launcher</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-compress</artifactId>
-        <version>1.4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>net.arnx</groupId>
-        <artifactId>jsonic</artifactId>
-        <version>1.2.7</version>
-      </dependency>
-      <dependency>
-        <groupId>com.cybozu.labs</groupId>
-        <artifactId>langdetect</artifactId>
-        <version>1.1-20120112</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derby</artifactId>
-        <version>10.9.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.hadoop</groupId>
-        <artifactId>hadoop-annotations</artifactId>
-        <version>${hadoop.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.hadoop</groupId>
-        <artifactId>hadoop-auth</artifactId>
-        <version>${hadoop.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.hadoop</groupId>
-        <artifactId>hadoop-common</artifactId>
-        <version>${hadoop.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.hadoop</groupId>
-        <artifactId>hadoop-common</artifactId>
-        <version>${hadoop.version}</version>
-        <classifier>tests</classifier>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.hadoop</groupId>
-        <artifactId>hadoop-hdfs</artifactId>
-        <version>${hadoop.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.hadoop</groupId>
-        <artifactId>hadoop-hdfs</artifactId>
-        <version>${hadoop.version}</version>
-        <classifier>tests</classifier>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tika</groupId>
-        <artifactId>tika-core</artifactId>
-        <version>${tika.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tika</groupId>
-        <artifactId>tika-parsers</artifactId>
-        <version>${tika.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>com.adobe.xmp</groupId>
-            <artifactId>xmpcore</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-stax-api_1.0_spec</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.gagravarr</groupId>
-            <artifactId>vorbis-java-core</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.ow2.asm</groupId>
-            <artifactId>asm-debug-all</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.aspectj</groupId>
-            <artifactId>aspectjrt</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.uima</groupId>
-        <artifactId>AlchemyAPIAnnotator</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.uima</groupId>
-        <artifactId>OpenCalaisAnnotator</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.uima</groupId>
-        <artifactId>Tagger</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.uima</groupId>
-        <artifactId>WhitespaceTokenizer</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.uima</groupId>
-        <artifactId>uimaj-core</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.velocity</groupId>
-        <artifactId>velocity</artifactId>
-        <version>1.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.velocity</groupId>
-        <artifactId>velocity-tools</artifactId>
-        <version>2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.zookeeper</groupId>
-        <artifactId>zookeeper</artifactId>
-        <version>3.4.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.carrot2</groupId>
-        <artifactId>carrot2-mini</artifactId>
-        <version>3.8.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.carrot2</groupId>
-        <artifactId>morfologik-polish</artifactId>
-        <version>1.7.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.woodstox</groupId>
-        <artifactId>wstx-asl</artifactId>
-        <version>3.2.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.easymock</groupId>
-        <artifactId>easymock</artifactId>
-        <version>3.0</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-server</artifactId>
-        <version>${jetty.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-servlet</artifactId>
-        <version>${jetty.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-util</artifactId>
-        <version>${jetty.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-webapp</artifactId>
-        <version>${jetty.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jetty</artifactId>
-        <version>6.1.26</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jetty-util</artifactId>
-        <version>6.1.26</version>
-      </dependency>
-      <dependency>
-        <groupId>org.restlet.jee</groupId>
-        <artifactId>org.restlet</artifactId>
-        <version>${restlet.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.restlet.jee</groupId>
-        <artifactId>org.restlet.ext.servlet</artifactId>
-        <version>${restlet.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>jcl-over-slf4j</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>jul-to-slf4j</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-api</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-log4j12</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>log4j</groupId>
-        <artifactId>log4j</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.orbit</groupId>
-        <artifactId>javax.servlet</artifactId>
-        <version>3.0.0.v201112011016</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>servlet-api</artifactId>
-        <version>2.4</version>
-      </dependency>
-      <dependency>
-        <groupId>com.spatial4j</groupId>
-        <artifactId>spatial4j</artifactId>
-        <version>0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>xerces</groupId>
-        <artifactId>xercesImpl</artifactId>
-        <version>2.9.1</version>
-        <exclusions>
-          <exclusion>
-            <groupId>xml-apis</groupId>
-            <artifactId>xml-apis</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>com.carrotsearch.randomizedtesting</groupId>
-        <artifactId>randomizedtesting-runner</artifactId>
-        <version>2.0.10</version>
-      </dependency>
+@lucene.solr.dependency.management@
     </dependencies>
   </dependencyManagement>
   <prerequisites>
Index: dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/analysis-extras/pom.xml.template	(working copy)
@@ -48,31 +48,17 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-analyzers-icu</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <!-- SOLR-3263: Test scope dep is required to avoid jar signing conflicts -->
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <scope>test</scope>
-    </dependency>
+@solr-analysis-extras.internal.dependencies@
+@solr-analysis-extras.external.dependencies@
+@solr-analysis-extras.internal.test.dependencies@
+@solr-analysis-extras.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/contrib/clustering/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/clustering/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/clustering/pom.xml.template	(working copy)
@@ -48,42 +48,17 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.carrot2</groupId>
-      <artifactId>carrot2-mini</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>jfree</groupId>
-          <artifactId>jcommon</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.commons</groupId>
-          <artifactId>commons-math</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.uncommons.maths</groupId>
-          <artifactId>uncommons-maths</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>xpp3</groupId>
-          <artifactId>xpp3</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
+@solr-clustering.internal.dependencies@
+@solr-clustering.external.dependencies@
+@solr-clustering.internal.test.dependencies@
+@solr-clustering.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/dataimporthandler/pom.xml.template	(working copy)
@@ -48,35 +48,17 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.easymock</groupId>
-      <artifactId>easymock</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>hsqldb</groupId>
-      <artifactId>hsqldb</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.derby</groupId>
-      <artifactId>derby</artifactId>
-      <scope>test</scope>
-    </dependency>
+@solr-dataimporthandler.internal.dependencies@
+@solr-dataimporthandler.external.dependencies@
+@solr-dataimporthandler.internal.test.dependencies@
+@solr-dataimporthandler.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/dataimporthandler-extras/pom.xml.template	(working copy)
@@ -48,44 +48,24 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-dataimporthandler</artifactId>
       <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-dataimporthandler</artifactId>
-      <version>${project.version}</version>
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>javax.activation</groupId>
-      <artifactId>activation</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>javax.mail</groupId>
-      <artifactId>mail</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tika</groupId>
-      <artifactId>tika-parsers</artifactId>
-    </dependency>
+@solr-dataimporthandler-extras.internal.dependencies@
+@solr-dataimporthandler-extras.external.dependencies@
+@solr-dataimporthandler-extras.internal.test.dependencies@
+@solr-dataimporthandler-extras.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/contrib/extraction/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/extraction/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/extraction/pom.xml.template	(working copy)
@@ -51,38 +51,17 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>com.ibm.icu</groupId>
-      <artifactId>icu4j</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tika</groupId>
-      <artifactId>tika-parsers</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>xerces</groupId>
-      <artifactId>xercesImpl</artifactId>
-    </dependency>
-    <dependency>
-      <!-- SOLR-3263: Test scope dep is required to avoid jar signing conflicts -->
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <scope>test</scope>
-    </dependency>
+@solr-extraction.internal.dependencies@
+@solr-extraction.external.dependencies@
+@solr-extraction.internal.test.dependencies@
+@solr-extraction.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/contrib/langid/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/langid/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/langid/pom.xml.template	(working copy)
@@ -52,38 +52,17 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>net.arnx</groupId>
-      <artifactId>jsonic</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.cybozu.labs</groupId>
-      <artifactId>langdetect</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tika</groupId>
-      <artifactId>tika-parsers</artifactId>
-    </dependency>
-    <dependency>
-      <!-- SOLR-3263: Test scope dep is required to avoid jar signing conflicts -->
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <scope>test</scope>
-    </dependency>
+@solr-langid.internal.dependencies@
+@solr-langid.external.dependencies@
+@solr-langid.internal.test.dependencies@
+@solr-langid.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/contrib/uima/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/uima/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/uima/pom.xml.template	(working copy)
@@ -48,61 +48,17 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-analyzers-uima</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>AlchemyAPIAnnotator</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>commons-digester</groupId>
-          <artifactId>commons-digester</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>OpenCalaisAnnotator</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>Tagger</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>WhitespaceTokenizer</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-core</artifactId>
-    </dependency>
-    <dependency>
-      <!-- SOLR-3263: Test scope dep is required to avoid jar signing conflicts -->
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <scope>test</scope>
-    </dependency>
+@solr-uima.internal.dependencies@
+@solr-uima.external.dependencies@
+@solr-uima.internal.test.dependencies@
+@solr-uima.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/contrib/velocity/pom.xml.template
===================================================================
--- dev-tools/maven/solr/contrib/velocity/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/contrib/velocity/pom.xml.template	(working copy)
@@ -48,82 +48,17 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.velocity</groupId>
-      <artifactId>velocity</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>oro</groupId>
-          <artifactId>oro</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.velocity</groupId>
-      <artifactId>velocity-tools</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>commons-chain</groupId>
-          <artifactId>commons-chain</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-digester</groupId>
-          <artifactId>commons-digester</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-validator</groupId>
-          <artifactId>commons-validator</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>dom4j</groupId>
-          <artifactId>dom4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>oro</groupId>
-          <artifactId>oro</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>sslext</groupId>
-          <artifactId>sslext</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.struts</groupId>
-          <artifactId>struts-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.struts</groupId>
-          <artifactId>struts-taglib</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.struts</groupId>
-          <artifactId>struts-tiles</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <!-- SOLR-3263: Test scope dep is required to avoid jar signing conflicts -->
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <scope>test</scope>
-    </dependency>
+@solr-velocity.internal.dependencies@
+@solr-velocity.external.dependencies@
+@solr-velocity.internal.test.dependencies@
+@solr-velocity.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: dev-tools/maven/solr/core/src/java/pom.xml.template
===================================================================
--- dev-tools/maven/solr/core/src/java/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/core/src/java/pom.xml.template	(working copy)
@@ -42,340 +42,8 @@
     <url>${vc-browse-base-url}/${module-directory}</url>
   </scm>
   <dependencies>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-solrj</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-codecs</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-analyzers-common</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-analyzers-kuromoji</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-analyzers-morfologik</artifactId>
-      <version>${project.version}</version>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-analyzers-phonetic</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-highlighter</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-memory</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-misc</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-join</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-queryparser</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.lucene</groupId>
-          <artifactId>lucene-sandbox</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-spatial</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-suggest</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.lucene</groupId>
-          <artifactId>lucene-expressions</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-grouping</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.lucene</groupId>
-      <artifactId>lucene-queries</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
-      <artifactId>concurrentlinkedhashmap-lru</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>commons-codec</groupId>
-      <artifactId>commons-codec</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>commons-cli</groupId>
-      <artifactId>commons-cli</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>commons-fileupload</groupId>
-      <artifactId>commons-fileupload</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>joda-time</groupId>
-      <artifactId>joda-time</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-annotations</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-auth</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet.jsp</groupId>
-          <artifactId>jsp-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.commons</groupId>
-          <artifactId>commons-math</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>xmlenc</groupId>
-          <artifactId>xmlenc</artifactId>                                  
-        </exclusion>
-        <exclusion>
-          <groupId>commons-configuration</groupId>
-          <artifactId>commons-configuration</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-httpclient</groupId>
-          <artifactId>commons-httpclient</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-net</groupId>
-          <artifactId>commons-net</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-json</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-server</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty-util</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-compiler</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-runtime</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-el</groupId>
-          <artifactId>commons-el</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>net.java.dev.jets3t</groupId>
-          <artifactId>jets3t</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-digester</groupId>
-          <artifactId>commons-digester</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-beanutils</groupId>
-          <artifactId>commons-beanutils-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-core-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-mapper-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.avro</groupId>
-          <artifactId>avro</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>net.sf.kosmosfs</groupId>
-          <artifactId>kfs</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.jcraft</groupId>
-          <artifactId>jsch</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet.jsp</groupId>
-          <artifactId>jsp-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-server</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-core-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-mapper-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty-util</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-runtime</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>xmlenc</groupId>
-          <artifactId>xmlenc</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-daemon</groupId>
-          <artifactId>commons-daemon</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.restlet.jee</groupId>
-      <artifactId>org.restlet</artifactId>
-      <version>${restlet.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.restlet.jee</groupId>
-      <artifactId>org.restlet.ext.servlet</artifactId>
-      <version>${restlet.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>commons-lang</groupId>
-      <artifactId>commons-lang</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-      <optional>true</optional> <!-- Only used for tests and one command-line utility: JettySolrRunner -->
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-util</artifactId>
-      <optional>true</optional> <!-- Only used for tests and one command-line utility: JettySolrRunner -->
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-webapp</artifactId>
-      <optional>true</optional> <!-- Only used for tests and one command-line utility: JettySolrRunner -->
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <!-- SOLR-3263: Provided scope is required to avoid jar signing conflicts -->
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpmime</artifactId>
-    </dependency>
+@solr-core.internal.dependencies@
+@solr-core.external.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}</sourceDirectory>
Index: dev-tools/maven/solr/core/src/test/pom.xml.template
===================================================================
--- dev-tools/maven/solr/core/src/test/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/core/src/test/pom.xml.template	(working copy)
@@ -42,168 +42,20 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.easymock</groupId>
-      <artifactId>easymock</artifactId>
+      <groupId>org.apache.solr</groupId>
+      <artifactId>solr-core</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <classifier>tests</classifier>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.commons</groupId>
-          <artifactId>commons-math</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>xmlenc</groupId>
-          <artifactId>xmlenc</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-httpclient</groupId>
-          <artifactId>commons-httpclient</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-net</groupId>
-          <artifactId>commons-net</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-json</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-server</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-compiler</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-runtime</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-el</groupId>
-          <artifactId>commons-el</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>net.java.dev.jets3t</groupId>
-          <artifactId>jets3t</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-digester</groupId>
-          <artifactId>commons-digester</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-core-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-mapper-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.avro</groupId>
-          <artifactId>avro</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>net.sf.kosmosfs</groupId>
-          <artifactId>kfs</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.jcraft</groupId>
-          <artifactId>jsch</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-beanutils</groupId>
-          <artifactId>commons-beanutils-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs</artifactId>
-      <classifier>tests</classifier>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-server</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-core-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.jackson</groupId>
-          <artifactId>jackson-mapper-asl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-runtime</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>xmlenc</groupId>
-          <artifactId>xmlenc</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-daemon</groupId>
-          <artifactId>commons-daemon</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <!-- Jetty 6 required for Hadoop DfsMiniCluster -->
-    <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty</artifactId>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.mortbay.jetty</groupId>
-      <artifactId>jetty-util</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>dom4j</groupId>
-      <artifactId>dom4j</artifactId>
-      <version>1.6.1</version>
-      <scope>test</scope>
-    </dependency>
+@solr-core.internal.test.dependencies@
+@solr-core.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory/>
Index: dev-tools/maven/solr/solrj/src/java/pom.xml.template
===================================================================
--- dev-tools/maven/solr/solrj/src/java/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/solrj/src/java/pom.xml.template	(working copy)
@@ -42,76 +42,8 @@
     <url>${vc-browse-base-url}/${module-directory}</url>
   </scm>
   <dependencies>
-    <dependency>
-      <groupId>org.apache.zookeeper</groupId>
-      <artifactId>zookeeper</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>javax.jms</groupId>
-          <artifactId>jms</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jmx</groupId>
-          <artifactId>jmxri</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jdmk</groupId>
-          <artifactId>jmxtools</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>jline</groupId>
-          <artifactId>jline</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.noggit</groupId>
-      <artifactId>noggit</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-      <!-- HttpSolrServer requires this dependency. -->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpmime</artifactId>
-      <!-- HttpSolrServer requires this dependency. -->
-    </dependency>
-    <!-- Technically, this is optional in SolrJ; but it's fast. SOLR-2852 -->
-    <dependency>
-      <groupId>org.codehaus.woodstox</groupId>
-      <artifactId>wstx-asl</artifactId>
-      <scope>runtime</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>stax</groupId>
-          <artifactId>stax-api</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
+@solr-solrj.internal.dependencies@
+@solr-solrj.external.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}</sourceDirectory>
Index: dev-tools/maven/solr/solrj/src/test/pom.xml.template
===================================================================
--- dev-tools/maven/solr/solrj/src/test/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/solrj/src/test/pom.xml.template	(working copy)
@@ -42,15 +42,20 @@
       <!-- dependencies are always ordered before inherited dependencies.       -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.apache.solr</groupId>
       <artifactId>solr-test-framework</artifactId>
-      <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.solr</groupId>
+      <artifactId>solr-solrj</artifactId>
+      <scope>test</scope>
+    </dependency>
+@solr-solrj.internal.test.dependencies@
+@solr-solrj.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory/>
Index: dev-tools/maven/solr/test-framework/pom.xml.template
===================================================================
--- dev-tools/maven/solr/test-framework/pom.xml.template	(revision 1535303)
+++ dev-tools/maven/solr/test-framework/pom.xml.template	(working copy)
@@ -47,44 +47,11 @@
       <!-- lucene-test-framework dependency must come before lucene-core -->
       <groupId>org.apache.lucene</groupId>
       <artifactId>lucene-test-framework</artifactId>
-      <version>${project.version}</version>
     </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>solr-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <!-- SOLR-3263: Provided scope is required to avoid jar signing conflicts -->
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlet</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-util</artifactId>
-    </dependency>
-
-    <!-- If your tests don't use BaseDistributedSearchTestCase or SolrJettyTestBase,
-         you can exclude the two Jetty dependencies below. -->
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-webapp</artifactId>
-      <scope>runtime</scope>
-    </dependency>
+@solr-test-framework.internal.dependencies@
+@solr-test-framework.external.dependencies@
+@solr-test-framework.internal.test.dependencies@
+@solr-test-framework.external.test.dependencies@
   </dependencies>
   <build>
     <sourceDirectory>${module-path}/src/java</sourceDirectory>
Index: lucene/analysis/build.xml
===================================================================
--- lucene/analysis/build.xml	(revision 1535303)
+++ lucene/analysis/build.xml	(working copy)
@@ -141,5 +141,9 @@
   <target name="regenerate">
     <forall-analyzers target="regenerate"/>
   </target>
+  
+  <target name="-append-internal-dependency-properties">
+    <forall-analyzers target="-append-internal-dependency-properties"/>
+  </target>
 	
 </project>
Index: lucene/analysis/uima/build.xml
===================================================================
--- lucene/analysis/uima/build.xml	(revision 1535303)
+++ lucene/analysis/uima/build.xml	(working copy)
@@ -34,10 +34,14 @@
 
   <path id="classpath">
     <pathelement path="${analyzers-common.jar}"/>
-    <pathelement path="${tests.userdir}"/>
     <path refid="uimajars"/>
     <path refid="base.classpath"/>
   </path>
+  
+  <path id="test.classpath">
+    <path refid="test.base.classpath"/>
+    <pathelement path="${tests.userdir}"/>
+  </path>
 
   <target name="compile-core" depends="jar-analyzers-common, common.compile-core" />
 </project>
Index: lucene/build.xml
===================================================================
--- lucene/build.xml	(revision 1535303)
+++ lucene/build.xml	(working copy)
@@ -174,6 +174,31 @@
     <lib-versions-check-macro dir="${common.dir}/.." centralized.versions.file="${common.dir}/ivy-versions.properties"/>
   </target>
 
+  <property name="maven.dependencies.filters.file" location="${common.build.dir}/maven.dependencies.filters.properties"/>
+
+  <target name="-get-maven-poms" depends="-get-maven-dependencies">
+    <property name="maven-build-dir" location="${common.dir}/../maven-build"/>
+    <copy todir="${maven-build-dir}" overwrite="true" encoding="UTF-8">
+      <fileset dir="${common.dir}/../dev-tools/maven"/>
+      <filterset begintoken="@" endtoken="@">
+        <filter token="version" value="${version}"/>
+      </filterset>
+      <filterset>
+        <filtersfile file="${maven.dependencies.filters.file}"/>
+      </filterset>
+      <globmapper from="*.template" to="*"/>
+    </copy>
+  </target>
+
+  <target name="-get-maven-dependencies" depends="compile-tools,resolve,load-custom-tasks">
+    <ant dir="${common.dir}/.." target="-append-internal-dependency-properties" inheritall="false"/>
+    <get-maven-dependencies-macro 
+        dir="${common.dir}/.." 
+        centralized.versions.file="${common.dir}/ivy-versions.properties"
+        internal.dependency.properties.file="${common.build.dir}/internal.dependency.properties"
+        maven.dependencies.filters.file="${maven.dependencies.filters.file}"/>
+  </target>
+  
   <target name="check-forbidden-apis" depends="compile-tools,compile-test,install-forbidden-apis,-forbidden-apis-classpath,-check-forbidden-jdk-apis,-check-forbidden-test-apis,-check-system-out" description="Check forbidden API calls in compiled class files"/>
 
   <!-- TODO: Make the forbidden API checks per module! -->
@@ -631,4 +656,11 @@
     <modules-crawl target="regenerate"/>
   </target>
 
+  <target name="-append-internal-dependency-properties">
+    <sequential>
+      <ant dir="core" target="common.-append-internal-dependency-properties" inheritall="false"/>
+      <ant dir="test-framework" target="-append-internal-dependency-properties" inheritall="false"/>
+      <modules-crawl target="-append-internal-dependency-properties" failonerror="true"/>
+    </sequential>
+  </target>
 </project>
Index: lucene/common-build.xml
===================================================================
--- lucene/common-build.xml	(revision 1535303)
+++ lucene/common-build.xml	(working copy)
@@ -1470,10 +1470,28 @@
       </excludes>
     </m2-validate-dependencies>
   </target>
+  
+  <target name="-append-internal-dependency-properties">
+    <sequential>
+      <property name="top.level.dir" location="${common.dir}/.."/>
+      <pathconvert property="classpath.list" pathsep="," dirsep="/" setonempty="true">
+        <path refid="classpath"/>
+        <globmapper from="${top.level.dir}/*" to="*" handledirsep="true"/>
+      </pathconvert>
+      <pathconvert property="test.classpath.list" pathsep="," dirsep="/" setonempty="true">
+        <path refid="test.classpath"/>
+        <globmapper from="${top.level.dir}/*" to="*" handledirsep="true"/>
+      </pathconvert>
+      <echo append="true" file="${common.build.dir}/internal.dependency.properties">
+${ant.project.name}.internal.dependencies=${classpath.list}
+${ant.project.name}.internal.test.dependencies=${test.classpath.list}
+      </echo>
+    </sequential>
+  </target>
 
   <target name="filter-pom-templates" unless="filtered.pom.templates.uptodate">
     <mkdir dir="${filtered.pom.templates.dir}"/>
-    <copy todir="${common.dir}/build/poms" overwrite="true" encoding="UTF-8">
+    <copy todir="${common.dir}/build/poms" overwrite="true" encoding="UTF-8" filtering="on">
       <fileset dir="${common.dir}/../dev-tools/maven"/>
       <filterset begintoken="@" endtoken="@">
         <filter token="version" value="${version}"/>
Index: lucene/test-framework/build.xml
===================================================================
--- lucene/test-framework/build.xml	(revision 1535303)
+++ lucene/test-framework/build.xml	(working copy)
@@ -31,6 +31,8 @@
     <path refid="ant-path"/>
   </path>
 
+  <path id="test.classpath"/>
+
   <!-- 
       Specialize compile-core to depend on lucene-core and lucene-codecs compilation.
    -->
Index: lucene/tools/custom-tasks.xml
===================================================================
--- lucene/tools/custom-tasks.xml	(revision 1535303)
+++ lucene/tools/custom-tasks.xml	(working copy)
@@ -109,4 +109,34 @@
       </libversions>
     </sequential>
   </macrodef>
+
+  <macrodef name="get-maven-dependencies-macro">
+    <attribute name="dir"/>
+    <attribute name="centralized.versions.file"/>
+    <attribute name="internal.dependency.properties.file"/>
+    <attribute name="maven.dependencies.filters.file"/>
+    <sequential>
+      <!-- 
+        Verify that the '/org/name' keys in ivy-versions.properties are sorted
+        lexically and are neither duplicates nor orphans, and that all
+         dependencies in all ivy.xml files use rev="${/org/name}" format.
+        -->
+      <echo>Get maven dependencies called under: @{dir}</echo>
+      <mvndeps centralizedVersionsFile="@{centralized.versions.file}"
+               internalDependencyPropertiesFile="@{internal.dependency.properties.file}"
+               mavenDependenciesFiltersFile="@{maven.dependencies.filters.file}">
+        <fileset dir="@{dir}">
+          <include name="**/ivy.xml" />
+          <exclude name="**/solr/example/**"/>
+          <!-- Speed up scanning a bit. -->
+          <exclude name="**/.git/**" />
+          <exclude name="**/.svn/**" />
+          <exclude name="**/bin/**" />
+          <exclude name="**/build/**" />
+          <exclude name="**/dist/**" />
+          <exclude name="**/src/**" />
+        </fileset>
+      </mvndeps>
+    </sequential>
+  </macrodef>
 </project>
Index: lucene/tools/src/java/lucene-solr.antlib.xml
===================================================================
--- lucene/tools/src/java/lucene-solr.antlib.xml	(revision 1535303)
+++ lucene/tools/src/java/lucene-solr.antlib.xml	(working copy)
@@ -21,4 +21,7 @@
     <taskdef
         name="libversions"
         classname="org.apache.lucene.validation.LibVersionsCheckTask" />
+    <taskdef
+        name="mvndeps"
+        classname="org.apache.lucene.dependencies.GetMavenDependenciesTask" />
 </antlib> 
Index: lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java
===================================================================
--- lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java	(revision 0)
+++ lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java	(working copy)
@@ -0,0 +1,632 @@
+package org.apache.lucene.dependencies;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.ResourceCollection;
+import org.apache.tools.ant.types.resources.FileResource;
+import org.apache.tools.ant.types.resources.Resources;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.Stack;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.xml.parsers.ParserConfigurationException;
+
+/**
+ * An Ant task to verify that the '/org/name' keys in ivy-versions.properties
+ * are sorted lexically and are neither duplicates nor orphans, and that all
+ * dependencies in all ivy.xml files use rev="${/org/name}" format.
+ */
+public class GetMavenDependenciesTask extends Task {
+  private static final String IVY_USER_DIR_PROPERTY_KEY = "ivy.default.ivy.user.dir";
+  private static final Pattern PROPERTY_PREFIX_FROM_IVY_XML_FILE_PATTERN = Pattern.compile
+      ("[/\\\\](lucene|solr)[/\\\\](?:(?:contrib|(analysis))[/\\\\])?([^/\\\\]+)[/\\\\]ivy\\.xml");
+  private static final Pattern COORDINATE_KEY_PATTERN = Pattern.compile("/([^/]+)/([^/]+)");
+  private static final Pattern INTERNAL_DEPENDENCY_COORDINATE_KEY_PATTERN
+      = Pattern.compile("(.*?)\\.internal(\\.test)?\\.dependencies");
+  // lucene/build/core/classes/java
+  private static final Pattern COMPILATION_OUTPUT_DIRECTORY_PATTERN 
+      = Pattern.compile("(lucene|solr)/build/(?:contrib/)?(.*)/classes/(?:java|test)");
+  // lucene/build/analysis/common/lucene-analyzers-common-5.0-SNAPSHOT.jar
+  private static final Pattern JAR_PATTERN 
+      = Pattern.compile(".*(lucene|solr)([^/]*?)-(?:\\d\\.)+\\d(?:-SNAPSHOT)?\\.jar");
+  private static final String UNWANTED_INTERNAL_DEPENDENCIES
+      = "/(?:test-)?lib/|test-framework/classes/java|/test-files|/resources";
+  private static final String DEPENDENCY_MANAGEMENT_PROPERTY = "lucene.solr.dependency.management";
+  private static final Properties allProperties = new Properties();
+  private static final Set<String> skipArtifactTypes = new HashSet<String>();
+  private static final Set<String> modulesWithSeparateCompileAndTestPOMs = new HashSet<String>();
+  private static final Set<String> optionalExternalDependencies = new HashSet<String>();
+  static {
+    // Add artifact types here that should not be maven dependencies
+    skipArtifactTypes.addAll(Arrays.asList(".tar.gz"));
+    
+    // Add modules here that have split compile and test POMs
+    // - they need compile-scope deps to also be test-scope deps.
+    modulesWithSeparateCompileAndTestPOMs.addAll
+        (Arrays.asList("lucene-core", "lucene-codecs", "solr-core", "solr-solrj"));
+    
+    // Add external dependencies here that should be optional (i.e., not invoke Maven's transitive dep mechanism).
+    // Format is "groupId:artifactId"
+    optionalExternalDependencies.addAll(Arrays.asList
+        ("org.slf4j:jcl-over-slf4j", "org.slf4j:jul-to-slf4j", "org.slf4j:slf4j-api", "org.slf4j:slf4j-log4j12"));
+  }
+
+  private SortedMap<String,SortedSet<String>> internalCompileScopeDependencies = new TreeMap<String,SortedSet<String>>();
+  private Map<String,SortedSet<String>> externalDependencies = new HashMap<String,SortedSet<String>>();
+  private Set<String> skippedArtifacts = new HashSet<String>();
+  private File ivyCacheDir;
+
+
+  /**
+   * All ivy.xml files to get external dependencies from.
+   */
+  private Resources ivyXmlResources = new Resources();
+
+  /**
+   * Centralized Ivy versions properties file
+   */
+  private File centralizedVersionsFile;
+
+  /**
+   * Internal dependency properties file, generated by task -append-internal-dependency-properties.
+   */
+  private File internalDependencyPropertiesFile;
+
+  /**
+   * Where all properties are written, to be used to filter POM templates when copying them.
+   */
+  private File mavenDependenciesFiltersFile;
+
+  /**
+   * A logging level associated with verbose logging.
+   */
+  private int verboseLevel = Project.MSG_VERBOSE;
+  
+  /**
+   * Adds a set of ivy.xml resources to check.
+   */
+  public void add(ResourceCollection rc) {
+    ivyXmlResources.add(rc);
+  }
+
+  public void setVerbose(boolean verbose) {
+    verboseLevel = (verbose ? Project.MSG_INFO : Project.MSG_VERBOSE);
+  }
+
+  public void setCentralizedVersionsFile(File file) {
+    centralizedVersionsFile = file;
+  }
+
+  public void setInternalDependencyPropertiesFile(File file) {
+    internalDependencyPropertiesFile = file;
+  }
+  
+  public void setMavenDependenciesFiltersFile(File file) {
+    mavenDependenciesFiltersFile = file;
+  }
+
+  /**
+   * Write out a filter file to be used when copying POMs.
+   */
+  @Override
+  public void execute() throws BuildException {
+    String ivyUserDirName = getProject().getUserProperty(IVY_USER_DIR_PROPERTY_KEY);
+    if (null == ivyUserDirName) {
+      ivyUserDirName = getProject().getProperty(IVY_USER_DIR_PROPERTY_KEY);
+      if (null == ivyUserDirName) {
+        ivyUserDirName = System.getProperty("user.home") + "/.ivy2";
+      }
+    }
+    File ivyUserDir = new File(ivyUserDirName);
+    if ( ! ivyUserDir.exists()) {
+      throw new BuildException("Ivy user dir does not exist: '" + ivyUserDir.getPath() + "'");
+    }
+    ivyCacheDir = new File(ivyUserDir, "cache");
+    if ( ! ivyCacheDir.exists()) {
+      throw new BuildException("Ivy cache dir does not exist: '" + ivyCacheDir.getPath() + "'");
+    }
+
+    setInternalDependencyProperties();            // side-effect: all modules' internal deps are recorded
+    setExternalDependencyProperties();            // side-effect: all modules' external deps are recorded
+    setGrandparentDependencyManagementProperty(); // uses deps recorded in above two methods
+    Writer writer = null;
+    try {
+      FileOutputStream outputStream = new FileOutputStream(mavenDependenciesFiltersFile);
+      writer = new OutputStreamWriter(outputStream, "ISO-8859-1");
+      allProperties.store(writer, null);
+    } catch (FileNotFoundException e) {
+      throw new BuildException("Can't find file: '" + mavenDependenciesFiltersFile.getPath() + "'", e);
+    } catch (UnsupportedEncodingException e) {
+      throw new BuildException(e);
+    } catch (IOException e) {
+      throw new BuildException("Exception writing out '" + mavenDependenciesFiltersFile.getPath() + "'", e);
+    } finally {
+      if (null != writer) {
+        try {
+          writer.close();
+        } catch (IOException e) {
+          // ignore
+        }
+      }
+    }
+  }
+
+  /**
+   * Collects external dependencies from each ivy.xml file and sets
+   * external dependency properties to be inserted into modules' POMs. 
+   */
+  private void setExternalDependencyProperties() {
+    @SuppressWarnings("unchecked")
+    Iterator<Resource> iter = (Iterator<Resource>)ivyXmlResources.iterator();
+    while (iter.hasNext()) {
+      final Resource resource = iter.next();
+      if ( ! resource.isExists()) {
+        throw new BuildException("Resource does not exist: " + resource.getName());
+      }
+      if ( ! (resource instanceof FileResource)) {
+        throw new BuildException("Only filesystem resources are supported: "
+            + resource.getName() + ", was: " + resource.getClass().getName());
+      }
+
+      File ivyXmlFile = ((FileResource)resource).getFile();
+      try {
+        collectExternalDependenciesFromIvyXmlFile(ivyXmlFile);
+      } catch (Exception e) {
+        throw new BuildException("Exception reading file " + ivyXmlFile.getPath(), e);
+      }
+    }
+  }
+
+  /**
+   * Sets the property to be inserted into the grandparent POM's 
+   * &lt;dependencyManagement&gt; section.
+   */
+  private void setGrandparentDependencyManagementProperty() {
+    StringBuilder builder = new StringBuilder();
+    appendInternalDependencies(builder);
+    appendExternalDependencies(builder);
+    builder.setLength(builder.length() - 1); // drop trailing newline
+    allProperties.setProperty(DEPENDENCY_MANAGEMENT_PROPERTY, builder.toString());
+  }
+
+  private void appendInternalDependencies(StringBuilder builder) {
+    for (String artifactId : internalCompileScopeDependencies.keySet()) {
+      List<String> exclusions = new ArrayList<String>();
+      exclusions.addAll(internalCompileScopeDependencies.get(artifactId));
+      exclusions.addAll(externalDependencies.get(artifactId));
+      String groupId = "org.apache." + artifactId.substring(0, artifactId.indexOf('-'));
+      appendDependencyXml(builder, groupId, artifactId, "      ", "${project.version}", false, false, exclusions);
+    }
+  }
+
+  private void appendExternalDependencies(StringBuilder builder) {
+    Properties versions = loadPropertiesFile(centralizedVersionsFile);
+    SortedSet<Map.Entry> sortedEntries = new TreeSet<Map.Entry>(new Comparator<Map.Entry>() {
+      @Override public int compare(Map.Entry o1, Map.Entry o2) {
+        return ((String)o1.getKey()).compareTo((String)o2.getKey());
+      }
+    });
+    sortedEntries.addAll(versions.entrySet());
+    for (Map.Entry entry : sortedEntries) {
+      String key = (String)entry.getKey();
+      Matcher matcher = COORDINATE_KEY_PATTERN.matcher(key);
+      if (matcher.lookingAt()) {
+        String groupId = matcher.group(1);
+        String artifactId = matcher.group(2);
+        if ( ! skippedArtifacts.contains(groupId + ':' + artifactId)) {
+          String version = (String)entry.getValue();
+          List<String> exclusions = getTransitiveDependenciesFromIvyMetadata(groupId, artifactId, version);
+          appendDependencyXml(builder, groupId, artifactId, "      ", version, false, false, exclusions);
+        }
+      }
+    }
+  }
+
+  private List<String> getTransitiveDependenciesFromIvyMetadata(String groupId, String artifactId, String version) {
+    SortedSet<String> dependencies = new TreeSet<String>();
+    XMLReader xmlReader = null;
+    // E.g. ~/.ivy2/cache/xerces/xercesImpl/ivy-2.9.1.xml
+    File ivyXmlFile = new File(new File(new File(ivyCacheDir, groupId), artifactId), "ivy-" + version + ".xml");
+    if ( ! ivyXmlFile.exists()) {
+      throw new BuildException("File not found: " + ivyXmlFile.getPath());
+    }
+    try {
+      xmlReader = XMLReaderFactory.createXMLReader();
+      DependencyCollector dependencyCollector = new DependencyCollector(ivyXmlFile, true);
+      xmlReader.setContentHandler(dependencyCollector);
+      xmlReader.setErrorHandler(dependencyCollector);
+      // To work around a bug in XERCES (XERCESJ-1257), we assume the XML is always UTF8, so we simply provide reader.
+      CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder()
+          .onMalformedInput(CodingErrorAction.REPORT)
+          .onUnmappableCharacter(CodingErrorAction.REPORT);
+      InputStream stream = new FileInputStream(ivyXmlFile);
+      xmlReader.parse(new InputSource(new BufferedReader(new InputStreamReader(stream, decoder))));
+      dependencies.addAll(dependencyCollector.dependencies);
+    } catch (Exception e) {
+      throw new BuildException("Exception reading file " + ivyXmlFile.getPath(), e);
+    }
+    return Arrays.asList(dependencies.toArray(new String[dependencies.size()]));
+  }
+
+  /**
+   * Sets the internal dependencies (test) properties to be inserted 
+   * into modules' POMs.  
+   */
+  private void setInternalDependencyProperties() {
+    Properties internalDependencies = loadPropertiesFile(internalDependencyPropertiesFile);
+    Map<String,SortedSet<String>> testScopeDependencies = new HashMap<String,SortedSet<String>>();
+    Map<String, String> testScopePropertyKeys = new HashMap<String,String>();
+    for (Map.Entry entry : internalDependencies.entrySet()) {
+      String newPropertyKey = (String)entry.getKey();
+      StringBuilder newPropertyValue = new StringBuilder();
+      String value = (String)entry.getValue();
+      Matcher matcher = INTERNAL_DEPENDENCY_COORDINATE_KEY_PATTERN.matcher(newPropertyKey);
+      if ( ! matcher.matches()) {
+        throw new BuildException("Malformed internal dependency property key: '" + newPropertyKey + "'");
+      }
+      String origModule = matcher.group(1);
+      String module = origModule;
+      boolean isTest = null != matcher.group(2);
+      if ( ! newPropertyKey.startsWith("solr-")) { // lucene modules names don't have "lucene-" prepended
+        newPropertyKey = "lucene-" + newPropertyKey; 
+        module = "lucene-" + module;
+      }
+      if (module.equals("solr-cell")) { 
+        module = "solr-extraction";
+        newPropertyKey = module + newPropertyKey.substring("solr-cell".length());
+      }
+      module = module.replace("lucene-analysis-", "lucene-analyzers-");
+      if (isTest) {
+        testScopePropertyKeys.put(module, newPropertyKey);
+      }
+      if (null == value || value.isEmpty()) {
+        allProperties.setProperty(newPropertyKey, "");
+        Map<String,SortedSet<String>> scopedDependencies
+            = isTest ? testScopeDependencies : internalCompileScopeDependencies;
+        scopedDependencies.put(module, new TreeSet<String>());
+      } else {
+        // Lucene analysis modules' build dirs don't include hyphens, but Solr contribs' build dirs do
+        String origModuleDir = origModule.replace("analyzers-", "analysis/");
+        Pattern unwantedInternalDependencies = Pattern.compile
+            ("(?:lucene/build/|solr/build/(?:contrib/)?)" + origModuleDir + "|" + UNWANTED_INTERNAL_DEPENDENCIES);
+        SortedSet<String> sortedDeps = new TreeSet<String>();
+        for (String dependency : value.split(",")) {
+          matcher = unwantedInternalDependencies.matcher(dependency);
+          if (matcher.find()) {
+            continue;  // skip external (/(test-)lib/), and non-jar and unwanted (self) internal deps
+          }
+          StringBuilder artifactId = new StringBuilder();
+          String groupId = "org.apache."; 
+          matcher = COMPILATION_OUTPUT_DIRECTORY_PATTERN.matcher(dependency);
+          if (matcher.matches()) {
+            // Pattern.compile("(lucene|solr)/build/(.*)/classes/java");
+            groupId += matcher.group(1);
+            String artifact = matcher.group(2);
+            artifact = artifact.replace('/', '-');
+            artifact = artifact.replace("analysis-", "analyzers-");
+            if ("lucene".equals(matcher.group(1))) {
+              artifactId.append("lucene-");
+            }
+            artifactId.append(artifact);
+          } else {
+            matcher = JAR_PATTERN.matcher(dependency);
+            if (matcher.matches()) {
+              // Pattern.compile(".*(lucene|solr)([^/]*?)-(?:\\d\\.)+\\d(?:-SNAPSHOT)?\\.jar)")
+              groupId += matcher.group(1);
+              artifactId.append(matcher.group(1));
+              artifactId.append(matcher.group(2));
+            } else {
+              throw new BuildException
+                  ("Malformed internal dependency from '" + newPropertyKey + "': '" + dependency + "'");
+            }
+          }
+          String coordinate = groupId + ':' + artifactId.toString();
+          sortedDeps.add(coordinate);
+        }
+        if (isTest) {  // Don't set test-scope properties until all compile-scope deps have been seen
+          testScopeDependencies.put(module, sortedDeps);
+        } else {
+          internalCompileScopeDependencies.put(module, sortedDeps);
+          for (String dependency : sortedDeps) {
+            int splitPos = dependency.indexOf(':');
+            String groupId = dependency.substring(0, splitPos);
+            String artifactId = dependency.substring(splitPos + 1);
+            appendDependencyXml(newPropertyValue, groupId, artifactId, "    ", null, false, false,  null);
+          }
+          if (newPropertyValue.length() > 0) {
+            newPropertyValue.setLength(newPropertyValue.length() - 1); // drop trailing newline
+          }
+          allProperties.setProperty(newPropertyKey, newPropertyValue.toString());
+        }
+      }
+    }
+    // Now that all compile-scope dependencies have been seen, include only those test-scope
+    // dependencies that are not also compile-scope dependencies.
+    for (Map.Entry<String,SortedSet<String>> entry : testScopeDependencies.entrySet()) {
+      String module = entry.getKey();
+      SortedSet<String> testDeps = entry.getValue();
+      SortedSet<String> compileDeps = internalCompileScopeDependencies.get(module);
+      if (null == compileDeps) {
+        throw new BuildException("Can't find compile scope dependencies for module " + module);
+      }
+      StringBuilder newPropertyValue = new StringBuilder();
+      for (String dependency : testDeps) {
+        // modules with separate compile-scope and test-scope POMs need their compile-scope deps
+        // included in their test-scope deps.
+        if (modulesWithSeparateCompileAndTestPOMs.contains(module) || ! compileDeps.contains(dependency)) {
+          int splitPos = dependency.indexOf(':');
+          String groupId = dependency.substring(0, splitPos);
+          String artifactId = dependency.substring(splitPos + 1);
+          appendDependencyXml(newPropertyValue, groupId, artifactId, "    ", null, true, false, null);
+        }
+      }
+      if (newPropertyValue.length() > 0) {
+        newPropertyValue.setLength(newPropertyValue.length() - 1); // drop trailing newline
+      }
+      allProperties.setProperty(testScopePropertyKeys.get(module), newPropertyValue.toString());
+    }
+  }
+
+  /**
+   * Collect external dependencies from the given ivy.xml file;
+   * return true on success, false on failure.
+   */
+  private void collectExternalDependenciesFromIvyXmlFile(File ivyXmlFile)
+      throws ParserConfigurationException, SAXException, IOException {
+    String module = getModuleName(ivyXmlFile);
+    log("Collecting external dependencies from: " + ivyXmlFile.getPath(), verboseLevel);
+    XMLReader xmlReader = XMLReaderFactory.createXMLReader();
+    DependencyCollector dependencyCollector = new DependencyCollector(ivyXmlFile, false);
+    xmlReader.setContentHandler(dependencyCollector);
+    xmlReader.setErrorHandler(dependencyCollector);
+    // To work around a bug in XERCES (XERCESJ-1257), we assume the XML is always UTF8, so we simply provide reader.
+    CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder()
+        .onMalformedInput(CodingErrorAction.REPORT)
+        .onUnmappableCharacter(CodingErrorAction.REPORT);
+    InputStream stream = new FileInputStream(ivyXmlFile);
+    xmlReader.parse(new InputSource(new BufferedReader(new InputStreamReader(stream, decoder))));
+
+    StringBuilder builder = new StringBuilder();
+    for (String dependency : dependencyCollector.dependencies) {
+      int splitPos = dependency.indexOf(':');
+      String groupId = dependency.substring(0, splitPos);
+      String artifactId = dependency.substring(splitPos + 1);
+      appendDependencyXml(builder, groupId, artifactId, "    ", null, false,
+                          optionalExternalDependencies.contains(dependency), null);
+    }
+    if (builder.length() > 0) {
+      builder.setLength(builder.length() - 1); // drop trailing newline
+    }
+    allProperties.setProperty(module + ".external.dependencies", builder.toString());
+
+    builder.setLength(0);
+    for (String dependency : dependencyCollector.testDependencies) {
+      int splitPos = dependency.indexOf(':');
+      String groupId = dependency.substring(0, splitPos);
+      String artifactId = dependency.substring(splitPos + 1);
+      appendDependencyXml(builder, groupId, artifactId, "    ", null, true, false, null);
+    }
+    if (builder.length() > 0) {
+      builder.setLength(builder.length() - 1); // drop trailing newline
+    }
+    allProperties.setProperty(module + ".external.test.dependencies", builder.toString());
+
+    externalDependencies.put(module, dependencyCollector.dependencies);
+  }
+
+  /**
+   * Extract module name from ivy.xml path.
+   */
+  private String getModuleName(File ivyXmlFile) {
+    String path = ivyXmlFile.getAbsolutePath();
+    Matcher matcher = PROPERTY_PREFIX_FROM_IVY_XML_FILE_PATTERN.matcher(path);
+    if ( ! matcher.find()) {
+      throw new BuildException("Can't get property prefix from ivy.xml path: " + path);
+    }
+    StringBuilder builder = new StringBuilder();
+    builder.append(matcher.group(1));
+    if (null != matcher.group(2)) { // "lucene/analysis/..."
+      builder.append("-analyzers");
+    }
+    builder.append('-');
+    builder.append(matcher.group(3));
+    return builder.toString();
+  }
+
+  /**
+   * Parses the given properties file and returns the resulting Properties.
+   */
+  private Properties loadPropertiesFile(File file) {
+    log("Loading centralized ivy versions from: " + file, verboseLevel);
+    final InputStream stream;
+    try {
+      stream = new FileInputStream(file);
+    } catch (FileNotFoundException e) {
+      throw new BuildException("Properties file does not exist: " + file.getPath());
+    }
+    // Properties files are encoded as Latin-1
+    final Reader reader = new InputStreamReader(stream, Charset.forName("ISO-8859-1"));
+    final Properties properties = new Properties(); 
+    try {
+      properties.load(reader);
+    } catch (IOException e) {
+      throw new BuildException("Exception reading properties file " + file, e);
+    } finally {
+      try {
+        reader.close();
+      } catch (IOException e) {
+        // do nothing
+      }
+    }
+    // Perform non-recursive Ant-like property value interpolation
+    for (Map.Entry entry : properties.entrySet()) {
+      String value = (String)entry.getValue();
+      String key = (String)entry.getKey();
+      if (value.startsWith("${") && value.endsWith("}")) {
+        String lookupKey = value.substring(2, value.length() - 1);
+        String interpolatedValue = properties.getProperty(lookupKey);
+        if (null != interpolatedValue) {
+          properties.setProperty(key, interpolatedValue);
+        }
+      }
+    }
+    return properties;
+  }
+
+  /**
+   * Collect external dependencies from the given ivy.xml file,
+   * then set a property containing XML dependency snippets to be
+   * inserted into the corresponding module's POM(s) (more than one
+   * in case the module has separate compile and test POMs, e.g.
+   * lucene-codecs, solrj, etc.)
+   */
+  private class DependencyCollector extends DefaultHandler {
+    private final File ivyXmlFile;
+    private final Stack<String> tags = new Stack<String>();
+    private final SortedSet<String> dependencies = new TreeSet<String>();
+    private final SortedSet<String> testDependencies = new TreeSet<String>();
+    private final boolean ignoreOptionalAndProvidedDependencies;
+
+    private String org;
+    private String name;
+    private String conf;
+
+    public DependencyCollector(File ivyXmlFile, boolean ignoreOptionalAndProvidedDependencies) {
+      this.ivyXmlFile = ivyXmlFile;
+      this.ignoreOptionalAndProvidedDependencies = ignoreOptionalAndProvidedDependencies;
+    }
+
+    @Override
+    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+      if (localName.equals("dependency") && insideDependenciesTag()) {
+        org = attributes.getValue("org");
+        if (null == org) {
+          throw new BuildException("MISSING 'org' attribute on <dependency> in " + ivyXmlFile.getPath());
+        }
+        name = attributes.getValue("name");
+        if (null == name) {
+          throw new BuildException("MISSING 'name' attribute on <dependency> in " + ivyXmlFile.getPath());
+        }
+        conf = attributes.getValue("conf");
+        if (null == conf) {
+          conf = ""; // default configuration - not test
+        }
+      } else if (localName.equals("artifact") && insideDependencyTag()) {
+        String type = attributes.getValue("type");
+        if (null != type && skipArtifactTypes.contains(type)) {
+          skippedArtifacts.add(org + ':' + name);
+          org = null;
+          name = null;
+          conf = null;
+        }
+      }
+      tags.push(localName);
+    }
+
+    @Override
+    public void endElement (String uri, String localName, String qName) throws SAXException {
+      tags.pop();
+      if (localName.equals("dependency") && insideDependenciesTag() && null != org && null != name) {
+        if (ignoreOptionalAndProvidedDependencies 
+            && (null == conf || ( ! conf.startsWith("optional->") && ! conf.startsWith("provided->")))) {
+          SortedSet<String> deps = conf.contains("test") ? testDependencies : dependencies;
+          deps.add(org + ':' + name);
+        }
+      }
+    }
+    
+    private boolean insideDependenciesTag() {
+      return tags.size() == 2 && tags.get(0).equals("ivy-module") && tags.get(1).equals("dependencies");
+    }
+
+    private boolean insideDependencyTag() {
+      return tags.size() == 3 && tags.get(0).equals("ivy-module") 
+          && tags.get(1).equals("dependencies") && tags.get(2).equals("dependency");
+    }
+  }
+
+  private void appendDependencyXml(StringBuilder builder, String groupId, String artifactId, 
+                                   String indent, String version, boolean isTestDependency, 
+                                   boolean isOptional, List<String> exclusions) {
+    builder.append(indent).append("<dependency>\n");
+    builder.append(indent).append("  <groupId>").append(groupId).append("</groupId>\n");
+    builder.append(indent).append("  <artifactId>").append(artifactId).append("</artifactId>\n");
+    if (null != version) {
+      builder.append(indent).append("  <version>").append(version).append("</version>\n");
+    }
+    if (isTestDependency) {
+      builder.append(indent).append("  <scope>test</scope>\n");
+    }
+    if (isOptional) {
+      builder.append(indent).append("  <optional>true</optional>\n");
+    }
+    if (null != exclusions && ! exclusions.isEmpty()) {
+      builder.append(indent).append("  <exclusions>\n");
+      for (String dependency : exclusions) {
+        int splitPos = dependency.indexOf(':');
+        String excludedGroupId = dependency.substring(0, splitPos);
+        String excludedArtifactId = dependency.substring(splitPos + 1);
+        builder.append(indent).append("    <exclusion>\n");
+        builder.append(indent).append("      <groupId>").append(excludedGroupId).append("</groupId>\n");
+        builder.append(indent).append("      <artifactId>").append(excludedArtifactId).append("</artifactId>\n");
+        builder.append(indent).append("    <exclusion>\n");
+      }
+      builder.append(indent).append("  </exclusions>\n");
+    }
+    builder.append(indent).append("</dependency>\n");
+  }
+}

Property changes on: lucene/tools/src/java/org/apache/lucene/dependencies/GetMavenDependenciesTask.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: solr/build.xml
===================================================================
--- solr/build.xml	(revision 1535303)
+++ solr/build.xml	(working copy)
@@ -743,4 +743,10 @@
     <jar-checksum-macro srcdir="${common-solr.dir}" dstdir="${common-solr.dir}/licenses"/>
   </target>
 
+  <target name="-append-internal-dependency-properties">
+    <ant dir="core" target="-append-internal-dependency-properties" inheritAll="false"/>
+    <ant dir="solrj" target="-append-internal-dependency-properties" inheritAll="false"/>
+    <ant dir="test-framework" target="-append-internal-dependency-properties" inheritAll="false"/>
+    <contrib-crawl target="-append-internal-dependency-properties"/>
+  </target>
 </project>
