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

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

Modified: lucene/dev/branches/solr2452/solr/common-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/common-build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/common-build.xml (original)
+++ lucene/dev/branches/solr2452/solr/common-build.xml Fri Apr  1 06:58:12 2011
@@ -15,624 +15,106 @@
  limitations under the License.
 -->
 
-<project name="common-solr" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
+<project name="common-solr" default="default">
   <description>
     This file is designed for importing into a main build file, and not intended
     for standalone use.
   </description>
 
   <dirname file="${ant.file.common-solr}" property="common-solr.dir"/>
-  <import file="${common-solr.dir}/../common-build.xml"/>
   
-  <!-- change this together with the default and test's solrconfig.xml after starting a new development branch: -->
-  <property name="tests.luceneMatchVersion" value="4.0"/>
-
-  <!-- Initialize property values: allow easy customization via build.properties -->
-  <property file="build.properties" />
-
   <property name="Name" value="Solr" />
+  <property name="version" value="4.0-SNAPSHOT"/>
+  <property name="final.name" value="apache-${name}-${version}"/>
 
-  <property name="name" value="${ant.project.name}"/>
+  <!-- solr uses 1.6 -->
+  <property name="javac.source" value="1.6"/>
+  <property name="javac.target" value="1.6"/>
+
+  <!-- solr uses its own build/dist directories -->
+  <property name="build.dir" location="${common-solr.dir}/build"/>
+  <property name="dist.dir" location="${common-solr.dir}/dist"/>
+  <property name="tests.userdir" value="${common-solr.dir}/src/test-files"/>
+  <property name="javadoc.dir" location="${common-solr.dir}/build/docs/api"/>
+  <property name="javadoc.link" value="http://java.sun.com/javase/6/docs/api/"/>
+
+  <path id="additional.dependencies">
+  	<fileset dir="${common-solr.dir}/lib" includes="**/*.jar"/>
+  	<fileset dir="${common-solr.dir}/example/lib" includes="**/*.jar"/>
+  	<fileset dir="lib" includes="**/*.jar" erroronmissingdir="false"/>
+  </path>
 
-  <property name="dev-tools.dir" value="${solr-path}/../dev-tools"/>
-  <property name="prettify.dir" value="${solr-path}/../lucene/src/tools/prettify"/>
-  <property name="package.dir" location="package"/>
-
-  <tstamp>
-    <format property="year" pattern="yyyy"/>
-    <format property="DSTAMP" pattern="yyyy-MM-dd"/>
-    <format property="TSTAMP" pattern="HH:mm:ss"/>
-    <!-- datetime format that is safe to treat as part of a dotted version -->
-    <format property="dateversion" pattern="yyyy.MM.dd.HH.mm.ss" />
-  </tstamp>
+  <pathconvert property="project.classpath" targetos="unix" refid="additional.dependencies"/>
 
-  <property name="junit.details" value="1"/>
+  <property name="tests.loggingfile" value="${common-solr.dir}/testlogging.properties"/>
 
-  <!-- default arguments to pass to jvm executing tests -->
-  <property name="args" value="" />
-
-  <!-- TODO: measure toning this down by default to 1 -->
   <property name="tests.threadspercpu" value="2"/>
-  <condition property="tests.sequential">
-    <or>
-      <isset property="testcase"/>
-      <equals arg1="${tests.threadspercpu}" arg2="0"/>
-    </or>
-  </condition>
-
-  <property name="tests.multiplier" value="1" />
-  <property name="tests.codec" value="randomPerField" />
-  <property name="tests.locale" value="random" />
-  <property name="tests.timezone" value="random" />
-  <property name="tests.iter" value="1" />
-  <property name="tests.seed" value="random" />
-  <property name="tests.nightly" value="false" />
-  <property name="tests.verbose" value="false" />
-
-  <condition property="dir.prop" value="-Dsolr.directoryFactory=solr.StandardDirectoryFactory">
-    <isset property="use.fsdir"/>
-  </condition>
-
-  <!-- Example directory -->
-  <property name="example" value="${common-solr.dir}/example" />
-  <!-- 
-    we attempt to exec svnversion to get details build information
-    for jar manifests.  this property can be set at runtime to an
-    explicit path as needed, or ant will just try to find it in the
-    default PATH. (this is useful for Hudson)
-  -->
-  <property name="svnversion.exe" value="svnversion" />
-  <property name="svn.exe" value="svn" />
-
-  <!-- Java Version we are compatible with -->
-  <property name="java.compat.version" value="1.6" />
-
-  <!-- clover wants to run with -lib, otherwise we prefer a repeatable
-       classpath -->
-  <property name="javac.includeAntRuntime" value="${run.clover}"/>
-
-  <!-- Solr Implementation Version -->
-  <!--
-       This can be any string value that does not include spaces
-       This will be used when creating build artifact file names.
-
-       By default, this should be set to "X.Y.N-SNAPSHOT" where X.Y.N is
-       "1 greater" then the last version released (on this branch).
-    -->
-  <property name="version" value="4.0-SNAPSHOT" />
-  
-  <!-- Solr Specification Version -->
-  <!--
-       This will be used in the Manifest file, and therefore must
-       match the pattern "digit+{.digit+}*"
-       
-       By default, this should be set to "X.Y.M.${dateversion}"
-       where X.Y.M is the last version released (on this branch).
-    -->
-  <property name="specversion" value="4.0.0.${dateversion}" />
-
-  
-    <!-- Type of checksum to compute for distribution files -->
-  <property name="checksum.algorithm" value="md5" />
-  
-  <property name="fullname" value="apache-${ant.project.name}"/>
-  <property name="fullnamever" value="apache-${ant.project.name}-${version}"/>
-
-  <!-- Destination for compiled classes and binaries -->
-  <property name="dest" value="build" />
-  
-  <!-- Destination for Lucene jars -->
-  <property name="lucene-libs" location="lucene-libs" />
-
-  <!-- Javadoc properties -->
-  <property name="javadoc.years" value="2006 - ${year}" />
-  <property name="javadoc.access" value="protected"/>
-  <property name="javadoc.link.java"
-            value="http://java.sun.com/javase/6/docs/api/"/>
-  <property name="javadoc.link.junit"
-            value="http://junit.sourceforge.net/javadoc/"/>
-  <property name="javadoc.link.lucene"
-            value="https://hudson.apache.org/hudson/job/Lucene-trunk/javadoc/all/"/>
-  <property name="javadoc.packages" value="org.apache.solr.*"/>
-  <property name="build.docs" value="${dest}/docs"/>
-  <property name="build.javadoc" value="${common-solr.dir}/${build.docs}/api"/>
-  <property name="build.javadoc.solrj" value="${build.docs}/api-solrj"/>
-  
-  <!-- JUnit properties -->
-  <property name="testmethod" value=""/>
-  <property name="junit.includes" value="**/Test*.java,**/*Test.java"/>
-  <property name="junit.output.dir" location="${common-solr.dir}/${dest}/test-results"/>
-  <property name="junit.reports" location="${common-solr.dir}/${dest}/test-results/reports"/>
-  <property name="junit.formatter" value="plain"/>
-  <condition property="junit.details.formatter" 
-      value="org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"
-      else="org.apache.lucene.util.LuceneJUnitResultFormatter">
-    <isset property="tests.sequential"/>
-  </condition>
-  <property name="junit.parallel.selector" value="org.apache.lucene.util.LuceneJUnitDividingSelector"/>
-
-  <!-- Maven properties -->
-  <property name="maven.build.dir" value="${basedir}/build/maven"/>
-  <property name="maven.dist.dir" value="${package.dir}/maven"/>
-
-  <property name="maven.dist.prefix" value="${maven.dist.dir}/org/apache/solr"/>
-
-  <!-- By default, "deploy" to a temporary directory (as well as installing
-       into your local repository).  If you wish to deploy to a remote
-       repository, set this property to the URL of that repository.  In
-       addition, if the repository requires authentication, you can set
-       properties "m2.repository.username" and "m2.repository.private.key"
-       to define your credentials.
-  -->
-  <property name="m2.repository.url" value="file://${maven.dist.dir}"/>
-  <property name="m2.repository.private.key" value="${user.home}/.ssh/id_dsa"/>
-
-  <available property="maven.ant.tasks.present" classname="org.apache.maven.artifact.ant.Pom" />
-
-  <!-- End Maven Properties -->
-  
-  <available property="clover.present"
-            classname="com.cenqua.clover.tasks.CloverReportTask"
-            />
-   <condition property="clover.enabled">
-       <and>
-           <isset property="run.clover"/>
-           <isset property="clover.present"/>
-       </and>
-   </condition>
-   
-  <!-- Lucene -->
-  
-  <path id="lucene.classpath">
-    <pathelement location="${common-solr.dir}/../lucene/build/classes/java" />
-    <pathelement location="${common-solr.dir}/../modules/analysis/build/common/classes/java" />
-    <pathelement location="${common-solr.dir}/../modules/analysis/build/phonetic/classes/java" />
-    <pathelement location="${common-solr.dir}/../lucene/build/contrib/highlighter/classes/java" />
-    <pathelement location="${common-solr.dir}/../lucene/build/contrib/memory/classes/java" />
-    <pathelement location="${common-solr.dir}/../lucene/build/contrib/misc/classes/java" />
-    <pathelement location="${common-solr.dir}/../lucene/build/contrib/queries/classes/java" />
-    <pathelement location="${common-solr.dir}/../lucene/build/contrib/spatial/classes/java" />
-    <pathelement location="${common-solr.dir}/../lucene/build/contrib/spellchecker/classes/java" />
-  </path>   
 
