| <!-- |
| 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.3.0" /> |
| <!-- The version number to assign to the Maven artifacts. Usually something like 1.3-SNAPSHOT --> |
| <property name="maven_version" value="1.3.0"/> |
| <!-- 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" /> |
| |
| |
| |
| <!-- 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"/> |
| |
| <!-- The version suffix of the Lucene artifacts checked into "lib" --> |
| <property name="lucene_version" value="2.4-dev"/> |
| |
| |
| <!-- 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 &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> |
| |
| <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> |