<commit_before><!--
 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="common" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
  <description>
    This file is designed for importing into a main build file, and not intended
    for standalone use.
  </description>

  <dirname file="${ant.file.common}" property="common.dir"/>
  
  <!-- Initialize property values: allow easy customization via build.properties -->
  <property file="build.properties" />

  <property name="Name" value="Solr" />

  <property name="name" value="${ant.project.name}"/>

  <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>

  <!-- 
    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" />

  <!-- Java Version we are compatible with -->
  <property name="java.compat.version" value="1.5" />

  <!-- 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-dev" where X.Y.N is
       "1 greater" then the last version released (on this branch).
    -->
  <property name="version" value="1.4-dev" />
  
  <!-- 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="1.3.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" />

  <!-- 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/j2se/1.5.0/docs/api/"/>
  <property name="javadoc.link.junit"
            value="http://junit.sourceforge.net/javadoc/"/>
  <property name="javadoc.link.lucene"
            value="http://lucene.apache.org/java/docs/api/"/>
  <property name="javadoc.packages" value="org.apache.solr.*"/>
  <property name="build.docs" value="${dest}/docs"/>
  <property name="build.javadoc" value="${common.dir}/${build.docs}/api"/>
  <property name="build.javadoc.solrj" value="${build.docs}/api-solrj"/>
  
  <!-- JUnit properties -->
  <property name="junit.includes" value="**/Test*.java,**/*Test.java"/>
  <property name="junit.output.dir" location="${common.dir}/${dest}/test-results"/>
  <property name="junit.reports" location="${common.dir}/${dest}/test-results/reports"/>

  <!-- Maven properties -->
  <property name="maven.build.dir" value="${basedir}/build/maven"/>
  <property name="maven.dist.dir" value="${basedir}/dist/maven"/>

  <property name="maven.dist.prefix" value="${maven.dist.dir}/org/apache/solr"/>

  <!-- The version suffix of the Lucene artifacts checked into "lib" -->
  <property name="lucene_version" value="2.4.0"/>
  <!-- The version number to assign to the Maven artifacts. -->
  <property name="maven_version" value="1.4-SNAPSHOT"/>

  <!-- 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>
   
   
  <!-- 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"
             sourcepath=""
             classpathref="@{classpathref}">
         <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.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.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"/>
    <!-- NOTE: we use the value of @{file} in the names any properties
         set because macro's don't have variables, and otherwise we
         wouldn't be able to checksum more then one file per build
      -->
    <sequential>
     <checksum file="@{file}"
               property="@{file}.sum"
               algorithm="${checksum.algorithm}" />
     <basename file="@{file}" property="@{file}.base" />
     <concat destfile="@{file}.${checksum.algorithm}"
             force="yes"
             append="false"
             fixlastline="yes">
       <header trimleading="yes">${@{file}.sum}  </header>
       <!-- empty fileset to trick concat -->
       <fileset dir="." excludes="**" />
       <footer trimleading="yes">${@{file}.base}
       </footer>
     </concat>
    </sequential>
  </macrodef>


  <macrodef name="contrib-crawl">
    <attribute name="target" default=""/>
    <attribute name="failonerror" default="true"/>
    <sequential>
      <subant target="@{target}" failonerror="@{failonerror}">
        <fileset dir="."
                 includes="contrib/*/build.xml"
        />
      </subant>
    </sequential>
  </macrodef>

  <macrodef name="invoke-javadoc">
    <element name="sources" optional="yes"/>
    <attribute name="destdir"/>
  	<attribute name="title" default="${Name} ${version} API (${specversion})"/>
    <sequential>
      <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}"
          bottom="Copyright &amp;copy; ${year} Apache Software Foundation.  All Rights Reserved.">
        <tag name="todo" description="To Do:"/>
        <tag name="uml.property" description="UML Property:"/>
      	<link offline="true" packagelistLoc="${build.javadoc}"/>
        <link href="${javadoc.link.java}"/>
        <link href="${javadoc.link.junit}"/>
        <link href="${javadoc.link.lucene}"/>

        <sources />

        <classpath refid="javadoc.classpath"/>
      </javadoc>
   </sequential>
  </macrodef>

  <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>
      <copy file="@{pom.xml}" tofile="${maven.build.dir}/@{pom.xml}">
        <filterset begintoken="@" endtoken="@">
          <filter token="maven_version" value="${maven_version}"/>
        </filterset>
      </copy>
      <artifact:install-provider artifactId="wagon-ssh" version="1.0-beta-2"/>
      <artifact:pom id="maven.project" file="${maven.build.dir}/@{pom.xml}" />
      <artifact:deploy file="@{jar.file}" uniqueVersion="false">
        <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="sign-artifact" description="Signs the artifact">
    <attribute name="input.file"/>
    <attribute name="output.file" default="@{input.file}.asc"/>
    <!--<attribute name="password.file" default="${user.home}/.pwd.txt"/>-->
    <sequential>
      <echo >Signing @{input.file} Sig File: @{output.file}</echo><!--Pass: @{password.file}-->

      <exec executable="gpg" > <!--input="@{password.<EMAIL>}"-->
        <arg value="--armor"/>
        <arg value="--output"/>
        <arg value="@{output.file}"/>
        <arg value="--detach-sig"/>
        <arg value="@{input.file}"/>
      </exec>
    </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="maven.version" default="${maven_version}"/>
    <sequential>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}.jar"/>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}-javadoc.jar"/>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}-sources.jar"/>
    </sequential>
  </macrodef>

  <macrodef name="sign-maven-dependency-artifacts" description="Signs maven artifacts">
    <attribute name="artifact.id"/>
    <attribute name="prefix.dir" default="${maven.dist.prefix}"/>
    <attribute name="maven.version" default="${maven_version}"/>
    <sequential>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}.jar"/>
    </sequential>
  </macrodef>


  <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>

  <!-- 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 make sure the maven-ant-tasks jar is in ANT_HOME/lib, or made
      available to Ant using other mechanisms like -lib or CLASSPATH.
      ##################################################################
    </fail>
  </target>