-  <target name="prep-lucene-jars">
-    <sequential>
-      <subant target="jar-core" inheritall="false" failonerror="true">
-        <fileset dir="../lucene/" includes="build.xml" />
-      </subant>
-      <subant target="jar" inheritall="false" failonerror="true">
-        <fileset dir="../modules/analysis/common" includes="build.xml" />
-        <fileset dir="../modules/analysis/phonetic" includes="build.xml" />
-        <fileset dir="../lucene/contrib/highlighter" includes="build.xml" />
-        <fileset dir="../lucene/contrib/memory" includes="build.xml" />
-        <fileset dir="../lucene/contrib/misc" includes="build.xml" />
-        <fileset dir="../lucene/contrib/queries" includes="build.xml" />
-        <fileset dir="../lucene/contrib/spatial" includes="build.xml" />
-        <fileset dir="../lucene/contrib/spellchecker" includes="build.xml" />
-      </subant>
-    </sequential>
-  </target>
-      
-  <target name="lucene-jars-to-solr" depends="prep-lucene-jars">
-    <mkdir dir="${lucene-libs}"/>
-    <copy todir="${lucene-libs}" preservelastmodified="true" flatten="true" failonerror="true" overwrite="true">
-      <fileset dir="../lucene/build/">
-        <include name="lucene-core-${version}.jar" />
-      </fileset>
-      <fileset dir="../modules/analysis/build/common">
-        <include name="lucene-analyzers-common-${version}.jar" />
-      </fileset>
-      <fileset dir="../modules/analysis/build/phonetic">
-        <include name="lucene-analyzers-phonetic-${version}.jar" />
-      </fileset>
-      <fileset dir="../lucene/build/contrib/highlighter">
-        <include name="lucene-highlighter-${version}.jar" />
-      </fileset>
-      <fileset dir="../lucene/build/contrib/memory">
-        <include name="lucene-memory-${version}.jar" />
-      </fileset>
-      <fileset dir="../lucene/build/contrib/misc">
-        <include name="lucene-misc-${version}.jar" />
-      </fileset>
-      <fileset dir="../lucene/build/contrib/queries">
-        <include name="lucene-queries-${version}.jar" />
-      </fileset>
-      <fileset dir="../lucene/build/contrib/spatial">
-        <include name="lucene-spatial-${version}.jar" />
-      </fileset>
-      <fileset dir="../lucene/build/contrib/spellchecker">
-        <include name="lucene-spellchecker-${version}.jar" />
-      </fileset>
-      </copy>
-  </target>  
-  
-  <target name="compile-lucene" unless="lucene-compiled">
-    <property name="lucene-compiled" value="true"/>
-    <subant target="default">
-      <fileset dir="../modules/analysis/common" includes="build.xml"/>
-      <fileset dir="../modules/analysis/phonetic" includes="build.xml"/>
-      <fileset dir="../lucene/contrib/highlighter" includes="build.xml"/>
-      <fileset dir="../lucene/contrib/memory" includes="build.xml"/>
-      <fileset dir="../lucene/contrib/misc" includes="build.xml"/>
-      <fileset dir="../lucene/contrib/queries" includes="build.xml"/>
-      <fileset dir="../lucene/contrib/spatial" includes="build.xml"/>
-      <fileset dir="../lucene/contrib/spellchecker" includes="build.xml"/>
-    </subant>
-  </target>
-   
-   
-  <!-- Macro for compilation -->
-  <macrodef name="solr-javac">
-    <attribute name="destdir" />
-    <attribute name="classpathref" />
-    <element name="nested" optional="true" implicit="true" />
-    <sequential>
-      <mkdir dir="@{destdir}" />
-      <javac destdir="@{destdir}"
-             target="${java.compat.version}"
-             source="${java.compat.version}"
-             debug="on"
-             encoding="utf8"
-             includeAntRuntime="${javac.includeAntRuntime}"
-             sourcepath=""
-             classpathref="@{classpathref}">
-         <compilerarg line="-Xlint -Xlint:-deprecation -Xlint:-serial"/>
-         <nested />
-      </javac>
-    </sequential>
-  </macrodef>
-
-  <!-- Macro for building Jars -->
-  <macrodef name="solr-jar">
-    <attribute name="destfile" />
-    <attribute name="basedir" default="." />
-    <attribute name="includes" default="org/apache/**" />
-    <attribute name="excludes" default="" />
-    <attribute name="manifest" default="${common-solr.dir}/${dest}/META-INF/MANIFEST.MF" />
-    <element name="nested" optional="true" implicit="true" />
-    <sequential>
-      <jar destfile="@{destfile}"
-           basedir="@{basedir}"
-           includes="@{includes}"
-           excludes="@{excludes}"
-           filesetmanifest="skip"
-           manifest="@{manifest}">
-        <metainf dir="${common-solr.dir}" includes="LICENSE.txt,NOTICE.txt"/>
-        <nested />
-      </jar>
-    </sequential>
-  </macrodef>
-
-  <!-- Macro for building checksum files
-       This is only needed until the "format" option is supported
-       by ant's built in checksum task
-   -->
-  <macrodef name="solr-checksum">
-    <attribute name="file"/>
-    <sequential>
-      <echo>Building checksums for '@{file}'</echo>
-      <checksum file="@{file}" algorithm="md5" format="MD5SUM" forceoverwrite="yes" readbuffersize="65536"/>
-      <checksum file="@{file}" algorithm="sha1" format="MD5SUM" forceoverwrite="yes" readbuffersize="65536"/>
-    </sequential>
-  </macrodef>
+  <import file="../lucene/contrib/contrib-build.xml"/>
 
+  <!-- solr depends on the following modules/contribs -->	
+  <module-uptodate name="analysis/common" jarfile="${common.dir}/../modules/analysis/build/common/lucene-analyzers-common-${version}.jar"
+        property="analyzers-common.uptodate" classpath.property="analyzers-common.jar"/>
+  <module-uptodate name="analysis/phonetic" jarfile="${common.dir}/../modules/analysis/build/phonetic/lucene-analyzers-phonetic-${version}.jar"
+        property="analyzers-phonetic.uptodate" classpath.property="analyzers-phonetic.jar"/>
+  <contrib-uptodate name="highlighter" property="highlighter.uptodate" classpath.property="highlighter.jar"/>
+  <contrib-uptodate name="memory" property="memory.uptodate" classpath.property="memory.jar"/>
+  <contrib-uptodate name="misc" property="misc.uptodate" classpath.property="misc.jar"/>
+  <contrib-uptodate name="queries" property="queries.uptodate" classpath.property="queries.jar"/>
+  <contrib-uptodate name="spatial" property="spatial.uptodate" classpath.property="spatial.jar"/>
+  <contrib-uptodate name="spellchecker" property="spellchecker.uptodate" classpath.property="spellchecker.jar"/>
+	
+  <path id="solr.base.classpath">
+  	<pathelement path="${analyzers-common.jar}"/>
+  	<pathelement path="${analyzers-phonetic.jar}"/>
+  	<pathelement path="${highlighter.jar}"/>
+  	<pathelement path="${memory.jar}"/>
+  	<pathelement path="${misc.jar}"/>
+  	<pathelement path="${queries.jar}"/>
+  	<pathelement path="${spatial.jar}"/>
+  	<pathelement path="${spellchecker.jar}"/>
+  	<pathelement location="${common-solr.dir}/build/classes/solrj"/>
+  	<pathelement location="${common-solr.dir}/build/classes/webapp"/>
+  	<pathelement location="${common-solr.dir}/build/classes/java"/>
+  	<path refid="base.classpath"/>
+  </path>
+
+  <path id="classpath" refid="solr.base.classpath"/>
+
+  <path id="solr.test.base.classpath">
+  	<pathelement path="${common-solr.dir}/build/classes/test-framework"/>
+  	<pathelement path="${common-solr.dir}/build/classes/test"/>
+  	<pathelement path="${tests.userdir}"/>
+  	<path refid="test.base.classpath"/>
+  </path>
+ 
+  <path id="test.classpath" refid="solr.test.base.classpath"/>
 
+  <!-- TODO: lucene and solr should share this macro -->
   <macrodef name="contrib-crawl">
     <attribute name="target" default=""/>
     <attribute name="failonerror" default="true"/>
     <sequential>
       <subant target="@{target}" failonerror="@{failonerror}">
-        <property name="lucene-compiled" value="${lucene-compiled}"/>
-        <fileset dir="."
-                 includes="contrib/*/build.xml"
-        />
+        <property name="core.compiled" value="true"/>
+        <property name="solr.core.compiled" value="true"/>
+        <fileset dir="." includes="contrib/*/build.xml"/>
       </subant>
     </sequential>
   </macrodef>
 
