<!-- Solr build file -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<project name="solr" default="usage" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
	
  <import file="common-build.xml"/>
  
  <!-- 3rd party libraries for compilation -->
  <property name="lib" value="lib" />

  <!-- solr source files -->
  <property name="src" value="src" />

  <!-- Destination for distribution files (demo WAR, src distro, etc.) -->
  <property name="dist" value="dist" />

  <!-- Example directory -->
  <property name="example" value="example" />

  <property name="clover.db.dir" location="${dest}/tests/clover/db"/>
  <property name="clover.report.dir" location="${dest}/tests/clover/reports"/>

    <available
            property="clover.present"
            classname="com.cenqua.clover.tasks.CloverReportTask"
            />
   <condition property="clover.enabled">
       <and>
           <isset property="run.clover"/>
           <isset property="clover.present"/>
       </and>
   </condition>
                 
  <!-- Default target: usage.  Prints out instructions. -->
  <target name="usage"
          description="Prints out instructions">
    <echo message="Welcome to the Solr project!" />
    <echo message="Use 'ant example' to create a runnable example configuration." />
    <echo message="And for developers:"/>
    <echo message="Use 'ant clean' to clean compiled files." />
    <echo message="Use 'ant compile' to compile the source code." />
    <echo message="Use 'ant dist' to build the project WAR and JAR files." />
    <echo message="Use 'ant generate-maven-artifacts' to generate maven artifacts." />
    <echo message="Use 'ant package' to generate zip, tgz, and maven artifacts for distribution." />
    <echo message="Use 'ant test' to run unit tests." />
  </target>

  <!-- Clean: cleans compiled files and other temporary artifacts. -->
  <target name="clean" depends="clean-contrib"
          description="Cleans compiled files and other temporary artifacts.">
    <delete dir="${dest}" />
    <delete dir="${dist}" />
  </target>

  <target name="clean-dest"
          description="Cleans out ${dest} but leaves ${dist} alone.  This allows us to run nightly and clover together in Hudson">
    <delete includeemptydirs="true" >
      <fileset dir="${dest}">
        <exclude name="docs/"/>
      </fileset>
    </delete>
  </target>

  <!-- Prepares an entity file for use in Forrest documentation -->
  <target name="init-forrest-entities">
    <!-- no description, don't advertise -->

    <mkdir dir="${dest}" />
  	
  	<!-- A folder containing the expanded war file -->
  	<mkdir dir="${dest}/web" />
  	
    <echo  file="${dest}/solr-specific-forrest-variables.ent" append="false">
      &lt;!ENTITY solr.specversion "${specversion}"&gt;
    </echo>
  </target>


  <!-- ========================================================================= -->
  <!-- ===================== COMPILATION-RELATED TASKS ========================= -->
  <!-- ========================================================================= -->

  <!-- Compile common classes. -->
  <target name="compile-common"
          description="Compile the source code."
          depends="init-forrest-entities">

    <solr-javac destdir="${dest}/common"
                classpathref="compile.classpath">
      <src path="${src}/java" />
      <include name="org/apache/solr/common/**" />
    </solr-javac>
  </target>

  <!-- The compilation classpath -->
  <path id="compile.classpath">
    <fileset dir="${lib}">
      <include name="*.jar" />
    </fileset>
    <pathelement location="${dest}/common"/>
  </path>

  <!-- Compile the project. -->
  <target name="compile"
          description="Compile the source code."
          depends="compile-common,init-forrest-entities">

    <solr-javac destdir="${dest}/core"
                classpathref="compile.classpath.solrj-embedded">
      <src path="${src}/java" />
      <src path="${src}/webapp/src" />
      <src path="client/java/solrj/src" />
      <exclude name="org/apache/solr/common/**" />
    </solr-javac>
  </target>

  <target name="javadoc-core" depends="compile,compile-solrj"  description="Generates javadoc documentation for core.">

    <sequential>
      <mkdir dir="${build.javadoc}/core"/>

      <path id="javadoc.classpath">
        <path refid="compile.classpath"/>
        <path refid="compile.classpath.solrj"/>
        <pathelement location="${dest}/client/solrj"/>
      </path>

      <invoke-javadoc
        destdir="${build.javadoc}/core"
      	title="${Name} ${version} core API (${specversion})">
        <sources>
          <packageset dir="${src}/java">
            <exclude name="org/apache/solr/common/**" />
          </packageset>
          <packageset dir="${src}/webapp/src"/>
        </sources>
      </invoke-javadoc>
    </sequential>
  </target>

  <target name="javadoc-common" depends="compile,compile-solrj"  description="Generates javadoc documentation for core.">

    <sequential>
      <mkdir dir="${build.javadoc}/common"/>

      <path id="javadoc.classpath">
        <path refid="compile.classpath"/>
        <path refid="compile.classpath.solrj"/>
        <pathelement location="${dest}/client/solrj"/>
      </path>

      <invoke-javadoc
        destdir="${build.javadoc}/common"
      	title="${Name} ${version} core API (${specversion})">
        <sources>
          <fileset dir="${src}/java" includes="org/apache/solr/common/**" />
        </sources>
      </invoke-javadoc>
    </sequential>
  </target>

  <target name="javadoc-all" description="Generate javadoc for core, client and contrib">
    <sequential>
      <mkdir dir="${build.javadoc}"/>

      <path id="javadoc.classpath">
         <path refid="compile.classpath"/>
         <path refid="compile.classpath.solrj"/>
         <path refid="compile.classpath.solrj-embedded"/>
         <pathelement location="${dest}/client/solrj"/>
      </path>

      <invoke-javadoc destdir="${build.javadoc}">
        <sources>
          <packageset dir="${src}/java" />
          <packageset dir="${src}/webapp/src" />
          <packageset dir="${solrj-dir}/src" />
          <packageset dir="contrib/dataimporthandler/src/main/java" />

          <group title="Core" packages="org.apache.*" />
          <group title="Common" packages="org.apache.solr.common.*" />
          <group title="SolrJ" packages="org.apache.solr.client.solrj*" />
          <group title="contrib: DataImportHandler" packages="org.apache.solr.handler.dataimport*" />
        </sources>
      </invoke-javadoc>
    </sequential>
  </target>

  <target name="javadoc-contrib" description="Generate javadoc for contrib classes" depends="build-contrib">
    <contrib-crawl target="javadoc"
                   failonerror="true"/>
  </target>

  <target name="javadoc" depends="javadoc-core, javadoc-common, javadoc-contrib, javadoc-solrj, javadoc-all">
  </target>

  <target name="stub-factories" depends="dist-jar"
          description="Generates stub factories as needed">

    <path id="stub.jars">
      <!-- this needs to be a list of all jars that might contain
           classes we want to build factories for
        -->
      <fileset dir="${lib}">
        <include name="lucene-*.jar"/>
      </fileset>
      <fileset dir="${dist}">
        <include name="*.jar"/>
        <exclude name="*solrj*.jar"/>
      </fileset>
    </path>
    <pathconvert property="jar.list" pathsep=" " refid="stub.jars" />
    <property name="stub.list" value="${dest}/need-stub-factories.txt" />
    <java fork="false" 
          classname="org.apache.solr.util.SuggestMissingFactories"
          logError="true"
          failonerror="true"
          classpathref="test.run.classpath"
          output="${stub.list}">
      <arg line="${jar.list}" />
    </java>
    <fail unless="stub.src.path">...
    
  This task requires that the property 'stub.src.path' be set.
      
  It must contain a "path" listing directories containing source
  files that this task should use when looking for classes that
  need factories created, the format is platform specific --
  typically it is  colon seperated in Unix, semi-colon seperated
  on windows, ie:

  ant stub-factories -Dstub.src.path="./src:../lucene/contrib:../lucene/src/java"
      
  FYI: The file ${stub.list} contains a list of classes
  that seem to need stub factories. (if java files can be found to
  use as guides for creating them).
    </fail>              

    <pathconvert pathsep=" " property="stub.src.dirs">
      <path>
        <pathelement path="${stub.src.path}"/>
      </path>
    </pathconvert>
    <exec executable="${basedir}/src/dev-tools/stub-analysis-factory-maker.pl" 
          dir="src/java/org/apache/solr/analysis/"
          failonerror="true">
        <redirector input="${stub.list}">
           <!-- place to put special case classes we want to ignore -->
           <inputfilterchain>
              <linecontainsregexp negate="true">
                 <!-- only for internal Solr highlighting purposes -->
                 <regexp pattern="TokenOrderingFilter"/>
              </linecontainsregexp>
              <linecontainsregexp negate="true">
                 <!-- no way to leverage this in Solr -->
                 <regexp pattern="CachingTokenFilter"/>
              </linecontainsregexp>
              <linecontainsregexp negate="true">
                 <!-- no way to leverage this in Solr -->
                 <regexp pattern="HyphenationCompoundWordTokenFilter"/>
              </linecontainsregexp>
              <linecontainsregexp negate="true">
                 <!-- no way to leverage these in Solr (yet) -->
                 <regexp pattern="Sink\|Tee"/>
              </linecontainsregexp>
              <linecontainsregexp negate="true">
                 <!-- Solr already has a different impl for this -->
                 <regexp pattern="SynonymTokenFilter"/> 
              </linecontainsregexp>
              <linecontainsregexp negate="true">
                 <!-- solr and lucene both have one? ? ? ? -->
                 <regexp pattern="LengthFilter"/> 
              </linecontainsregexp>
           </inputfilterchain>
        </redirector>
      <arg line="${stub.src.dirs}"/>
    </exec>
  </target>

  <!-- ========================================================================= -->
  <!-- ===================== CLIENT: solrj         ============================= -->
  <!-- ========================================================================= -->

  <property name="solrj-dir" value="client/java/solrj" />

  <path id="compile.classpath.solrj">
    <fileset dir="${solrj-dir}/lib">
      <include name="*.jar" />
    </fileset>
    <fileset dir="${lib}">
      <include name="commons-io-*.jar" />
      <include name="*stax-*.jar" />
      <include name="wstx-*.jar" />
    </fileset>
    <pathelement location="${dest}/common"/>
  </path>

  <!-- This depend on all of solr -->
  <path id="compile.classpath.solrj-embedded">
    <path refid="compile.classpath.solrj" />
    <path refid="compile.classpath" />
    <pathelement location="${dest}/core"/>
    
    <!-- jetty -->
    <fileset dir="example/lib">
      <include name="**/*.jar" />
    </fileset>
  </path>
    
  <target name="compile-solrj-core"
          description="Compile the java client."
          depends="compile-common">

    <solr-javac destdir="${dest}/client/solrj"
                classpathref="compile.classpath.solrj">
      <src path="${solrj-dir}/src" />
      <exclude name="org/apache/solr/client/solrj/embedded/**" />
    </solr-javac>
  </target>

  <!-- solrj includes the embedded app -->
  <target name="compile-solrj"
          description="Compile the java client."
          depends="compile,compile-solrj-core">

    <solr-javac destdir="${dest}/client/solrj"
                classpathref="compile.classpath.solrj-embedded">
      <src path="${solrj-dir}/src/org/apache/solr/client/solrj/embedded" />
    </solr-javac>
  </target>
  
  
  <target name="javadoc-solrj" depends="compile-solrj" description="Generates solrj javadoc documentation.">
    <sequential>
      <mkdir dir="${build.javadoc}/solrj"/>

      <path id="javadoc.classpath">
        <path refid="compile.classpath.solrj"/>
        <path refid="compile.classpath.solrj-embedded"/>
      </path>

      <invoke-javadoc
        destdir="${build.javadoc}/solrj"
      	title="${Name}-j ${version} API (${specversion})">
        <sources>
          <packageset dir="${solrj-dir}/src"/>
        </sources>
      </invoke-javadoc>
    </sequential>
  </target>
  


  <!-- ========================================================================= -->
  <!-- ===================== TESTING-RELATED TASKS ============================= -->
  <!-- ========================================================================= -->


  <!-- Classpath for unit test compilation. -->
  <!-- For now, it's the same as main classpath.  Later it will have JUnit, Clover, etc. -->
  <path id="test.compile.classpath">
    <path refid="compile.classpath" />
    <path refid="compile.classpath.solrj-embedded" />
      
    <pathelement location="${dest}/common"/>
    <pathelement location="${dest}/core"/>
    <pathelement location="${dest}/client/solrj"/> <!-- include solrj -->
  </path>

  <path id="test.run.classpath">
    <path refid="test.compile.classpath" />
      <pathelement location="${dest}/tests"/>
      
      <!-- include the solrj classpath and jetty files included in example -->
    <path refid="compile.classpath.solrj" />
    
    <pathelement path="${java.class.path}"/>
  </path>

  <!-- Compile unit tests. -->
  <target name="compileTests"
          description="Compile unit tests."
          depends="compile,compile-solrj">

    <mkdir dir="${dest}/tests" />
    <solr-javac 
       destdir="${dest}/tests"
       classpathref="test.compile.classpath">
      <src path="${src}/test" />
      <src path="${solrj-dir}/test" />
    </solr-javac>
  </target>

  <!-- Run core unit tests. -->
  <target name="test-core"
          description="Runs the core unit tests."
          depends="init-forrest-entities, compileTests, junit" />
	
  <!-- Run contrib unit tests. -->
  <target name="test"
        description="Runs the core unit tests."
        depends="test-core, test-contrib" />
  
  <target name="junit" depends="compileTests">
    <!-- no description so it doesn't show up in -projecthelp -->  
    <mkdir dir="${junit.output.dir}"/>

    <junit printsummary="on"
           haltonfailure="no"
           errorProperty="tests.failed"
           failureProperty="tests.failed"
           dir="src/test/test-files/"
           >
      <formatter type="brief" usefile="false" if="junit.details"/>
      <classpath refid="test.run.classpath"/>
      <formatter type="xml"/>
      <batchtest fork="yes" todir="${junit.output.dir}" unless="testcase">
        <fileset dir="src/test" includes="${junit.includes}"/>
        <!-- this will start jetty and run some tests through HTTP -->
        <fileset dir="${solrj-dir}/test/" includes="${junit.includes}" />
      </batchtest>
      <batchtest fork="yes" todir="${junit.output.dir}" if="testcase">
        <fileset dir="src/test" includes="**/${testcase}.java"/>
        <fileset dir="${solrj-dir}/test/" includes="**/${testcase}.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="clover" depends="clover.setup, clover.info"
          description="Instrument the Unit tests using Clover.  Requires a Clover license and clover.jar in the ANT classpath.  To use, specify -Drun.clover=true on the command line."/>

  <target name="clover.setup" if="clover.enabled">
    <taskdef resource="clovertasks"/>
    <mkdir dir="${clover.db.dir}"/>
    <clover-setup initString="${clover.db.dir}/solr_coverage.db">
      <fileset dir="src/java"/>
      <fileset dir="src/webapp/src"/>
      <fileset dir="${solrj-dir}/src" />
      <fileset dir="contrib/dataimporthandler/src/main/java" />
    </clover-setup>
  </target>

  <target name="clover.info" unless="clover.present">
  	<echo>
      Clover not found. Code coverage reports disabled.
  	</echo>
  </target>

  <target name="clover.check">
	<fail unless="clover.present">
	  ##################################################################
      Clover not found.
      Please make sure clover.jar is in ANT_HOME/lib, or made available
      to Ant using other mechanisms like -lib or CLASSPATH.
      ##################################################################
  	</fail>
  </target>
    <!--
     Run after Junit tests.
     -->
  <target name="generate-clover-reports" depends="clover.check, clover">
    <mkdir dir="${clover.report.dir}"/>
    <clover-report>
       <current outfile="${clover.report.dir}/clover.xml"
                title="${fullnamever}">
          <format type="xml"/>
       </current>
       <current outfile="${clover.report.dir}" title="${fullnamever}">
          <format type="html"/>
       </current>
    </clover-report>
  </target>


  <!-- ========================================================================= -->
  <!-- ===================== DISTRIBUTION-RELATED TASKS ======================== -->
  <!-- ========================================================================= -->


  <!-- Creates the Solr distribution files. -->
  <target name="dist"
          description="Creates the Solr distribution files."
          depends="init-forrest-entities, dist-solrj, dist-jar, dist-contrib, dist-war" />

  <!-- Creates the Solr WAR file. -->
  <target name="dist-war"
          description="Creates the Solr WAR Distribution file."
          depends="compile, make-manifest, dist-jar">
    <mkdir dir="${dist}" />
    <war destfile="${dist}/${fullnamever}.war"
         webxml="${src}/webapp/web/WEB-INF/web.xml"
         filesetmanifest="skip"
         manifest="${dest}/META-INF/MANIFEST.MF">
       <lib dir="${lib}">
         <exclude name="servlet-api*.jar" />
         <exclude name="easymock.jar" />
       </lib>
       <lib dir="${dist}">
         <include name="${fullname}-core-${version}.jar" />
         <include name="${fullname}-common-${version}.jar" />
       </lib>
       <lib dir="client/java/solrj/lib"/>
       <fileset dir="${src}/webapp/web" />
       
       <!-- Include anything put in by contrib projects -->
       <fileset dir="${dest}/web" />
       	
       <metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
    </war>
  </target>

  <target name="dist-src" description="Creates the Solr source distribution files"
          depends="make-manifest">
    <mkdir dir="${dist}" />
    
    <solr-jar destfile="${dist}/${fullname}-core-src-${version}.jar">
      <fileset dir="${src}/java" excludes="org/apache/solr/common/**" />
      <fileset dir="${src}/webapp/src"/>
    </solr-jar>
    <solr-jar destfile="${dist}/${fullname}-common-src-${version}.jar" basedir="${src}/java"
              includes="org/apache/solr/common/**" />
    <solr-jar destfile="${dist}/${fullname}-solrj-src-${version}.jar"
              basedir="client/java/solrj/src" />
    <solr-jar destfile="${dist}/apache-solr-dataimporthandler-src-${version}.jar"
              basedir="contrib/dataimporthandler/src" />
  </target>

  <target name="dist-javadoc" description="Creates the Solr javadoc distribution files"
          depends="make-manifest, javadoc">
    <mkdir dir="${dist}" />

    <solr-jar destfile="${dist}/${fullname}-core-docs-${version}.jar"
              basedir="${build.javadoc}/core" />
    <solr-jar destfile="${dist}/${fullname}-common-docs-${version}.jar"
              basedir="${build.javadoc}/common"/>
    <solr-jar destfile="${dist}/${fullname}-solrj-docs-${version}.jar"
              basedir="${build.javadoc}/solrj" />
    <solr-jar destfile="${dist}/apache-solr-dataimporthandler-docs-${version}.jar"
              basedir="${build.javadoc}/contrib-solr-dataimporthandler" />
  </target>

  <!-- Creates the solr jar. -->
  <target name="dist-jar"
          description="Creates the Solr JAR Distribution file."
          depends="compile, make-manifest">
    <mkdir dir="${dist}" />
    <solr-jar
         destfile="${dist}/${fullname}-core-${version}.jar"
         basedir="${dest}/core" />

    <!-- package the common classes together -->
    <solr-jar
         destfile="${dist}/${fullname}-common-${version}.jar"
         basedir="${dest}/common" />
    
  </target>

  <!-- Creates the solr jar. -->
  <target name="dist-solrj"
          description="Creates the Solr JAR Distribution file."
          depends="compile-solrj, dist-jar">
    <mkdir dir="${dist}" />
    <solr-jar
         destfile="${dist}/${fullname}-solrj-${version}.jar"
         basedir="${dest}/client/solrj" />

    <mkdir  dir="${dist}/solrj-lib" />
    <copy todir="${dist}/solrj-lib">
      <fileset dir="${lib}">
        <include name="commons-codec-*.jar"/>
        <include name="commons-io-*.jar"/>
        <include name="*stax-*.jar" />
        <include name="wstx-*.jar" />
      </fileset>
      <fileset dir="${solrj-dir}/lib">
        <include name="*.jar" />
      </fileset>
    </copy>
      
  </target>

  <target name="example" 
          description="Creates a runnable example configuration."
          depends="init-forrest-entities,dist-contrib,dist-war">
    <copy file="${dist}/${fullnamever}.war"
          tofile="${example}/webapps/${ant.project.name}.war"/>
    <jar destfile="${example}/exampledocs/post.jar"
         basedir="${dest}/core"
         filesetmanifest="skip"
         includes="org/apache/solr/util/SimplePostTool*.class">
       <manifest>
          <attribute name="Main-Class"
                     value="org.apache.solr.util.SimplePostTool"/>
       </manifest>
    </jar>
    
    <copy todir="${example}/solr/bin">
      <fileset dir="${src}/scripts">
        <exclude name="scripts.conf"/>
      </fileset>
    </copy>
    <chmod dir="${example}/solr/bin" perm="755" includes="**"/>
    <delete includeemptydirs="true">
      <fileset dir="${example}/work" includes="**/*"/>
    </delete>
    <echo>See ${example}/README.txt for how to run the Solr example configuration.</echo>
  </target>

  <!-- make a distribution -->
  <target name="package" depends="generate-maven-artifacts"/>

  <target name="create-package"
          description="Packages the Solr Distribution files and Documentation."
          depends="dist, example, javadoc, dist-src, dist-javadoc">

    <copy todir="${build.docs}">
      <fileset dir="site" />
    </copy>

    <delete file="${dist}/${fullnamever}.tgz" failonerror="false" />
    <delete file="${dist}/${fullnamever}.zip" failonerror="false" />

    <tar destfile="${dist}/${fullnamever}.tgz" compression="gzip">
      <tarfileset dir="."
        prefix="${fullnamever}"
        includes="LICENSE.txt NOTICE.txt *.txt *.xml lib/** src/** example/** client/** contrib/"
        excludes="**/data/ **/logs/* **/classes/ **/*.sh **/bin/ src/scripts/ src/site/build/ **/target/ client/ruby/flare/ client/python" />
      <tarfileset dir="."
        mode="755"
        prefix="${fullnamever}"
        includes="**/*.sh **/bin/ src/scripts/" />
      <tarfileset dir="."
        prefix="${fullnamever}"
        includes="dist/**"
        excludes="*.tgz *.zip *.md5 ${dist}/*src-* ${dist}/*docs-*" />
      <tarfileset dir="${build.docs}"
        prefix="${fullnamever}/docs/" />
    </tar>
    <solr-checksum file="${dist}/${fullnamever}.tgz"/>

    <gunzip src="${dist}/${fullnamever}.tgz" dest="${dest}/${fullnamever}.tar"/>
    <untar src="${dest}/${fullnamever}.tar" dest="${dest}"/>

    <fixcrlf srcdir="${dest}/${fullnamever}"
       eol="crlf"
       includes="**/*.txt **/*.xml **/*.java **/*.html **/*.csv **/*.css **/*.properties **/*.jsp **/*.xsl **/*.py **/*.rb **/*.js **/*.json **/*.pl"
     />

    <zip destfile="${dist}/${fullnamever}.zip">
      <zipfileset dir="${dest}/${fullnamever}" 
        prefix="${fullnamever}" 
        excludes="**/*.sh **/bin/ src/scripts/ ${dist}/*-src-* ${dist}/*-docs-*" />
      <zipfileset dir="${dest}/${fullnamever}" 
        prefix="${fullnamever}" 
        includes="**/*.sh **/bin/ src/scripts/"
        filemode="755" />
    </zip>
    <solr-checksum file="${dist}/${fullnamever}.zip"/>

  </target>

  	<target name="build-site" depends="svn-up, init-forrest-entities" description="Prototype Helper for Committers.  Assumes SVN is in the path">
		<delete dir="src/site/build"/>
		<exec executable="forrest" dir="src/site"/>
		<copy todir="site">
			<fileset dir="src/site/build/site"/>
		</copy>
		<exec executable="svn" dir="site">
			<arg value="ci"/>
			<arg value="-m"/>
			<arg value="&quot;Forrest Entity updates&quot;"/>
		</exec>
		<exec executable="svn" dir="src/site">
			<arg value="ci"/>
			<arg value="-m"/>
			<arg value="&quot;Forrest Entity updates&quot;"/>
		</exec>
		<antcall target="svn-up"/>
	</target>
	<target name="svn-up">
		<exec executable="svn">
			<arg value="update"/>
		</exec>
	</target>
  <target name="prepare-release" depends="clean, svn-up, build-site, package" description="Prototype helper for Committers.  Assumes gpg is in the path">
	<exec executable="gpg">
	    <arg value="--armor"/>
	    <arg value="--output"/>
	    <arg value="${dist}/${fullnamever}.tgz.asc"/>
		<arg value="--detach-sig"/>
    	<arg value="${dist}/${fullnamever}.tgz"/>
	  </exec>
	<exec executable="gpg">
	    <arg value="--armor"/>
	    <arg value="--output"/>
	    <arg value="${dist}/${fullnamever}.zip.asc"/>
		<arg value="--detach-sig"/>
    	<arg value="${dist}/${fullnamever}.zip"/>
	  </exec>
    <tar destfile="${dist}/solr-maven.tar">
		<tarfileset dir="${dist}/maven" prefix="maven"/>
    </tar>
	<tar destfile="${dist}/solr.tar">
		<tarfileset dir="${dist}" includes="${fullnamever}.* solr-maven.tar" excludes="${fullnamever}.war"/>
	</tar>
  </target>

  <target name="generate-maven-artifacts" depends="maven.ant.tasks-check, create-package">
    <sequential>

      <mkdir dir="${maven.build.dir}"/>
      <mkdir dir="${maven.dist.dir}"/>

      <!-- ========== SOLR PARENT POM ========== -->

      <m2-deploy pom.xml="${src}/maven/solr-parent-pom.xml.template"/>

      <!-- ========== SOLR SPECIFIC LUCENE ARTIFACTS ========== -->

      <m2-deploy pom.xml="lib/solr-lucene-core-pom.xml.template"
                 jar.file="lib/lucene-core-${lucene_version}.jar" />

      <m2-deploy pom.xml="lib/solr-lucene-contrib-pom.xml.template"/>

      <m2-deploy pom.xml="lib/solr-lucene-analyzers-pom.xml.template"
                 jar.file="lib/lucene-analyzers-${lucene_version}.jar" />

      <m2-deploy pom.xml="lib/solr-lucene-highlighter-pom.xml.template"
                 jar.file="lib/lucene-highlighter-${lucene_version}.jar" />

      <m2-deploy pom.xml="lib/solr-lucene-queries-pom.xml.template"
                 jar.file="lib/lucene-queries-${lucene_version}.jar" />

      <m2-deploy pom.xml="lib/solr-lucene-snowball-pom.xml.template"
                 jar.file="lib/lucene-snowball-${lucene_version}.jar" />

      <m2-deploy  pom.xml="lib/solr-lucene-spellchecker-pom.xml.template"
                  jar.file="lib/lucene-spellchecker-${lucene_version}.jar" />

      <!-- ========== SOLR SPECIFIC COMMONS CSV ========== -->
      <m2-deploy  pom.xml="lib/solr-commons-csv-pom.xml.template"
                  jar.file="lib/commons-csv-1.0-SNAPSHOT-r609327.jar" />

      <!-- ========== SOLR ARTIFACTS ========== -->

      <m2-deploy pom.xml="${src}/maven/solr-common-pom.xml.template"
                 jar.file="${dist}/apache-solr-common-${version}.jar">

        <artifact-attachments>
          <attach file="${dist}/${fullname}-common-src-${version}.jar" classifier="sources"/>
          <attach file="${dist}/${fullname}-common-docs-${version}.jar" classifier="javadoc"/>
        </artifact-attachments>

      </m2-deploy>

      <m2-deploy pom.xml="contrib/dataimporthandler/solr-dataimporthandler-pom.xml.template"
                 jar.file="${dist}/apache-solr-dataimporthandler-${version}.jar">

        <artifact-attachments>
          <attach file="${dist}/apache-solr-dataimporthandler-src-${version}.jar" classifier="sources"/>
          <attach file="${dist}/apache-solr-dataimporthandler-docs-${version}.jar" classifier="javadoc"/>
        </artifact-attachments>
      </m2-deploy>

      <m2-deploy pom.xml="${src}/maven/solr-core-pom.xml.template"
                 jar.file="${dist}/apache-solr-core-${version}.jar">

        <artifact-attachments>
          <attach file="${dist}/apache-solr-core-src-${version}.jar" classifier="sources"/>
          <attach file="${dist}/apache-solr-core-docs-${version}.jar" classifier="javadoc"/>
        </artifact-attachments>

      </m2-deploy>

      <m2-deploy pom.xml="client/java/solrj/solr-solrj-pom.xml.template"
                 jar.file="${dist}/apache-solr-solrj-${version}.jar">

        <artifact-attachments>
          <attach file="${dist}/apache-solr-solrj-src-${version}.jar" classifier="sources"/>
          <attach file="${dist}/apache-solr-solrj-docs-${version}.jar" classifier="javadoc"/>
        </artifact-attachments>

      </m2-deploy>

    </sequential>
  </target>

  <target name="nightly"
          depends="test, create-package">
     <!-- no description, don't advertise -->
  </target>
 <target name="-taskdef">
    <typedef resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:rat.anttasks">
      <classpath>
        <fileset dir="." includes="rat*.jar"/>
      </classpath>
    </typedef>
  </target>
<target name="rat-sources" depends="-taskdef"
    description="runs the tasks over src/java excluding the license directory">
    <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
      <fileset dir="src/java"/>
      <fileset dir="client">
        <exclude name="**/CHANGES.*"/>
      </fileset>
      <fileset dir="contrib/dataimporthandler/src/main/java"/>
      <fileset dir="contrib/dataimporthandler/src/test/java"/>
    </rat:report>
  </target>

</project>