</project>
<commit_msg>change lucene version to 2.9-dev in common-build.xml<commit_after><!--
 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="common" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
  <description>
    This file is designed for importing into a main build file, and not intended
    for standalone use.
  </description>

  <dirname file="${ant.file.common}" property="common.dir"/>
  
  <!-- Initialize property values: allow easy customization via build.properties -->
  <property file="build.properties" />

  <property name="Name" value="Solr" />

  <property name="name" value="${ant.project.name}"/>

  <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>

  <!-- 
    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" />

  <!-- Java Version we are compatible with -->
  <property name="java.compat.version" value="1.5" />

  <!-- 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-dev" where X.Y.N is
       "1 greater" then the last version released (on this branch).
    -->
  <property name="version" value="1.4-dev" />
  
  <!-- 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="1.3.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" />

  <!-- 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/j2se/1.5.0/docs/api/"/>
  <property name="javadoc.link.junit"
            value="http://junit.sourceforge.net/javadoc/"/>
  <property name="javadoc.link.lucene"
            value="http://lucene.apache.org/java/docs/api/"/>
  <property name="javadoc.packages" value="org.apache.solr.*"/>
  <property name="build.docs" value="${dest}/docs"/>
  <property name="build.javadoc" value="${common.dir}/${build.docs}/api"/>
  <property name="build.javadoc.solrj" value="${build.docs}/api-solrj"/>
  
  <!-- JUnit properties -->
  <property name="junit.includes" value="**/Test*.java,**/*Test.java"/>
  <property name="junit.output.dir" location="${common.dir}/${dest}/test-results"/>
  <property name="junit.reports" location="${common.dir}/${dest}/test-results/reports"/>

  <!-- Maven properties -->
  <property name="maven.build.dir" value="${basedir}/build/maven"/>
  <property name="maven.dist.dir" value="${basedir}/dist/maven"/>

  <property name="maven.dist.prefix" value="${maven.dist.dir}/org/apache/solr"/>

  <!-- The version suffix of the Lucene artifacts checked into "lib" -->
  <property name="lucene_version" value="2.9-dev"/>
  <!-- The version number to assign to the Maven artifacts. -->
  <property name="maven_version" value="1.4-SNAPSHOT"/>

  <!-- 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>
   
   
  <!-- 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"
             sourcepath=""
             classpathref="@{classpathref}">
         <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.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.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"/>
    <!-- NOTE: we use the value of @{file} in the names any properties
         set because macro's don't have variables, and otherwise we
         wouldn't be able to checksum more then one file per build
      -->
    <sequential>
     <checksum file="@{file}"
               property="@{file}.sum"
               algorithm="${checksum.algorithm}" />
     <basename file="@{file}" property="@{file}.base" />
     <concat destfile="@{file}.${checksum.algorithm}"
             force="yes"
             append="false"
             fixlastline="yes">
       <header trimleading="yes">${@{file}.sum}  </header>
       <!-- empty fileset to trick concat -->
       <fileset dir="." excludes="**" />
       <footer trimleading="yes">${@{file}.base}
       </footer>
     </concat>
    </sequential>
  </macrodef>


  <macrodef name="contrib-crawl">
    <attribute name="target" default=""/>
    <attribute name="failonerror" default="true"/>
    <sequential>
      <subant target="@{target}" failonerror="@{failonerror}">
        <fileset dir="."
                 includes="contrib/*/build.xml"
        />
      </subant>
    </sequential>
  </macrodef>

  <macrodef name="invoke-javadoc">
    <element name="sources" optional="yes"/>
    <attribute name="destdir"/>
  	<attribute name="title" default="${Name} ${version} API (${specversion})"/>
    <sequential>
      <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}"
          bottom="Copyright &amp;copy; ${year} Apache Software Foundation.  All Rights Reserved.">
        <tag name="todo" description="To Do:"/>
        <tag name="uml.property" description="UML Property:"/>
      	<link offline="true" packagelistLoc="${build.javadoc}"/>
        <link href="${javadoc.link.java}"/>
        <link href="${javadoc.link.junit}"/>
        <link href="${javadoc.link.lucene}"/>

        <sources />

        <classpath refid="javadoc.classpath"/>
      </javadoc>
   </sequential>
  </macrodef>

  <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>
      <copy file="@{pom.xml}" tofile="${maven.build.dir}/@{pom.xml}">
        <filterset begintoken="@" endtoken="@">
          <filter token="maven_version" value="${maven_version}"/>
        </filterset>
      </copy>
      <artifact:install-provider artifactId="wagon-ssh" version="1.0-beta-2"/>
      <artifact:pom id="maven.project" file="${maven.build.dir}/@{pom.xml}" />
      <artifact:deploy file="@{jar.file}" uniqueVersion="false">
        <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="sign-artifact" description="Signs the artifact">
    <attribute name="input.file"/>
    <attribute name="output.file" default="@{input.file}.asc"/>
    <!--<attribute name="password.file" default="${user.home}/.pwd.txt"/>-->
    <sequential>
      <echo >Signing @{input.file} Sig File: @{output.file}</echo><!--Pass: @{password.file}-->

      <exec executable="gpg" > <!--input="@{password.file}"-->
        <arg value="--armor"/>
        <arg value="--output"/>
        <arg value="@{output.file}"/>
        <arg value="--detach-sig"/>
        <arg value="@{input.file}"/>
      </exec>
    </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="maven.version" default="${maven_version}"/>
    <sequential>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}.jar"/>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}-javadoc.jar"/>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}-sources.jar"/>
    </sequential>
  </macrodef>

  <macrodef name="sign-maven-dependency-artifacts" description="Signs maven artifacts">
    <attribute name="artifact.id"/>
    <attribute name="prefix.dir" default="${maven.dist.prefix}"/>
    <attribute name="maven.version" default="${maven_version}"/>
    <sequential>
      <sign-artifact input.file="@{prefix.dir}/@{artifact.id}/@{maven.version}/@{artifact.id}-@{maven.version}.jar"/>
    </sequential>
  </macrodef>


  <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>

  <!-- 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 make sure the maven-ant-tasks jar is in ANT_HOME/lib, or made
      available to Ant using other mechanisms like -lib or CLASSPATH.
      ##################################################################
    </fail>
  </target>

</project>

{'fraction_non_alphanumeric': 0.17149712698112016, 'fraction_numerical': 0.0038201679611037445, 'mean_word_length': 2.8717760664955385, 'pattern_counts': {'":': 0, '<': 476, '<?xml version=': 0, '>': 476, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 15}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '60069', 'n_tokens_mistral': 9525, 'n_tokens_neox': 8999, 'n_words': 2244}