-  <property name="failonjavadocwarning" value="true"/>
-  <macrodef name="invoke-javadoc">
-    <element name="sources" optional="yes"/>
-    <attribute name="destdir"/>
-  	<attribute name="title" default="${Name} ${version} API (${specversion})"/>
-    <sequential>
-      <mkdir dir="@{destdir}"/>
-      <copy todir="@{destdir}/prettify" overwrite="false">
-        <fileset dir="${prettify.dir}"/>
-      </copy>
-      <record name="@{destdir}/log_javadoc.txt" action="start" append="no"/>
-      <javadoc
-          packagenames="org.apache.solr.*"
-          failonerror="true"
-          destdir="@{destdir}"
-          access="${javadoc.access}"
-          encoding="utf-8"
-          author="true"
-          version="true"
-          use="true"
-          source="${ant.java.version}"
-          link="${javadoc.link.java}"
-          windowtitle="${Name} ${version} API"
-          doctitle="@{title}"
-          stylesheetfile="@{destdir}/prettify/stylesheet+prettify.css"
-          bottom="Copyright &amp;copy; ${year} Apache Software Foundation.  All Rights Reserved.">
-        <tag name="todo" description="To Do:"/>
-        <tag name="uml.property" description="UML Property:"/>
-        <tag name="lucene.experimental" 
-      	description="WARNING: This API is experimental and might change in incompatible ways in the next release."/>
-        <tag name="lucene.internal"
-        description="NOTE: This API is for Lucene internal purposes only and might change in incompatible ways in the next release."/>
-      	<link offline="true" packagelistLoc="${build.javadoc}"/>
-        <link href="${javadoc.link.java}"/>
-        <link href="${javadoc.link.junit}"/>
-        <link href="${javadoc.link.lucene}"/>
-      	<header><![CDATA[
-      		 <script src="{@docRoot}/prettify/prettify.js" type="text/javascript"></script>
-      		 <script language="JavaScript">window.onload=function(){windowTitle();prettyPrint();}</script>
-      	]]></header>
-
-        <sources />
-
-        <classpath refid="javadoc.classpath"/>
-      </javadoc>
-      <record name="@{destdir}/log_javadoc.txt" action="stop"/>
-
-      <delete>
-        <fileset file="@{destdir}/log_javadoc.txt">
-          <not>
-           <containsregexp expression="\[javadoc\]\s*[1-9][0-9]*[\s]*warning"/>
-          </not>
-        </fileset>
-      </delete>
-
-      <fail message="Javadocs warnings were found!" >
-        <condition>
-          <and>
-            <available file="@{destdir}/log_javadoc.txt"/>
-            <istrue value="${failonjavadocwarning}"/>
-          </and>
-        </condition>
-      </fail>
-   </sequential>
-  </macrodef>
-
-  <!-- NOTE, the pom.xml MUST be a relative path.  An absolute path may break the build on windows -->
-  <macrodef name="m2-deploy" description="Builds a Maven artifact">
-    <element name="artifact-attachments" optional="yes"/>
-    <attribute name="pom.xml" default="pom.xml"/>
-    <attribute name="jar.file" default="${jar.file}"/>
-    <sequential>
-      <artifact:install-provider artifactId="wagon-ssh" version="1.0-beta-7"/>
-      <artifact:pom id="maven.project" file="@{pom.xml}"/>
-      <artifact:deploy file="@{jar.file}">
-        <artifact-attachments/>
-        <remoteRepository url="${m2.repository.url}">
-          <authentication username="${m2.repository.username}" privateKey="${m2.repository.private.key}"/>
-        </remoteRepository>
-        <pom refid="maven.project"/>
-      </artifact:deploy>
-    </sequential>
-  </macrodef>
-
-  <macrodef name="m2-deploy-with-pom-template" description="Builds a Maven artifact given a POM template">
-    <attribute name="pom.xml"/>
-    <attribute name="jar.file"/>
-    <sequential>
-      <copy file="@{pom.xml}" tofile="${maven.build.dir}/@{pom.xml}">
-        <filterset begintoken="@" endtoken="@">
-          <filter token="version" value="${version}"/>
-        </filterset>
-      </copy>
-      <artifact:install-provider artifactId="wagon-ssh" version="1.0-beta-7"/>
-      <artifact:pom id="maven.project" file="${maven.build.dir}/@{pom.xml}" />
-      <artifact:deploy file="@{jar.file}">
-        <remoteRepository url="${m2.repository.url}">
-          <authentication username="${m2.repository.username}" privateKey="${m2.repository.private.key}"/>
-        </remoteRepository>
-        <pom refid="maven.project"/>
-      </artifact:deploy>
-    </sequential>
-  </macrodef>
-
-  <property name="gpg.exe" value="gpg" />
-  <property name="gpg.key" value="CODE SIGNING KEY" />
-  <macrodef name="sign-artifact" description="Signs the artifact">
-    <attribute name="input.file"/>
-    <attribute name="output.file" default="@{input.file}.asc"/>
-    <attribute name="gpg.passphrase"/>
-    <sequential>
-      <echo >Signing @{input.file} Sig File: @{output.file}</echo>
-
-      <exec executable="${gpg.exe}" >
-        <arg value="--batch"/>
-        <arg value="--armor"/>
-        <arg value="--output"/>
-        <arg value="@{output.file}"/>
-        <arg value="--default-key"/>
-        <arg value="${gpg.key}"/>
-        <arg value="--passphrase"/>
-        <arg value="@{gpg.passphrase}"/>
-        <arg value="--detach-sig"/>
-        <arg value="@{input.file}"/>
-      </exec>
+  <macrodef name="solr-contrib-uptodate">
+    <attribute name="name"/>
+    <attribute name="property" default="@{name}.uptodate"/>
+    <attribute name="classpath.property" default="@{name}.jar"/>
+    <!-- set jarfile only, if the target jar file has no generic name -->
+    <attribute name="jarfile" default="${common-solr.dir}/build/contrib/@{name}/@{name}-${version}.jar"/>
+  	<sequential>
+      <!--<echo message="Checking '@{jarfile}' against source folder '${common.dir}/contrib/@{name}/src/java'"/>-->
+      <property name="@{classpath.property}" location="@{jarfile}"/>
+      <uptodate property="@{property}" targetfile="@{jarfile}">
+        <srcfiles dir="${common-solr.dir}/contrib/@{name}/src/main/java" includes="**/*.java"/>
+      </uptodate>
     </sequential>
   </macrodef>
-
-  <!--
-   We need to sign:
-   The POM
-   The library jar
-   The sources jar
-   the javadoc jar
-   -->
-  <macrodef name="sign-maven-artifacts" description="Signs maven artifacts">
-    <attribute name="artifact.id"/>
-    <attribute name="prefix.dir" default="${maven.dist.prefix}"/>
-    <attribute name="gpg.passphrase"/>
-    <sequential>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}.jar" gpg.passphrase="@{gpg.passphrase}"/>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}-javadoc.jar" gpg.passphrase="@{gpg.passphrase}"/>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}-sources.jar" gpg.passphrase="@{gpg.passphrase}"/>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}.pom" gpg.passphrase="@{gpg.passphrase}"/>
-    </sequential>
-  </macrodef>
-
-  <macrodef name="sign-maven-war-artifacts" description="Signs maven artifacts">
-    <attribute name="artifact.id"/>
-    <attribute name="prefix.dir" default="${maven.dist.prefix}"/>
-    <attribute name="gpg.passphrase"/>
-    <sequential>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}.war" gpg.passphrase="@{gpg.passphrase}"/>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}.pom" gpg.passphrase="@{gpg.passphrase}"/>
-    </sequential>
-  </macrodef>
-
-  <macrodef name="sign-maven-dependency-artifacts" description="Signs a maven artifact and its POM">
-    <attribute name="artifact.id"/>
-    <attribute name="prefix.dir" default="${maven.dist.prefix}"/>
-    <attribute name="gpg.passphrase"/>
-    <sequential>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}.jar"  gpg.passphrase="@{gpg.passphrase}"/>
-      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/${version}/@{artifact.id}-${version}.pom"  gpg.passphrase="@{gpg.passphrase}"/>
-    </sequential>
-  </macrodef>
-
-  <!-- setup proxy for download tasks -->
-  <condition property="proxy.specified">
-    <or>
-      <isset property="proxy.host"/>
-      <isset property="proxy.port"/>
-      <isset property="proxy.user"/>
-    </or>
-  </condition>
-
-  <target name="proxy.setup" if="proxy.specified">
-    <setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}" proxyuser="${proxy.user}" proxypassword="${proxy.password}"/>
-  </target>
-
-
-  <target name="clean-contrib"
-	          description="Cleans all contrib modules and their tests">
-	<contrib-crawl target="clean"/>
-  </target>
-
-  <target name="build-contrib"
-          description="Builds all contrib modules and their tests">
-    <contrib-crawl target="build"/>
-  </target>
-
-  <target name="test-contrib" depends="build-contrib">
-    <contrib-crawl target="test" failonerror="true"/>
-  </target>
-
-  <target name="dist-contrib" description="Make the contribs ready for distribution">
-  	<contrib-crawl target="dist" failonerror="true" />
-  </target>
-
-  <target name="example-contrib" description="Tell the contrib to add their stuff to examples">
-  	<contrib-crawl target="example" failonerror="true" />
-  </target>
-
-  <!-- Creates a Manifest file for Jars and WARs -->
-  <target name="make-manifest">
-     <!-- If possible, include the svnversion -->
-     <exec dir="." executable="${svnversion.exe}" outputproperty="svnversion" failifexecutionfails="false">
-      <arg line="."/>
-     </exec>
-
-     <!-- no description, don't advertise -->
-     <mkdir dir="${dest}/META-INF/" />
-     <manifest mode="replace" file="${dest}/META-INF/MANIFEST.MF">
-        <!--
-        http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#JAR%20Manifest
-        http://java.sun.com/j2se/1.5.0/docs/guide/versioning/spec/versioning2.html
-        http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Package.html
-        http://java.sun.com/j2se/1.5.0/docs/api/java/util/jar/package-summary.html
-        http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html
-        -->
-        <!-- Don't set 'Manifest-Version' it identifies the version of the
-             manifest file format, and should always be 1.0 (the default)
-
-             Don't set 'Created-by' attribute, its purpose is 
-             to identify the version of java used to build the jar,
-             which ant will do by default.
-
-             Ant will happily override these with bogus strings if you
-             tell it to, so don't.
-
-             NOTE: we don't use section info because all of our manifest data
-             applies to the entire jar/war ... no package specific info.
-        -->
-        <attribute name="Extension-Name" 
-                   value="org.apache.solr"/>
-        <attribute name="Specification-Title" 
-                   value="Apache Solr Search Server"/>
-        <!-- spec version must match "digit+{.digit+}*" -->
-        <attribute name="Specification-Version" 
-                   value="${specversion}"/>
-        <attribute name="Specification-Vendor" 
-                   value="The Apache Software Foundation"/>
-        <attribute name="Implementation-Title" 
-                   value="org.apache.solr"/>
-        <!-- impl version can be any string -->
-        <attribute name="Implementation-Version" 
-                   value="${version} ${svnversion} - ${user.name} - ${DSTAMP} ${TSTAMP}"/>
-        <attribute name="Implementation-Vendor" 
-                   value="The Apache Software Foundation"/>
-        <attribute name="X-Compile-Source-JDK" 
-                   value="${java.compat.version}"/>
-        <attribute name="X-Compile-Target-JDK" 
-                   value="${java.compat.version}"/>
-     </manifest>
-  </target>
-
-  <target name="maven.ant.tasks-check">
-    <fail unless="maven.ant.tasks.present">#
-    ##########################################################################
-      Maven ant tasks not found.
-
-      Please download the Maven ant tasks JAR (maven-ant-tasks-2.1.1.jar)
-      from http://maven.apache.org/ant-tasks/download.html and add it to your
-      $$HOME/.ant/lib/ directory, or to your $$ANT_HOME/lib/ directory, or
-      to your $$CLASSPATH, or add "-lib /path/to/maven-ant-tasks-2.1.1.jar"
-      to the ant command.
-    ##########################################################################
-    </fail>
-  </target>
-  <!-- Validation -->
-  <target name="validate" depends="validate-solr"/>
-  <target name="validate-solr" depends="check-legal-solr" unless="validated-solr"/>
-
-  <target name="check-legal-solr" depends="compile-tools">
-    <java classname="org.apache.lucene.validation.DependencyChecker" failonerror="true" fork="true">
-      <classpath>
-        <path refid="tools.runtime.classpath" />
-      </classpath>
-      <!-- TODO: it might be better to just automatically find all directories that contain jar files, but that could take a
-       long time.  This should be faster, but we could miss a directory
-       -->
-      <!-- Solr -->
-      <arg value="-c" />
-      <arg value="${basedir}/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/contrib/analysis-extras/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/contrib/clustering/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/contrib/dataimporthandler/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/contrib/extraction/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/contrib/uima/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/example/example-DIH/solr/db/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/example/example-DIH/solr/mail/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/example/example/lib" />
-      <arg value="-c" />
-      <arg value="${basedir}/src/test-files/solr/lib" />
-    </java>
-  </target>
-
 </project>

Modified: lucene/dev/branches/solr2452/solr/contrib/analysis-extras/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/contrib/analysis-extras/build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/contrib/analysis-extras/build.xml (original)
+++ lucene/dev/branches/solr2452/solr/contrib/analysis-extras/build.xml Fri Apr  1 06:58:12 2011
@@ -17,194 +17,43 @@
     limitations under the License.
  -->
 
-<project name="solr-analysis-extras" default="build">
-
-  <property name="solr-path" value="../.."/>
-
-  <import file="../../common-build.xml"/>
+<project name="solr-analysis-extras" default="default">
 
   <description>
     Additional analysis components
   </description>
 
-  <property name="example.local" value="example"/>
-  
-  <!-- support for the additional analyzers modules -->
-  <path id="modules.classpath">
-    <pathelement location="${common-solr.dir}/../modules/analysis/build/icu/classes/java" />
-    <pathelement location="${common-solr.dir}/../modules/analysis/build/smartcn/classes/java" />
-  	<pathelement location="${common-solr.dir}/../modules/analysis/build/stempel/classes/java" />
+  <property name="src.dir" location="src/java"/>
+  <property name="tests.src.dir" location="src/test"/>
+  <property name="tests.userdir" location="src/test-files"/>
+
+  <import file="../contrib-build.xml"/>
+
+  <module-uptodate name="analysis/icu" jarfile="${common.dir}/../modules/analysis/build/icu/lucene-analyzers-icu-${version}.jar"
+	    property="analyzers-icu.uptodate" classpath.property="analyzers-icu.jar"/>
+  <module-uptodate name="analysis/smartcn" jarfile="${common.dir}/../modules/analysis/build/smartcn/lucene-analyzers-smartcn-${version}.jar"
+		property="analyzers-smartcn.uptodate" classpath.property="analyzers-smartcn.jar"/>
+  <module-uptodate name="analysis/stempel" jarfile="${common.dir}/../modules/analysis/build/stempel/lucene-analyzers-stempel-${version}.jar"
+		property="analyzers-stempel.uptodate" classpath.property="analyzers-stempel.jar"/>
+
+  <path id="classpath">
+  	<pathelement path="${analyzers-icu.jar}"/>
+  	<pathelement path="${analyzers-smartcn.jar}"/>
+  	<pathelement path="${analyzers-stempel.jar}"/>
+    <path refid="solr.base.classpath"/>
   </path>
-	
-  <target name="prep-module-jars">
-    <subant target="jar" inheritall="false" failonerror="true">
-      <fileset dir="${common-solr.dir}/../modules/analysis/icu" includes="build.xml" />
-      <fileset dir="${common-solr.dir}/../modules/analysis/smartcn" includes="build.xml" />
-      <fileset dir="${common-solr.dir}/../modules/analysis/stempel" includes="build.xml" />
-    </subant>
-  </target>
-
-  <target name="module-jars-to-solr" depends="prep-module-jars">
-    <mkdir dir="${lucene-libs}"/>
-    <copy todir="${lucene-libs}" preservelastmodified="true" flatten="true" failonerror="true" overwrite="true">
-      <fileset dir="${common-solr.dir}/../modules/analysis/build/icu">
-        <include name="lucene-analyzers-icu-${version}.jar" />
-      </fileset>
-      <fileset dir="${common-solr.dir}/../modules/analysis/build/smartcn">
-          <include name="lucene-analyzers-smartcn-${version}.jar" />
-  	  </fileset>
-      <fileset dir="${common-solr.dir}/../modules/analysis/build/stempel">
-        <include name="lucene-analyzers-stempel-${version}.jar" />
-	  </fileset>
-    </copy>
-  </target>
-	 
-  <path id="common.classpath">
-    <fileset dir="lib"/>
-    <pathelement location="${solr-path}/build/solr"/>
-    <pathelement location="${solr-path}/build/solrj"/>
-    <path refid="lucene.classpath"/>
-  	<path refid="modules.classpath"/>
-    <fileset dir="${solr-path}/lib" includes="*.jar"/>
-  </path>
-
-  <path id="test.classpath">
-    <pathelement path="${dest}/classes"/>
-    <pathelement path="${dest}/test-classes"/>
-    <pathelement path="${java.class.path}"/>
-    <pathelement location="${common-solr.dir}/build/tests"/> <!-- include solr test code -->
-    <pathelement location="${common-solr.dir}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-    <path refid="common.classpath"/>
-  </path>
-
-  <target name="clean">
-    <delete failonerror="false" dir="${dest}"/>
-
-    <!-- example doesn't create this anymore, but clean it up
-         if it's still there from an old build
-      -->
-    <delete dir="example/lib" />
-  	<delete dir="${lucene-libs}" />
-  </target>
-
-
-  <target name="init" depends="module-jars-to-solr">
-    <mkdir dir="${dest}/classes"/>
-    
-    <mkdir dir="${build.javadoc}"/>
-    <subant target="compileTests">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-    <subant target="make-manifest">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-  </target>
-
-
-  <target name="compile" depends="init">
-    <solr-javac destdir="${dest}/classes"
-                classpathref="common.classpath">
-      <src path="src/java"/>
-    </solr-javac>
-  </target>
-
-  <target name="build" depends="compile">
-    <solr-jar destfile="${dest}/${fullnamever}.jar" basedir="${dest}/classes"
-              manifest="../../${dest}/META-INF/MANIFEST.MF"/>
-  </target>
-
-  <target name="compileTests" depends="compile">
-    <solr-javac destdir="${dest}/test-classes"
-                classpathref="test.classpath">
-      <src path="src/test"/>
-    </solr-javac>
-    <!-- Copy any data files present to the classpath -->
-    <copy todir="${dest}/test-classes">
-      <fileset dir="src/test-files" excludes="**/*.java"/>
-    </copy>
-  </target>
-
-  <target name="example" depends="build,dist">
-    <!-- this task use to copy lib's but that's no longer needed because
-         ../lib and ../lib/downloads are now included explicitly by
-         example/conf/solrconfig.xml
-      -->
-  </target>
-
-
-  <target name="test" depends="compileTests">
-    <mkdir dir="${junit.output.dir}"/>
-
-    <junit printsummary="no"
-           haltonfailure="no"
-           maxmemory="512M"
-           errorProperty="tests.failed"
-           failureProperty="tests.failed"
-           dir="${junit.output.dir}"
-           tempdir="${junit.output.dir}"
-           forkmode="perBatch"
-            >
-      <sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
-      <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-      <sysproperty key="tests.codec" value="${tests.codec}"/>
-      <sysproperty key="tests.locale" value="${tests.locale}"/>
-      <sysproperty key="tests.timezone" value="${tests.timezone}"/>
-      <sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
-      <sysproperty key="tests.seed" value="${tests.seed}"/>
-      <sysproperty key="tests.verbose" value="${tests.verbose}"/>
-      <sysproperty key="tests.iter" value="${tests.iter}"/>
-      <!-- set whether or not nightly tests should run -->
-      <sysproperty key="tests.nightly" value="${tests.nightly}"/>
-      <sysproperty key="jetty.testMode" value="1"/>
-      <sysproperty key="tempDir" file="${junit.output.dir}"/>
-      <sysproperty key="testmethod" value="${testmethod}"/>
-      <jvmarg line="${args}"/>
-      <formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
-      <classpath refid="test.classpath"/>
-      <assertions>
-        <enable package="org.apache.lucene"/>
-        <enable package="org.apache.solr"/>
-      </assertions>
-      <formatter type="${junit.formatter}"/>
-      <batchtest fork="yes" todir="${junit.output.dir}" unless="testcase">
-        <fileset dir="src/test" includes="${junit.includes}"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
-        <fileset dir="src/test" includes="**/${testcase}.java"/>
-      </batchtest>
-    </junit>
 
-    <fail if="tests.failed">Tests failed!</fail>
+  <target name="compile-analyzers-icu" unless="analyzers-icu.uptodate">
+  	<ant dir="${common.dir}/../modules/analysis/icu" target="default" inheritAll="false"/>
   </target>
 
-  <target name="dist" depends="build">
-    <!--
-      <copy file="${dest}/${fullnamever}.jar" todir="${solr-path}/build/web/WEB-INF/lib"/>
-      <copy todir="${solr-path}/build/web/WEB-INF/lib" flatten="true">
-        <fileset dir="lib">
-          <include name="**/*.jar"/>
-        </fileset>
-      </copy>
-    -->
-    <copy file="${dest}/${fullnamever}.jar" todir="${solr-path}/dist"/>
+  <target name="compile-analyzers-smartcn" unless="analyzers-smartcn.uptodate">
+  	<ant dir="${common.dir}/../modules/analysis/smartcn" target="default" inheritAll="false"/>
   </target>
 
-  <target name="javadoc">
-    <sequential>
-      <mkdir dir="${build.javadoc}/contrib-${name}"/>
-
-      <path id="javadoc.classpath">
-        <path refid="common.classpath"/>
-      </path>
-
-      <invoke-javadoc
-              destdir="${build.javadoc}/contrib-${name}"
-              title="${Name} ${version} contrib-${fullnamever} API">
-        <sources>
-          <packageset dir="src/java"/>
-        </sources>
-      </invoke-javadoc>
-    </sequential>
+  <target name="compile-analyzers-stempel" unless="analyzers-stempel.uptodate">
+  	<ant dir="${common.dir}/../modules/analysis/stempel" target="default" inheritAll="false"/>
   </target>
 
+  <target name="compile-core" depends="compile-analyzers-icu, compile-analyzers-smartcn, compile-analyzers-stempel, solr-contrib-build.compile-core"/>
 </project>

Modified: lucene/dev/branches/solr2452/solr/contrib/clustering/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/contrib/clustering/build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/contrib/clustering/build.xml (original)
+++ lucene/dev/branches/solr2452/solr/contrib/clustering/build.xml Fri Apr  1 06:58:12 2011
@@ -17,168 +17,15 @@
     limitations under the License.
  -->
 
-<project name="solr-clustering" default="build">
-
-  <property name="solr-path" value="../.."/>
-
-  <import file="../../common-build.xml"/>
+<project name="solr-clustering" default="default">
 
   <description>
     Clustering Integraton
   </description>
 
-  <property name="example.local" value="example"/>
-  
-  <path id="common.classpath">
-  	<fileset dir="lib" includes="*.jar"/>
-    <pathelement location="${solr-path}/build/solr"/>
-    <pathelement location="${solr-path}/build/solrj"/>
-    <path refid="lucene.classpath"/>
-    <fileset dir="${solr-path}/lib" includes="*.jar"/>
-  </path>
-
-  <path id="test.classpath">
-    <pathelement path="${dest}/classes"/>
-    <pathelement path="${dest}/test-classes"/>
-    <pathelement path="${java.class.path}"/>
-    <pathelement location="${common-solr.dir}/build/tests"/> <!-- include solr test code -->
-    <pathelement location="${common-solr.dir}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-    <path refid="common.classpath"/>
-    <!-- DistributedClusteringComponentTest uses Jetty -->
-    <fileset dir="${solr-path}/example/lib">
-      <include name="**/*.jar" />
-    </fileset>
-  </path>
-
-  <target name="clean">
-    <delete failonerror="false" dir="${dest}"/>
-
-    <!-- example doesn't create this anymore, but clean it up
-         if it's still there from an old build
-      -->
-    <delete dir="example/lib" />
-  </target>
-
-
-  <target name="init">
-    <mkdir dir="${dest}/classes"/>
-    
-    <mkdir dir="${build.javadoc}"/>
-    <subant target="compileTests">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-    <subant target="make-manifest">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-  </target>
-
-
-  <target name="compile" depends="init">
-    <solr-javac destdir="${dest}/classes"
-                classpathref="common.classpath">
-      <src path="src/main/java"/>
-    </solr-javac>
-  </target>
-
-  <target name="build" depends="compile">
-    <solr-jar destfile="${dest}/${fullnamever}.jar" basedir="${dest}/classes"
-              manifest="../../${dest}/META-INF/MANIFEST.MF"/>
-  </target>
-
-  <target name="compileTests" depends="compile">
-    <solr-javac destdir="${dest}/test-classes"
-                classpathref="test.classpath">
-      <src path="src/test/java"/>
-    </solr-javac>
-    <!-- Copy any data files present to the classpath -->
-    <copy todir="${dest}/test-classes">
-      <fileset dir="src/test/resources" excludes="**/*.java"/>
-    </copy>
-  </target>
-
-  <target name="example" depends="build,dist">
-    <!-- this task use to copy lib's but that's no longer needed because
-         ../lib and ../lib/downloads are now included explicitly by
-         example/conf/solrconfig.xml
-      -->
-  </target>
-
-
-  <target name="test" depends="compileTests">
-    <mkdir dir="${junit.output.dir}"/>
-
-    <junit printsummary="no"
-           haltonfailure="no"
-           maxmemory="512M"
-           errorProperty="tests.failed"
-           failureProperty="tests.failed"
-           dir="${junit.output.dir}"
-           tempdir="${junit.output.dir}"
-           forkmode="perBatch"
-            >
-      <sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
-      <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-      <sysproperty key="tests.codec" value="${tests.codec}"/>
-      <sysproperty key="tests.locale" value="${tests.locale}"/>
-      <sysproperty key="tests.timezone" value="${tests.timezone}"/>
-      <sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
-      <sysproperty key="tests.seed" value="${tests.seed}"/>
-      <sysproperty key="tests.verbose" value="${tests.verbose}"/>
-      <sysproperty key="tests.iter" value="${tests.iter}"/>
-      <!-- set whether or not nightly tests should run -->
-      <sysproperty key="tests.nightly" value="${tests.nightly}"/>
-      <sysproperty key="jetty.testMode" value="1"/>
-      <sysproperty key="tempDir" file="${junit.output.dir}"/>
-      <sysproperty key="testmethod" value="${testmethod}"/>
-      <jvmarg line="${args}"/>
-      <formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
-      <classpath refid="test.classpath"/>
-      <assertions>
-        <enable package="org.apache.lucene"/>
-        <enable package="org.apache.solr"/>
-      </assertions>
-      <formatter type="${junit.formatter}"/>
-      <batchtest fork="yes" todir="${junit.output.dir}" unless="testcase">
-        <fileset dir="src/test/java" includes="${junit.includes}">
-          <exclude name="**/AbstractClusteringTest*"/>
-        </fileset>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
-        <fileset dir="src/test/java" includes="**/${testcase}.java"/>
-      </batchtest>
-    </junit>
-
-    <fail if="tests.failed">Tests failed!</fail>
-  </target>
-
-  <target name="dist" depends="build">
-    <!--
-      <copy file="${dest}/${fullnamever}.jar" todir="${solr-path}/build/web/WEB-INF/lib"/>
-      <copy todir="${solr-path}/build/web/WEB-INF/lib" flatten="true">
-        <fileset dir="lib">
-          <include name="**/*.jar"/>
-        </fileset>
-      </copy>
-    -->
-    <copy file="${dest}/${fullnamever}.jar" todir="${solr-path}/dist"/>
-  </target>
-
-  <target name="javadoc">
-    <sequential>
-      <mkdir dir="${build.javadoc}/contrib-${name}"/>
-
-      <path id="javadoc.classpath">
-        <path refid="common.classpath"/>
-      </path>
-
-      <invoke-javadoc
-              destdir="${build.javadoc}/contrib-${name}"
-              title="${Name} ${version} contrib-${fullnamever} API">
-        <sources>
-          <packageset dir="src/main/java"/>
-        </sources>
-      </invoke-javadoc>
-    </sequential>
-  </target>
+  <property name="src.dir" location="src/main/java"/>
+  <property name="tests.src.dir" location="src/test/java"/>
+  <property name="tests.userdir" location="src/test/resources"/>
 
+  <import file="../contrib-build.xml"/>
 </project>

Added: lucene/dev/branches/solr2452/solr/contrib/contrib-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/contrib/contrib-build.xml?rev=1087603&view=auto
==============================================================================
--- lucene/dev/branches/solr2452/solr/contrib/contrib-build.xml (added)
+++ lucene/dev/branches/solr2452/solr/contrib/contrib-build.xml Fri Apr  1 06:58:12 2011
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+ 
+        http://www.apache.org/licenses/LICENSE-2.0
+ 
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<project name="solr-contrib-build">
+  <!-- TODO: adjust build.dir/dist.dir appropriately when a contrib project is run individually -->
+  <property name="build.dir" location="../../build/contrib/${ant.project.name}"/>
+  <property name="dist.dir" location="../../dist/"/>
+  	
+  <import file="../common-build.xml"/>
+
+  <target name="build-solr" unless="solr.core.compiled">
+    <ant dir="${common-solr.dir}" target="compile-test" inheritAll="false"/>
+    <!-- set the property for this ant execution to speed up later tasks depending on this -->
+    <property name="solr.core.compiled" value="true"/>
+  </target>
+  
+  <target name="compile-core" depends="build-solr, common.compile-core"/>
+  
+  <macrodef name="solr-contrib-uptodate">
+    <attribute name="name"/>
+    <attribute name="property" default="solr-@{name}.uptodate"/>
+    <attribute name="classpath.property" default="solr-@{name}.jar"/>
+    <!-- set jarfile only, if the target jar file has no generic name -->
+    <attribute name="jarfile" default="${common-solr.dir}/build/contrib/solr-@{name}/apache-solr-@{name}-${version}.jar"/>
+    <sequential>
+      <!--<echo message="Checking '@{jarfile}' against source folder '${common.dir}/contrib/@{name}/src/java'"/>-->
+      <property name="@{classpath.property}" location="@{jarfile}"/>
+      <uptodate property="@{property}" targetfile="@{jarfile}">
+        <srcfiles dir="../@{name}/src/main/java" includes="**/*.java"/>
+      </uptodate>
+    </sequential>
+  </macrodef>
+</project>

Added: lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/build.xml?rev=1087603&view=auto
==============================================================================
--- lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/build.xml (added)
+++ lucene/dev/branches/solr2452/solr/contrib/dataimporthandler-extras/build.xml Fri Apr  1 06:58:12 2011
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+ 
+        http://www.apache.org/licenses/LICENSE-2.0
+ 
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+ -->
+
+<project name="solr-dataimporthandler-extras" default="default">
+
+  <description>
+    Data Import Handler Extras
+  </description>
+  
+  <property name="src.dir" location="src/main/java"/>
+  <property name="tests.src.dir" location="src/test/java"/>
+  <property name="tests.userdir" location="src/test/resources"/>
+
+  <import file="../contrib-build.xml"/>
+
+  <solr-contrib-uptodate name="dataimporthandler" 
+                         property="solr-dataimporthandler.uptodate" 
+                         classpath.property="solr-dataimporthandler.jar"/>
+
+  <target name="compile-solr-dataimporthandler" unless="solr-dataimporthandler.uptodate">
+  	<ant dir="${common-solr.dir}/contrib/dataimporthandler" target="default" inheritAll="false"/>
+  </target>
+
+  <!-- 
+       really sucks we do this always, without an up-to-date thing for tests
+       we should probably fix this, the same issue exists in modules
+   -->
+  <target name="compile-solr-dataimporthandler-tests">
+  	<ant dir="${common-solr.dir}/contrib/dataimporthandler" target="compile-test" inheritAll="false"/>
+  </target>
+
+  <path id="classpath">
+    <pathelement location="${common-solr.dir}/build/contrib/solr-dataimporthandler/classes/java"/>
+    <pathelement location="${common-solr.dir}/build/contrib/solr-dataimporthandler/classes/test"/>
+    <fileset dir="${common-solr.dir}/contrib/dataimporthandler/lib" includes="**/*.jar"/>
+    <fileset dir="${common-solr.dir}/contrib/extraction/lib" includes="**/*.jar"/>
+    <path refid="solr.base.classpath"/>
+  </path>
+
+  <target name="compile-core" depends="compile-solr-dataimporthandler, solr-contrib-build.compile-core"/>
+  <target name="compile-test" depends="compile-solr-dataimporthandler-tests, contrib-build.compile-test"/>
+</project>

Modified: lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/build.xml (original)
+++ lucene/dev/branches/solr2452/solr/contrib/dataimporthandler/build.xml Fri Apr  1 06:58:12 2011
@@ -17,295 +17,16 @@
     limitations under the License.
  -->
 
-<project name="solr-dataimporthandler" default="build">
+<project name="solr-dataimporthandler" default="default">
 	
-  <property name="solr-path" value="../.." />
-  <property name="tikalibs-path" value="../extraction/lib" />
-
-  <import file="../../common-build.xml"/>
-  
   <description>
     Data Import Handler
   </description>
-  <path id="classpath.jetty">
-    <!-- jetty -->
-    <fileset dir="${solr-path}/example/lib">
-      <include name="**/*.jar" />
-    </fileset>
-  </path>
-  <path id="common.classpath">
-  	<pathelement location="${solr-path}/build/solr" />
-  	<pathelement location="${solr-path}/build/solrj" />
-  	<fileset dir="${solr-path}/lib" includes="*.jar"/>
-    <path refid="lucene.classpath"/>
-  </path>
-
-  <path id="extras.classpath">
-  	<pathelement location="${solr-path}/build/solr" />
-  	<pathelement location="${solr-path}/build/solrj" />
-  	<pathelement location="target/classes" />
-  	<fileset dir="${solr-path}/lib" includes="*.jar"/>
-  	<fileset dir="lib/" includes="*.jar"/>
-  	<fileset dir="${tikalibs-path}" includes="*.jar"/>
-    <path refid="lucene.classpath"/>
-  </path>
-	
-  <path id="test.classpath">
-  	<path refid="common.classpath" />
-  	<path refid="classpath.jetty" />
-	  <pathelement path="target/classes" />
-  	<pathelement path="target/test-classes" />
-    <pathelement location="${solr-path}/build/tests"/> <!-- include solr test code -->
-    <pathelement location="${solr-path}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-    <pathelement path="${java.class.path}"/>
-  </path>
-
-  <path id="test.extras.classpath">
-  	<path refid="extras.classpath" />
-  	<path refid="classpath.jetty" />
-	  <pathelement path="target/classes" />
-	  <pathelement path="target/extras/classes" />
-  	<pathelement path="target/test-classes" />
-  	<pathelement path="target/extras/test-classes" />
-    <pathelement location="${solr-path}/build/tests"/> <!-- include solr test code -->
-    <pathelement location="${solr-path}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-    <pathelement path="${java.class.path}"/>
-  </path>
-	
-  <target name="clean">
-  	<delete failonerror="false" dir="target"/>
-    <delete failonerror="false">
-      <fileset dir="src/test/resources" includes="**/dataimport.properties" />
-    </delete>
-    <!-- Clean up examples -->
-    <delete failonerror="false">
-      <!-- we no longer copy things into this directory, but we still clean it up
-           the files are still there from a previous checkout
-        -->
-      <fileset dir="${example}/example-DIH/solr/mail/lib" includes="*.jar" />
-    </delete>
-  </target>
-	
-  <target name="init">
-  	<mkdir dir="target/classes"/>
-    <mkdir dir="${build.javadoc}" />
-    <subant target="compileTests">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-    <subant target="make-manifest">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-  </target>
-	
-  <target name="compile" depends="init">
-    <solr-javac destdir="target/classes"
-                classpathref="common.classpath">
-      <src path="src/main/java" />
-    </solr-javac>
-  </target>
-
-  <target name="compileExtras" depends="compile">
-    <solr-javac destdir="target/extras/classes"
-                classpathref="extras.classpath">
-      <src path="src/extras/main/java" />
-    </solr-javac>
-  </target>
-	
-  <target name="build" depends="compile,compileExtras">
-    <solr-jar destfile="target/${fullnamever}.jar" basedir="target/classes"
-              manifest="../../${dest}/META-INF/MANIFEST.MF" />
-    <solr-jar destfile="target/apache-${ant.project.name}-extras-${version}.jar" basedir="target/extras/classes"
-              manifest="../../${dest}/META-INF/MANIFEST.MF" />
-  </target>
-	
-  <target name="compileTests" depends="compile">
-  	<solr-javac destdir="target/test-classes"
-  	                classpathref="test.classpath">
-  	  <src path="src/test/java" />
-  	</solr-javac>
-    <!-- Copy any data files present to the classpath -->
-    <copy todir="target/test-classes">
-      <fileset dir="src/test/resources" excludes="**/*.java"/>
-    </copy>
-  </target>
-
-  <target name="compileExtrasTests" depends="compileExtras">
-  	<solr-javac destdir="target/extras/test-classes"
-  	                classpathref="test.classpath">
-  	  <src path="src/extras/test/java" />
-  	</solr-javac>
-    <!-- Copy any data files present to the classpath -->
-    <copy todir="target/extras/test-classes">
-      <fileset dir="src/extras/test/resources" excludes="**/*.java"/>
-    </copy>
-  </target>
-
-  <property name="tempDir" value="${junit.output.dir}/temp" />
-  <target  name="test" depends="testCore,testExtras"/>
-	
-  <target name="testCore" depends="compileTests">
-  	<mkdir dir="${junit.output.dir}"/>
-    <!-- <mkdir dir="@{tempDir}/@{pattern}"/> 
-       This is very loud and obnoxious. abuse touch instead for a "quiet" mkdir
-    -->
-  	<touch file="${tempDir}/quiet.ant" verbose="false" mkdirs="true"/>
-    <condition property="runall">
-      <not>
-        <or>
-          <isset property="testcase"/>
-          <isset property="testpackage"/>
-          <isset property="testpackageroot"/>
-        </or>
-      </not>
-    </condition>
-    
-  	<junit printsummary="no"
-           haltonfailure="no"
-           maxmemory="512M"
-           errorProperty="tests.failed"
-           failureProperty="tests.failed"
-           dir="${tempDir}"
-           tempdir="${tempDir}"
-           forkmode="perBatch"
-           >
-      <sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
-      <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-      <sysproperty key="tests.codec" value="${tests.codec}"/>
-      <sysproperty key="tests.locale" value="${tests.locale}"/>
-      <sysproperty key="tests.timezone" value="${tests.timezone}"/>
-      <sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
-      <sysproperty key="tests.iter" value="${tests.iter}"/>
-      <sysproperty key="tests.seed" value="${tests.seed}"/>
-      <sysproperty key="tests.verbose" value="${tests.verbose}"/>
-      <!-- set whether or not nightly tests should run -->
-      <sysproperty key="tests.nightly" value="${tests.nightly}"/>
-      <sysproperty key="jetty.testMode" value="1"/>
-      <sysproperty key="tempDir" file="${tempDir}"/>
-      <sysproperty key="testmethod" value="${testmethod}"/>
-      <jvmarg line="${args}"/>
-      <formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
-      <classpath refid="test.classpath"/>
-      <formatter type="${junit.formatter}"/>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="runall">
-        <fileset dir="src/test/java" includes="${junit.includes}"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
-        <fileset dir="src/test/java" includes="**/${testcase}.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackage">
-        <fileset dir="src/test/java" includes="**/${testpackage}/**/Test*.java,**/${testpackage}/**/*Test.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackageroot">
-        <fileset dir="src/test/java" includes="**/${testpackageroot}/Test*.java,**/${testpackageroot}/*Test.java"/>
-      </batchtest>
-    </junit>
-
-    <fail if="tests.failed">Tests failed!</fail>
-  </target>
-
-  <target name="testExtras" depends="compileExtrasTests">
-  	<mkdir dir="${junit.output.dir}"/>
-    <!-- <mkdir dir="@{tempDir}/@{pattern}"/> 
-       This is very loud and obnoxious. abuse touch instead for a "quiet" mkdir
-    -->
-  	<touch file="${tempDir}/quiet.ant" verbose="false" mkdirs="true"/>
-
-    <condition property="runall">
-      <not>
-        <or>
-          <isset property="testcase"/>
-          <isset property="testpackage"/>
-          <isset property="testpackageroot"/>
-        </or>
-      </not>
-    </condition>    
-    
-  	<junit printsummary="no"
-           haltonfailure="no"
-           maxmemory="512M"
-           errorProperty="tests.failed"
-           failureProperty="tests.failed"
-           dir="${tempDir}"
-           tempdir="${tempDir}"
-           forkmode="perBatch"
-           >
-      <sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
-      <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-      <sysproperty key="tests.codec" value="${tests.codec}"/>
-      <sysproperty key="tests.locale" value="${tests.locale}"/>
-      <sysproperty key="tests.timezone" value="${tests.timezone}"/>
-      <sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
-      <sysproperty key="tests.iter" value="${tests.iter}"/>
-      <sysproperty key="tests.seed" value="${tests.seed}"/>
-      <sysproperty key="tests.verbose" value="${tests.verbose}"/>
-      <!-- set whether or not nightly tests should run -->
-      <sysproperty key="tests.nightly" value="${tests.nightly}"/>
-      <sysproperty key="jetty.testMode" value="1"/>
-      <sysproperty key="tempDir" file="${tempDir}"/>
-      <sysproperty key="testmethod" value="${testmethod}"/>
-      <jvmarg line="${args}"/>
-      <formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
-      <classpath refid="test.extras.classpath"/>
-      <assertions>
-        <enable package="org.apache.lucene"/>
-        <enable package="org.apache.solr"/>
-      </assertions>
-      <formatter type="${junit.formatter}"/>
-  	  
-      <batchtest fork="yes" todir="${junit.output.dir}" if="runall">
-        <fileset dir="src/extras/test/java" includes="${junit.includes}"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
-        <fileset dir="src/extras/test/java" includes="**/${testcase}.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackage">
-        <fileset dir="src/extras/test/java" includes="**/${testpackage}/**/Test*.java,**/${testpackage}/**/*Test.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackageroot">
-        <fileset dir="src/extras/test/java" includes="**/${testpackageroot}/Test*.java,**/${testpackageroot}/*Test.java"/>
-      </batchtest>
-  	  
-  	  
-    </junit>
-
-    <fail if="tests.failed">Tests failed!</fail>
-  </target>
-	
-  <target name="dist" depends="build">
-  	<copy todir="../../build/web">
-  		<fileset dir="src/main/webapp" includes="**" />
-  	</copy>
-  	<mkdir dir="../../build/web/WEB-INF/lib"/>
-  	<!--<copy file="target/${fullnamever}.jar" todir="${solr-path}/build/web/WEB-INF/lib"></copy>-->
-  	<copy file="target/${fullnamever}.jar" todir="${solr-path}/dist"></copy>
-  	<copy file="target/apache-${ant.project.name}-extras-${version}.jar" todir="${solr-path}/dist"></copy>
-  </target>
-	
-  <target name="javadoc">
-   	<sequential>
-      <mkdir dir="${build.javadoc}/contrib-${name}"/>
-
-      <path id="javadoc.classpath">
-        <path refid="common.classpath"/>
-        <path refid="extras.classpath"/>
-      </path>
 
-      <invoke-javadoc
-        destdir="${build.javadoc}/contrib-${name}"
-      	title="${Name} ${version} contrib-${fullnamever} API">
-        <sources>
-          <packageset dir="src/main/java"/>
-          <packageset dir="src/extras/main/java"/>
-        </sources>
-      </invoke-javadoc>
-    </sequential>
-  </target>
+  <property name="src.dir" location="src/main/java"/>
+  <property name="tests.src.dir" location="src/test/java"/>
+  <property name="tests.userdir" location="src/test/resources"/>
 
-  <target name="example" depends="build,dist">
-    <!--
-        this target use to copy libs, but that is no longer needed.
-        now we just depend on dist to ensure the extra's jar exists.
-     -->
-  </target>
+  <import file="../contrib-build.xml"/>
   
 </project>

Modified: lucene/dev/branches/solr2452/solr/contrib/extraction/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/contrib/extraction/build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/contrib/extraction/build.xml (original)
+++ lucene/dev/branches/solr2452/solr/contrib/extraction/build.xml Fri Apr  1 06:58:12 2011
@@ -17,177 +17,16 @@
     limitations under the License.
  -->
 
-<project name="solr-cell" default="build">
+<project name="solr-cell" default="default">
 
-  <property name="solr-path" value="../.." />
-
-  <import file="../../common-build.xml"/>
-  
   <description>
     Solr Integration with Tika for extracting content from binary file formats such as Microsoft Word and Adobe PDF.
   </description>
 
-  <path id="common.classpath">
-    <pathelement location="${solr-path}/build/solr" />
-    <pathelement location="${solr-path}/build/solrj" />
-    <fileset dir="lib" includes="*.jar"/>
-    <fileset dir="${solr-path}/lib" includes="*.jar"/>
-    <path refid="lucene.classpath"/>
-  </path>
-
-  <path id="test.classpath">
-    <path refid="common.classpath" />
-    <pathelement path="${dest}/classes" />
-    <pathelement path="${dest}/test-classes" />
-    <pathelement location="${solr-path}/build/tests"/> <!-- include solr test code -->
-    <pathelement location="${solr-path}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-    <pathelement path="${java.class.path}"/>
-  </path>
-
-  <target name="clean">
-    <delete failonerror="false" dir="${dest}"/>
-  </target>
-
-  <target name="init">
-    <mkdir dir="${dest}/classes"/>
-    <mkdir dir="${build.javadoc}" />
-    <subant target="compileTests">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-    <subant target="make-manifest">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-
-  </target>
-
-  <target name="compile" depends="init">
-    <solr-javac destdir="${dest}/classes"
-    classpathref="common.classpath">
-      <src path="src/main/java" />
-    </solr-javac>
-  </target>
-
-  <target name="build" depends="compile">
-    <solr-jar destfile="${dest}/${fullnamever}.jar" basedir="${dest}/classes"
-              manifest="../../${dest}/META-INF/MANIFEST.MF">
-
-    </solr-jar>
-  </target>
-
-  <target name="compileTests" depends="compile">
-  	<solr-javac destdir="${dest}/test-classes"
-  	                classpathref="test.classpath">
-  	  <src path="src/test/java" />
-  	</solr-javac>
-    <!-- Copy any data files present to the classpath -->
-    <copy todir="${dest}/test-classes">
-      <fileset dir="src/test/resources" excludes="**/*.java"/>
-    </copy>
-  </target>
-
-  <property name="tempDir" value="${junit.output.dir}/temp" />
-
-  <target name="test" depends="compileTests">
-  	<mkdir dir="${junit.output.dir}"/>
-    <!-- <mkdir dir="@{tempDir}/@{pattern}"/> 
-       This is very loud and obnoxious. abuse touch instead for a "quiet" mkdir
-    -->
-  	<touch file="${tempDir}/quiet.ant" verbose="false" mkdirs="true"/>
-
-    <condition property="runall">
-      <not>
-        <or>
-          <isset property="testcase"/>
-          <isset property="testpackage"/>
-          <isset property="testpackageroot"/>
-        </or>
-      </not>
-    </condition>    
-    
-  	<junit printsummary="no"
-           haltonfailure="no"
-           maxmemory="512M"
-           errorProperty="tests.failed"
-           failureProperty="tests.failed"
-           dir="${tempDir}"
-           tempdir="${tempDir}"
-           forkmode="perBatch"
-           >
-      <sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
-      <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-      <sysproperty key="tests.codec" value="${tests.codec}"/>
-      <sysproperty key="tests.locale" value="${tests.locale}"/>
-      <sysproperty key="tests.timezone" value="${tests.timezone}"/>
-      <sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
-      <sysproperty key="tests.iter" value="${tests.iter}"/>
-      <sysproperty key="tests.seed" value="${tests.seed}"/>
-      <sysproperty key="tests.verbose" value="${tests.verbose}"/>
-      <!-- set whether or not nightly tests should run -->
-      <sysproperty key="tests.nightly" value="${tests.nightly}"/>
-      <sysproperty key="jetty.testMode" value="1"/>
-      <sysproperty key="tempDir" file="${tempDir}"/>
-      <sysproperty key="testmethod" value="${testmethod}"/>
-      <jvmarg line="${args}"/>
-      <formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
-      <classpath refid="test.classpath"/>
-      <assertions>
-        <enable package="org.apache.lucene"/>
-        <enable package="org.apache.solr"/>
-      </assertions>
-      <formatter type="${junit.formatter}"/>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="runall">
-        <fileset dir="src/test/java" includes="${junit.includes}"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
-        <fileset dir="src/test/java" includes="**/${testcase}.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackage">
-        <fileset dir="src/test/java" includes="**/${testpackage}/**/Test*.java,**/${testpackage}/**/*Test.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackageroot">
-        <fileset dir="src/test/java" includes="**/${testpackageroot}/Test*.java,**/${testpackageroot}/*Test.java"/>
-      </batchtest>
-    </junit>
-
-    <fail if="tests.failed">Tests failed!</fail>
-  </target>
-
-  <target name="test-reports"
-          description="Generates HTML test reports.">
-    <mkdir dir="${junit.reports}"/>
-    <junitreport todir="${junit.output.dir}">
-      <fileset dir="${junit.output.dir}">
-        <include name="TEST-*.xml"/>
-      </fileset>
-      <report format="frames" todir="${junit.reports}"/>
-    </junitreport>
-  </target>
-
-  <target name="dist" depends="build">
-    <copy file="build/${fullnamever}.jar" todir="${solr-path}/dist"/>
-  </target>
-
-  <target name="example" depends="build">
-    <!-- :NOOP: this use to copy libs but now we can refer to them by path -->
-  </target>
-
-  <target name="javadoc">
-   	<sequential>
-      <mkdir dir="${build.javadoc}/contrib-${name}"/>
-
-      <path id="javadoc.classpath">
-        <path refid="common.classpath"/>
-      </path>
-
-      <invoke-javadoc
-        destdir="${build.javadoc}/contrib-${name}"
-      	title="${Name} ${version} contrib-${fullnamever} API">
-        <sources>
-          <packageset dir="src/main/java"/>
-        </sources>
-      </invoke-javadoc>
-    </sequential>
-  </target>
+  <property name="src.dir" location="src/main/java"/>
+  <property name="tests.src.dir" location="src/test/java"/>
+  <property name="tests.userdir" location="src/test/resources"/>
 
+  <import file="../contrib-build.xml"/>
 
 </project>

Modified: lucene/dev/branches/solr2452/solr/contrib/uima/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/contrib/uima/build.xml?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/contrib/uima/build.xml (original)
+++ lucene/dev/branches/solr2452/solr/contrib/uima/build.xml Fri Apr  1 06:58:12 2011
@@ -17,173 +17,16 @@
     limitations under the License.
  -->
 
-<project name="solr-uima" default="build">
+<project name="solr-uima" default="default">
 
-  <property name="solr-path" value="../.." />
-
-  <import file="../../common-build.xml"/>
-  
   <description>
     Solr Integration with UIMA for extracting metadata from arbitrary (text) fields and enrich document with features extracted from UIMA types (language, sentences, concepts, named entities, etc.)
   </description>
 
-  <path id="common.classpath">
-    <pathelement location="${solr-path}/build/solr" />
-    <pathelement location="${solr-path}/build/solrj" />
-    <fileset dir="lib" includes="*.jar"/>
-    <fileset dir="${solr-path}/lib" includes="*.jar"/>
-    <path refid="lucene.classpath"/>
-    <pathelement location="${basedir}/src/main/resources" />    
-  </path>
-
-  <path id="test.classpath">
-    <path refid="common.classpath" />
-    <pathelement path="${dest}/classes" />
-    <pathelement path="${dest}/test-classes" />
-    <pathelement location="${solr-path}/build/tests"/> <!-- include solr test code -->
-    <pathelement location="${solr-path}/../lucene/build/classes/test-framework" />  <!-- include some lucene test code -->
-    <pathelement path="${java.class.path}"/>
-  </path>
-
-  <target name="clean">
-    <delete failonerror="false" dir="${dest}"/>
-  </target>
-
-  <target name="init">
-    <mkdir dir="${dest}/classes"/>
-    <mkdir dir="${build.javadoc}" />
-    <subant target="compileTests">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-    <subant target="make-manifest">
-      <fileset dir="${solr-path}" includes="build.xml"/>
-    </subant>
-  </target>
-
-  <target name="compile" depends="init">
-    <solr-javac destdir="${dest}/classes"
-    classpathref="common.classpath">
-      <src path="src/main/java" />
-    </solr-javac>
-  </target>
-
-  <target name="build" depends="compile">
-    <solr-jar destfile="${dest}/${fullnamever}.jar" basedir="${dest}/classes"
-              manifest="../../${dest}/META-INF/MANIFEST.MF">
-      <fileset dir="src/main/resources" />
-    </solr-jar>
-  </target>
-
-  <target name="compileTests" depends="compile">
-  	<solr-javac destdir="${dest}/test-classes"
-  	                classpathref="test.classpath">
-  	  <src path="src/test/java" />
-  	</solr-javac>
-        <copy todir="${dest}/test-classes">
-          <fileset dir="src/test/resources" excludes="**/*.java"/>
-        </copy>
-  </target>
-
-  <property name="tempDir" value="${junit.output.dir}/temp" />
-
-  <target name="test" depends="compileTests">
-  	<mkdir dir="${junit.output.dir}"/>
-    <!-- <mkdir dir="@{tempDir}/@{pattern}"/> 
-       This is very loud and obnoxious. abuse touch instead for a "quiet" mkdir
-    -->
-  	<touch file="${tempDir}/quiet.ant" verbose="false" mkdirs="true"/>
-
-    <condition property="runall">
-      <not>
-        <or>
-          <isset property="testcase"/>
-          <isset property="testpackage"/>
-          <isset property="testpackageroot"/>
-        </or>
-      </not>
-    </condition>    
-    
-  	<junit printsummary="no"
-           haltonfailure="no"
-           maxmemory="512M"
-           errorProperty="tests.failed"
-           failureProperty="tests.failed"
-           dir="${tempDir}"
-           tempdir="${tempDir}"
-           forkmode="perBatch"
-           >
-      <sysproperty key="java.util.logging.config.file" value="${common-solr.dir}/testlogging.properties"/>
-      <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/>
-      <sysproperty key="tests.codec" value="${tests.codec}"/>
-      <sysproperty key="tests.locale" value="${tests.locale}"/>
-      <sysproperty key="tests.timezone" value="${tests.timezone}"/>
-      <sysproperty key="tests.multiplier" value="${tests.multiplier}"/>
-      <sysproperty key="tests.iter" value="${tests.iter}"/>
-      <sysproperty key="tests.seed" value="${tests.seed}"/>
-      <sysproperty key="jetty.insecurerandom" value="1"/>
-      <sysproperty key="tempDir" file="${tempDir}"/>
-      <sysproperty key="testmethod" value="${testmethod}"/>
-      <jvmarg line="${args}"/>
-      <formatter classname="${junit.details.formatter}" usefile="false" if="junit.details"/>
-      <classpath refid="test.classpath"/>
-      <assertions>
-        <enable package="org.apache.lucene"/>
-        <enable package="org.apache.solr"/>
-      </assertions>
-      <formatter type="${junit.formatter}"/>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="runall">
-        <fileset dir="src/test/java" includes="${junit.includes}"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
-        <fileset dir="src/test/java" includes="**/${testcase}.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackage">
-        <fileset dir="src/test/java" includes="**/${testpackage}/**/Test*.java,**/${testpackage}/**/*Test.java"/>
-      </batchtest>
-      <batchtest fork="yes" todir="${junit.output.dir}" if="testpackageroot">
-        <fileset dir="src/test/java" includes="**/${testpackageroot}/Test*.java,**/${testpackageroot}/*Test.java"/>
-      </batchtest>
-    </junit>
-
-    <fail if="tests.failed">Tests failed!</fail>
-  </target>
-
-  <target name="test-reports"
-          description="Generates HTML test reports.">
-    <mkdir dir="${junit.reports}"/>
-    <junitreport todir="${junit.output.dir}">
-      <fileset dir="${junit.output.dir}">
-        <include name="TEST-*.xml"/>
-      </fileset>
-      <report format="frames" todir="${junit.reports}"/>
-    </junitreport>
-  </target>
-
-  <target name="dist" depends="build">
-    <copy file="build/${fullnamever}.jar" todir="${solr-path}/dist"/>
-  </target>
-
-  <target name="example" depends="build">
-    <!-- :NOOP: this use to copy libs but now we can refer to them by path -->
-  </target>
-
-  <target name="javadoc">
-   	<sequential>
-      <mkdir dir="${build.javadoc}/contrib-${name}"/>
-
-      <path id="javadoc.classpath">
-        <path refid="common.classpath"/>
-      </path>
-
-      <invoke-javadoc
-        destdir="${build.javadoc}/contrib-${name}"
-      	title="${Name} ${version} contrib-${fullnamever} API">
-        <sources>
-          <packageset dir="src/main/java"/>
-        </sources>
-      </invoke-javadoc>
-    </sequential>
-  </target>
+  <property name="src.dir" location="src/main/java"/>
+  <property name="tests.src.dir" location="src/test/java"/>
+  <property name="tests.userdir" location="src/test/resources"/>
 
+  <import file="../contrib-build.xml"/>
 
 </project>

Copied: lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/BaseDistributedSearchTestCase.java (from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/BaseDistributedSearchTestCase.java?p2=lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/BaseDistributedSearchTestCase.java&p1=lucene/dev/trunk/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java&r1=1087521&r2=1087603&rev=1087603&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/BaseDistributedSearchTestCase.java (original)
+++ lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/BaseDistributedSearchTestCase.java Fri Apr  1 06:58:12 2011
@@ -150,7 +150,7 @@ public abstract class BaseDistributedSea
    * (default is in test-files)
    */
   public String getSolrHome() {
-    return SolrTestCaseJ4.TEST_HOME;
+    return SolrTestCaseJ4.TEST_HOME();
   }
   
   @Override

Copied: lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java (from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/SolrTestCaseJ4.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java?p2=lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java&p1=lucene/dev/trunk/solr/src/test/org/apache/solr/SolrTestCaseJ4.java&r1=1087521&r2=1087603&rev=1087603&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/SolrTestCaseJ4.java Fri Apr  1 06:58:12 2011
@@ -86,7 +86,7 @@ public abstract class SolrTestCaseJ4 ext
   /** Call initCore in @BeforeClass to instantiate a solr core in your test class.
    * deleteCore will be called for you via SolrTestCaseJ4 @AfterClass */
   public static void initCore(String config, String schema) throws Exception {
-    initCore(config, schema, TEST_HOME);
+    initCore(config, schema, TEST_HOME());
   }
 
   /** Call initCore in @BeforeClass to instantiate a solr core in your test class.
@@ -1057,22 +1057,8 @@ public abstract class SolrTestCaseJ4 ext
     }
   }
   
-  private static final String SOURCE_HOME = determineSourceHome();
-  public static String TEST_HOME = getFile("solr/conf").getParent();
-  public static String WEBAPP_HOME = new File(SOURCE_HOME, "src/webapp/web").getAbsolutePath();
-  public static String EXAMPLE_HOME = new File(SOURCE_HOME, "example/solr").getAbsolutePath();
-  public static String EXAMPLE_MULTICORE_HOME = new File(SOURCE_HOME, "example/multicore").getAbsolutePath();
-  public static String EXAMPLE_SCHEMA=EXAMPLE_HOME+"/conf/schema.xml";
-  public static String EXAMPLE_CONFIG=EXAMPLE_HOME+"/conf/solrconfig.xml";
-  
-  static String determineSourceHome() {
-    // ugly, ugly hack to determine the example home without depending on the CWD
-    // this is needed for example/multicore tests which reside outside the classpath
-    File base = getFile("solr/conf/").getAbsoluteFile();
-    while (!new File(base, "solr/CHANGES.txt").exists()) {
-      base = base.getParentFile();
-    }
-    return new File(base, "solr/").getAbsolutePath();
+  public static String TEST_HOME() {
+    return getFile("solr/conf").getParent();
   }
 
   public static Throwable getRootCause(Throwable t) {

Copied: lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java (from r1087521, lucene/dev/trunk/solr/src/test/org/apache/solr/util/AbstractSolrTestCase.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java?p2=lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java&p1=lucene/dev/trunk/solr/src/test/org/apache/solr/util/AbstractSolrTestCase.java&r1=1087521&r2=1087603&rev=1087603&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/util/AbstractSolrTestCase.java (original)
+++ lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/AbstractSolrTestCase.java Fri Apr  1 06:58:12 2011
@@ -90,7 +90,7 @@ public abstract class AbstractSolrTestCa
    * (default is in test-files)
    */
   public String getSolrHome() {
-    return SolrTestCaseJ4.TEST_HOME;
+    return SolrTestCaseJ4.TEST_HOME();
   }
   
   /**

Copied: lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/TestHarness.java (from r1087521, lucene/dev/trunk/solr/src/java/org/apache/solr/util/TestHarness.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/TestHarness.java?p2=lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/TestHarness.java&p1=lucene/dev/trunk/solr/src/java/org/apache/solr/util/TestHarness.java&r1=1087521&r2=1087603&rev=1087603&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/util/TestHarness.java (original)
+++ lucene/dev/branches/solr2452/solr/src/test-framework/org/apache/solr/util/TestHarness.java Fri Apr  1 06:58:12 2011
@@ -61,7 +61,7 @@ import java.util.Map;
  * writing testcases.
  *
  * <p>
- * This class lives in the main source tree (and not in the test source
+ * This class lives in the tests-framework source tree (and not in the test source
  * tree), so that it will be included with even the most minimal solr
  * distribution, in order to encourage plugin writers to create unit 
  * tests for their plugins.

Modified: lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java (original)
+++ lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java Fri Apr  1 06:58:12 2011
@@ -24,6 +24,7 @@ import org.apache.solr.client.solrj.requ
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
+import org.apache.solr.util.ExternalPaths;
 
 /**
  * Abstract base class for testing merge indexes command
@@ -37,7 +38,7 @@ public abstract class MergeIndexesExampl
 
   @Override
   public String getSolrHome() {
-    return SolrJettyTestBase.EXAMPLE_MULTICORE_HOME;
+    return ExternalPaths.EXAMPLE_MULTICORE_HOME;
   }
 
   @Override

Modified: lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java?rev=1087603&r1=1087602&r2=1087603&view=diff
==============================================================================
--- lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java (original)
+++ lucene/dev/branches/solr2452/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java Fri Apr  1 06:58:12 2011
@@ -25,6 +25,7 @@ import org.apache.solr.client.solrj.resp
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrCore;
+import org.apache.solr.util.ExternalPaths;
 
 
 /**
@@ -36,7 +37,7 @@ public abstract class MultiCoreExampleTe
   // protected static final CoreContainer cores = new CoreContainer();
   protected static CoreContainer cores;
 
-  @Override public String getSolrHome() { return SolrJettyTestBase.EXAMPLE_MULTICORE_HOME; }
+  @Override public String getSolrHome() { return ExternalPaths.EXAMPLE_MULTICORE_HOME; }
   
   @Override public String getSchemaFile()     { return getSolrHome()+"/core0/conf/schema.xml";     }
   @Override public String getSolrConfigFile() { return getSolrHome()+"/core0/conf/solrconfig.xml"; }