| <?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="common" xmlns:artifact="antlib:org.apache.maven.artifact.ant" |
| xmlns:ivy="antlib:org.apache.ivy.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"/> |
| <property name="dev-tools.dir" value="${common.dir}/../dev-tools"/> |
| <property name="prettify.dir" value="${common.dir}/tools/prettify"/> |
| <property name="maven.build.dir" value="${build.dir}/maven"/> |
| |
| <!-- Give user a chance to override without editing this file |
| (and without typing -D each time it compiles it --> |
| <property file="${user.home}/lucene.build.properties"/> |
| <property file="${user.home}/build.properties"/> |
| <property file="${basedir}/build.properties"/> |
| <property file="${common.dir}/build.properties"/> |
| |
| <tstamp> |
| <format property="current.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> |
| |
| <property name="name" value="${ant.project.name}"/> |
| <property name="Name" value="Lucene"/> |
| <property name="dev.version" value="4.0-SNAPSHOT"/> |
| <property name="tests.luceneMatchVersion" value="4.0"/> |
| <property name="version" value="${dev.version}"/> |
| <property name="spec.version" value="${version}"/> |
| <property name="year" value="2000-${current.year}"/> |
| <property name="final.name" value="lucene-${name}-${version}"/> |
| |
| <property name="common.classpath.excludes" value="**/*.txt,**/*.template,**/*.sha1" /> |
| |
| <property name="ivy.bootstrap.version" value="2.2.0" /> |
| <property name="ivy.resource" value="org/apache/ivy/ant/antlib.xml" /> |
| <available resource="${ivy.resource}" property="ivy.available" /> |
| |
| <property name="junit.jar" value="junit-4.10.jar"/> |
| <property name="junit-location.jar" value="${common.dir}/test-framework/lib/${junit.jar}"/> |
| <path id="junit-path"> |
| <pathelement location="${junit-location.jar}"/> |
| </path> |
| |
| <path id="ant-path"> |
| <fileset dir="${common.dir}/test-framework/lib" includes="ant-*.jar"/> |
| </path> |
| |
| <!-- default arguments to pass to JVM executing tests --> |
| <property name="testmethod" value=""/> |
| <property name="args" value=""/> |
| <property name="tests.threadspercpu" value="1" /> |
| <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="random" /> |
| <property name="tests.postingsformat" value="random" /> |
| <property name="tests.locale" value="random" /> |
| <property name="tests.timezone" value="random" /> |
| <property name="tests.directory" value="random" /> |
| <property name="tests.linedocsfile" value="europarl.lines.txt.gz" /> |
| <property name="tests.iter" value="1" /> |
| <property name="tests.iter.min" value="${tests.iter}" /> |
| <property name="tests.seed" value="random" /> |
| <property name="tests.loggingfile" value="/dev/null"/> |
| <property name="tests.nightly" value="false" /> |
| <property name="tests.weekly" value="false" /> |
| <property name="tests.slow" value="false" /> |
| <property name="tests.cleanthreads.sysprop" value="perMethod"/> |
| <property name="tests.asserts.gracious" value="false"/> |
| <property name="tests.verbose" value="false"/> |
| <property name="tests.infostream" value="${tests.verbose}"/> |
| <property name="tests.heapsize" value="512M"/> |
| |
| <property name="javac.deprecation" value="off"/> |
| <property name="javac.debug" value="on"/> |
| <property name="javac.source" value="1.6"/> |
| <property name="javac.target" value="1.6"/> |
| <property name="javac.source.backwards" value="1.6"/> |
| <property name="javac.target.backwards" value="1.6"/> |
| <!-- clover wants to run with -lib, otherwise we prefer a repeatable |
| classpath --> |
| <property name="javac.includeAntRuntime" value="${run.clover}"/> |
| <property name="javac.args" value="-Xlint -Xlint:-deprecation -Xlint:-serial"/> |
| <property name="bootclasspath" value=""/> |
| <property name="javadoc.link" value="http://download.oracle.com/javase/6/docs/api/"/> |
| <property name="javadoc.link.junit" value="http://junit.sourceforge.net/javadoc/"/> |
| <property name="javadoc.packagelist.dir" value="${common.dir}/tools/javadoc"/> |
| <available file="${javadoc.packagelist.dir}/java6/package-list" property="javadoc.java6.packagelist.exists"/> |
| <property name="javadoc.access" value="protected"/> |
| <property name="javadoc.charset" value="utf-8"/> |
| <property name="javadoc.dir" value="${common.dir}/build/docs/api"/> |
| <property name="javadoc.maxmemory" value="512m" /> |
| <!-- Javadoc classpath --> |
| <path id="javadoc.classpath"> |
| <path refid="classpath"/> |
| <pathelement location="${ant.home}/lib/ant.jar"/> |
| <fileset dir="."> |
| <exclude name="build/**/*.jar"/> |
| <include name="**/lib/*.jar"/> |
| </fileset> |
| </path> |
| |
| <property name="changes.src.dir" value="${common.dir}/site/changes"/> |
| <property name="changes.target.dir" value="${common.dir}/build/docs/changes"/> |
| |
| <property name="project.name" value="site"/> <!-- todo: is this used by anakia or something else? --> |
| <property name="build.encoding" value="utf-8"/> |
| |
| <property name="src.dir" location="src/java"/> |
| <property name="tests.src.dir" location="src/test"/> |
| <property name="tests-framework.src.dir" location="${common.dir}/test-framework/src/java"/> |
| <property name="build.dir" location="build"/> |
| <!-- Needed in case a contrib needs the original build, also for compile-tools to be called from contrib --> |
| <property name="common.build.dir" location="${common.dir}/build"/> |
| <property name="tests.lockdir" location="${common.build.dir}"/> |
| <property name="dist.dir" location="${common.dir}/dist"/> |
| <property name="maven.dist.dir" location="${dist.dir}/maven"/> |
| <property name="m2.repository.url" value="file://${maven.dist.dir}"/> |
| <property name="m2.repository.private.key" value="${user.home}/.ssh/id_dsa"/> |
| |
| <property name="javacc.home" location="${common.dir}"/> |
| <property name="jflex.home" location="${common.dir}"/> |
| |
| <path id="jflex.classpath"> |
| <fileset dir="${jflex.home}/"> |
| <!-- for a JFlex trunk checkout: --> |
| <include name="jflex/target/*.jar"/> |
| <!-- for a JFlex distribution (not yet available): --> |
| <include name="lib/*.jar"/> |
| </fileset> |
| </path> |
| |
| <path id="javacc.classpath"> |
| <fileset dir="${javacc.home}/"> |
| <include name="bin/lib/*.jar"/> |
| </fileset> |
| </path> |
| |
| <property name="backwards.dir" location="backwards"/> |
| <property name="build.dir.backwards" location="${build.dir}/backwards"/> |
| |
| <property name="junit.output.dir" location="${build.dir}/test"/> |
| <property name="junit.output.dir.backwards" location="${build.dir.backwards}/test"/> |
| <property name="junit.reports" location="${build.dir}/test/reports"/> |
| <property name="junit.reports.backwards" location="${build.dir.backwards}/test/reports"/> |
| <property name="junit.excludes" value="**/Abstract*"/> |
| <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"/> |
| |
| <property name="manifest.file" location="${build.dir}/MANIFEST.MF"/> |
| |
| <!-- |
| 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" /> |
| |
| <property name="hg.exe" value="hg" /> |
| <property name="moman.url" value="https://bitbucket.org/jpbarrette/moman" /> |
| <property name="moman.rev" value="120" /> |
| <property name="python.exe" value="python" /> |
| |
| <property name="gpg.exe" value="gpg" /> |
| <property name="gpg.key" value="CODE SIGNING KEY" /> |
| |
| <property name="filtered.pom.templates.dir" location="${common.dir}/build/poms"/> |
| |
| <property name="clover.db.dir" location="${common.dir}/build/test/clover/db"/> |
| <property name="clover.report.dir" location="${common.dir}/build/test/clover/reports"/> |
| |
| <!-- a reasonable default exclusion set, can be overridden for special cases --> |
| <property name="rat.excludes" value="**/TODO,**/*.txt"/> |
| |
| <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> |
| |
| <propertyset id="uptodate.and.compiled.properties" dynamic="true"> |
| <propertyref regex=".*\.uptodate$$"/> |
| <propertyref regex=".*\.compiled$$"/> |
| </propertyset> |
| |
| <patternset id="lucene.local.src.package.patterns" |
| includes="src/,index.html,*build*.xml,docs/,*.txt,contrib/,lib/,backwards/" |
| excludes="**/pom.xml,**/*.iml,site/build/" |
| /> |
| |
| <!-- Default exclude sources and javadoc jars from Ivy fetch to save time and bandwidth --> |
| <condition property="ivy.exclude.types" |
| value="" |
| else="source|javadoc"> |
| <isset property="fetch.sources.javadocs"/> |
| </condition> |
| |
| <!-- Import custom ANT tasks. --> |
| <import file="${common.dir}/tools/custom-tasks.xml" /> |
| |
| <target name="clean" |
| description="Removes contents of build and dist directories"> |
| <delete dir="${build.dir}"/> |
| <delete dir="${dist.dir}"/> |
| <delete file="velocity.log"/> |
| </target> |
| |
| <!-- TODO: maybe make JavaCC checking specific to only the projects |
| that use it (Lucene core and contrib/misc |
| --> |
| <target name="javacc-uptodate-check"> |
| <uptodate property="javacc.files.uptodate"> |
| <srcfiles dir="${src.dir}" includes="**/*.jj" /> |
| <mapper type="glob" from="*.jj" to="*.java"/> |
| </uptodate> |
| </target> |
| |
| <target name="javacc-notice" depends="javacc-uptodate-check" unless="javacc.files.uptodate"> |
| <echo> |
| One or more of the JavaCC .jj files is newer than its corresponding |
| .java file. Run the "javacc" target to regenerate the artifacts. |
| </echo> |
| </target> |
| |
| <target name="init" depends="resolve"> |
| <!-- currently empty --> |
| </target> |
| |
| <target name="resolve" depends="ivy-availability-check,ivy-fail"> |
| <!-- todo, make this a property or something. |
| only special cases need bundles --> |
| <ivy:retrieve type="jar,bundle" log="download-only"/> |
| </target> |
| <target name="ivy-availability-check" unless="ivy.available"> |
| <echo> |
| This build requires Ivy and Ivy could not be found in your ant classpath. |
| |
| (Due to classpath issues and the recursive nature of the Lucene/Solr |
| build system, a local copy of Ivy can not be used an loaded dynamically |
| by the build.xml) |
| |
| You can either manually install a copy of Ivy ${ivy.bootstrap.version} in your ant classpath: |
| http://ant.apache.org/manual/install.html#optionalTasks |
| |
| Or this build file can do it for you by running the Ivy Bootstrap target: |
| ant ivy-bootstrap |
| |
| Either way you will only have to install Ivy one time. |
| |
| 'ant ivy-bootstrap' will install a copy of Ivy into your Ant User Library: |
| ${user.home}/.ant/lib |
| |
| If you would prefer, you can have it installed into an alternative |
| directory using the "-Divy_install_path=/some/path/you/choose" option, |
| but you will have to specify this path every time you build Lucene/Solr |
| in the future... |
| ant ivy-bootstrap -Divy_install_path=/some/path/you/choose |
| ... |
| ant -lib /some/path/you/choose clean compile |
| ... |
| ant -lib /some/path/you/choose clean compile |
| |
| If you have already run ivy-bootstrap, and still get this message, please |
| try using the "--noconfig" option when running ant, or editing your global |
| ant config to allow the user lib to be loaded. See the wiki for more details: |
| http://wiki.apache.org/lucene-java/HowToContribute#antivy |
| </echo> |
| </target> |
| <target name="ivy-fail" unless="ivy.available"> |
| <fail>Ivy is not available</fail> |
| </target> |
| <target name="ivy-bootstrap" description="Download and install Ivy in the users ant lib dir"> |
| <property name="ivy_install_path" location="${user.home}/.ant/lib" /> |
| <mkdir dir="${ivy_install_path}"/> |
| <echo message="installing ivy ${ivy.bootstrap.version} to ${ivy_install_path}"/> |
| <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.bootstrap.version}/ivy-${ivy.bootstrap.version}.jar" |
| dest="${ivy_install_path}/ivy-${ivy.bootstrap.version}.jar" usetimestamp="true"/> |
| </target> |
| |
| <target name="jflex-uptodate-check"> |
| <uptodate property="jflex.files.uptodate"> |
| <srcfiles dir="${src.dir}" includes="**/*.jflex" /> |
| <mapper type="glob" from="*.jflex" to="*.java"/> |
| </uptodate> |
| </target> |
| |
| <target name="jflex-notice" depends="jflex-uptodate-check" unless="jflex.files.uptodate"> |
| <echo> |
| One or more of the JFlex .jflex files is newer than its corresponding |
| .java file. Run the "jflex" target to regenerate the artifacts. |
| </echo> |
| </target> |
| |
| <target name="javacc-check"> |
| <available property="javacc.present" classname="org.javacc.parser.Main"> |
| <classpath refid="javacc.classpath"/> |
| </available> |
| <fail unless="javacc.present"> |
| ################################################################## |
| JavaCC not found. |
| JavaCC Home: ${javacc.home} |
| |
| Please download and install JavaCC 4.1 from: |
| |
| <http://javacc.dev.java.net> |
| |
| Then, create a build.properties file either in your home |
| directory, or within the Lucene directory and set the javacc.home |
| property to the path where JavaCC is installed. For example, |
| if you installed JavaCC in /usr/local/java/javacc-4.1, then set the |
| javacc.home property to: |
| |
| javacc.home=/usr/local/java/javacc-4.1 |
| |
| If you get an error like the one below, then you have not installed |
| things correctly. Please check all your paths and try again. |
| |
| java.lang.NoClassDefFoundError: org.javacc.parser.Main |
| ################################################################## |
| </fail> |
| |
| </target> |
| |
| <target name="jflex-check"> |
| <available property="jflex.present" classname="jflex.anttask.JFlexTask"> |
| <classpath refid="jflex.classpath"/> |
| </available> |
| <fail unless="jflex.present"> |
| ################################################################## |
| JFlex not found. |
| JFlex Home: ${jflex.home} |
| |
| Please install the jFlex 1.5 version (currently not released) |
| from its SVN repository: |
| |
| svn co http://jflex.svn.sourceforge.net/svnroot/jflex/trunk jflex |
| cd jflex |
| mvn install |
| |
| Then, create a build.properties file either in your home |
| directory, or within the Lucene directory and set the jflex.home |
| property to the path where the JFlex trunk checkout is located |
| (in the above example its the directory called "jflex"). |
| |
| ################################################################## |
| </fail> |
| </target> |
| |
| <target name="compile-core" depends="init, clover" |
| description="Compiles core classes"> |
| <compile |
| srcdir="${src.dir}" |
| destdir="${build.dir}/classes/java"> |
| <classpath refid="classpath"/> |
| </compile> |
| |
| <!-- Copy the resources folder (if existent) --> |
| <copy todir="${build.dir}/classes/java"> |
| <fileset dir="${src.dir}/../resources" erroronmissingdir="no"/> |
| </copy> |
| </target> |
| |
| <target name="compile" depends="compile-core"> |
| <!-- convenience target to compile core --> |
| </target> |
| |
| <target name="jar-core" depends="compile-core" |
| description="Packages the JAR file"> |
| <jarify/> |
| </target> |
| |
| <macrodef name="m2-deploy" description="Builds a Maven artifact"> |
| <element name="artifact-attachments" optional="yes"/> |
| <attribute name="pom.xml"/> |
| <attribute name="jar.file" default="${build.dir}/${final.name}.jar"/> |
| <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 id="${m2.repository.id}" url="${m2.repository.url}"/> |
| <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" overwrite="true"> |
| <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 id="${m2.repository.id}" url="${m2.repository.url}"/> |
| <pom refid="maven.project"/> |
| </artifact:deploy> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="build-manifest" description="Builds a manifest file"> |
| <attribute name="title"/> |
| <attribute name="implementation.title"/> |
| <attribute name="spec.version"/> |
| <attribute name="manifest.file" default="${manifest.file}"/> |
| <sequential> |
| <manifest file="@{manifest.file}"> |
| <!-- |
| 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="@{implementation.title}"/> |
| <attribute name="Specification-Title" value="@{title}"/> |
| <!-- spec version must match "digit+{.digit+}*" --> |
| <attribute name="Specification-Version" value="@{spec.version}"/> |
| <attribute name="Specification-Vendor" |
| value="The Apache Software Foundation"/> |
| <attribute name="Implementation-Title" value="@{implementation.title}"/> |
| <!-- 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="${javac.source}"/> |
| <attribute name="X-Compile-Target-JDK" value="${javac.target}"/> |
| </manifest> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="jarify" description="Builds a JAR file"> |
| <attribute name="basedir" default="${build.dir}/classes/java"/> |
| <attribute name="destfile" default="${build.dir}/${final.name}.jar"/> |
| <attribute name="title" default="Lucene Search Engine: ${ant.project.name}"/> |
| <attribute name="excludes" default="**/pom.xml,**/*.iml"/> |
| <attribute name="metainf.source.dir" default="${common.dir}"/> |
| <attribute name="implementation.title" default="org.apache.lucene"/> |
| <attribute name="spec.version" default="${spec.version}"/> |
| <attribute name="manifest.file" default="${manifest.file}"/> |
| <element name="nested" optional="true" implicit="true"/> |
| <sequential> |
| <!-- If possible, include the svnversion --> |
| <exec dir="." executable="${svnversion.exe}" |
| outputproperty="svnversion" failifexecutionfails="false"> |
| <arg line="."/> |
| </exec> |
| |
| <build-manifest title="@{title}" |
| implementation.title="@{implementation.title}" |
| spec.version="@{spec.version}" |
| manifest.file="@{manifest.file}"/> |
| |
| <jar destfile="@{destfile}" |
| basedir="@{basedir}" |
| manifest="@{manifest.file}" |
| excludes="@{excludes}"> |
| <metainf dir="@{metainf.source.dir}" includes="LICENSE.txt,NOTICE.txt"/> |
| <nested /> |
| </jar> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="module-uptodate"> |
| <attribute name="name"/> |
| <attribute name="property"/> |
| <attribute name="jarfile"/> |
| <attribute name="module-src-name" default="@{name}"/> |
| <sequential> |
| <uptodate property="@{property}" targetfile="@{jarfile}"> |
| <srcfiles dir="${common.dir}/../modules/@{module-src-name}/src/java" includes="**/*.java"/> |
| </uptodate> |
| </sequential> |
| </macrodef> |
| |
| <property name="lucene-core.jar" value="${common.dir}/build/core/lucene-core-${version}.jar"/> |
| <target name="check-lucene-core-uptodate" unless="lucene-core.uptodate"> |
| <uptodate property="lucene-core.uptodate" targetfile="${lucene-core.jar}"> |
| <srcfiles dir="${common.dir}/core/src/java" includes="**/*.java"/> |
| </uptodate> |
| </target> |
| <target name="jar-lucene-core" unless="lucene-core.uptodate" depends="check-lucene-core-uptodate"> |
| <ant dir="${common.dir}/core" target="jar-core" inheritAll="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| </ant> |
| <property name="lucene-core.uptodate" value="true"/> |
| </target> |
| |
| <property name="queryparser.jar" value="${common.dir}/../modules/queryparser/build/lucene-queryparser-${version}.jar"/> |
| <target name="check-queryparser-uptodate" unless="queryparser.uptodate"> |
| <module-uptodate name="queryparser" jarfile="${queryparser.jar}" property="queryparser.uptodate"/> |
| </target> |
| <target name="jar-queryparser" unless="queryparser.uptodate" depends="check-queryparser-uptodate"> |
| <ant dir="${common.dir}/../modules/queryparser" target="jar-core" inheritall="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| </ant> |
| <property name="queryparser.uptodate" value="true"/> |
| </target> |
| |
| <property name="analyzers-common.jar" value="${common.dir}/../modules/analysis/build/common/lucene-analyzers-common-${version}.jar"/> |
| <target name="check-analyzers-common-uptodate" unless="analyzers-common.uptodate"> |
| <module-uptodate name="analysis/common" jarfile="${analyzers-common.jar}" property="analyzers-common.uptodate"/> |
| </target> |
| <target name="jar-analyzers-common" unless="analyzers-common.uptodate" depends="check-analyzers-common-uptodate"> |
| <ant dir="${common.dir}/../modules/analysis/common" target="jar-core" inheritall="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| </ant> |
| <property name="analyzers-common.uptodate" value="true"/> |
| </target> |
| |
| <property name="queries.jar" value="${common.dir}/../modules/queries/build/lucene-queries-${version}.jar"/> |
| <target name="check-queries-uptodate" unless="queries.uptodate"> |
| <module-uptodate name="queries" jarfile="${queries.jar}" property="queries.uptodate"/> |
| </target> |
| <target name="jar-queries" unless="queries.uptodate" depends="check-queries-uptodate"> |
| <ant dir="${common.dir}/../modules/queries" target="jar-core" inheritAll="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| </ant> |
| <property name="queries.uptodate" value="true"/> |
| </target> |
| |
| |
| <target name="compile-lucene-core" unless="core.compiled"> |
| <ant dir="${common.dir}/core" target="compile-core" inheritAll="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| </ant> |
| <property name="core.compiled" value="true"/> |
| </target> |
| |
| <target name="compile-test-framework" unless="lucene.test.framework.compiled"> |
| <ant dir="${common.dir}/test-framework" target="compile-core" inheritAll="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| </ant> |
| <property name="lucene.test.framework.compiled" value="true"/> |
| </target> |
| |
| <target name="compile-tools"> |
| <ant dir="${common.dir}/tools" target="compile-core" inheritAll="false"/> |
| </target> |
| |
| <target name="compile-test" depends="compile-core,compile-test-framework"> |
| <compile-test-macro srcdir="${tests.src.dir}" destdir="${build.dir}/classes/test" |
| test.classpath="test.classpath"/> |
| </target> |
| |
| <macrodef name="compile-test-macro" description="Compiles junit tests."> |
| <attribute name="srcdir"/> |
| <attribute name="destdir"/> |
| <attribute name="test.classpath"/> |
| <attribute name="javac.source" default="${javac.source}"/> |
| <attribute name="javac.target" default="${javac.target}"/> |
| <sequential> |
| <compile |
| srcdir="@{srcdir}" |
| destdir="@{destdir}" |
| javac.source="@{javac.source}" |
| javac.target="@{javac.source}"> |
| <classpath refid="@{test.classpath}"/> |
| </compile> |
| |
| <!-- Copy any data files present to the classpath --> |
| <copy todir="@{destdir}"> |
| <fileset dir="@{srcdir}" excludes="**/*.java"/> |
| </copy> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="test-macro" description="Executes junit tests."> |
| <attribute name="junit.output.dir" default="${junit.output.dir}"/> |
| <attribute name="junit.classpath" default="junit.classpath"/> |
| <attribute name="dataDir" default="${tests.src.dir}"/> |
| <attribute name="tempDir" default="${build.dir}/test"/> |
| <attribute name="threadNum" default="1"/> |
| <attribute name="threadTotal" default="1"/> |
| <attribute name="tests.nightly" default="${tests.nightly}"/> |
| <attribute name="tests.weekly" default="${tests.weekly}"/> |
| <attribute name="tests.slow" default="${tests.slow}"/> |
| <attribute name="tests.multiplier" default="${tests.multiplier}"/> |
| |
| <sequential> |
| <condition property="runall"> |
| <not><or> |
| <isset property="testcase" /> |
| <isset property="testpackage" /> |
| <isset property="testpackageroot" /> |
| </or></not> |
| </condition> |
| <!-- <mkdir dir="@{tempDir}/@{pattern}"/> |
| This is very loud and obnoxious. abuse touch instead for a "quiet" mkdir |
| --> |
| <touch file="@{tempDir}/@{threadNum}/quiet.ant" verbose="false" mkdirs="true"/> |
| <junit printsummary="off" haltonfailure="no" maxmemory="${tests.heapsize}" tempdir="@{tempDir}/@{threadNum}" |
| errorProperty="tests.failed" failureProperty="tests.failed" forkmode="perBatch" dir="@{tempDir}/@{threadNum}" |
| filtertrace="false"> |
| <classpath refid="@{junit.classpath}"/> |
| <assertions> |
| <enable package="org.apache.lucene"/> |
| <enable package="org.apache.solr"/> |
| </assertions> |
| |
| <jvmarg line="${args}"/> |
| |
| <!-- allow tests to control debug prints --> |
| <sysproperty key="tests.verbose" value="${tests.verbose}"/> |
| <!-- even more debugging --> |
| <sysproperty key="tests.infostream" value="${tests.infostream}"/> |
| <!-- directory for formatter lock --> |
| <sysproperty key="tests.lockdir" value="${tests.lockdir}"/> |
| <!-- set the codec tests should run with --> |
| <sysproperty key="tests.codec" value="${tests.codec}"/> |
| <!-- set the postingsformat tests should run with --> |
| <sysproperty key="tests.postingsformat" value="${tests.postingsformat}"/> |
| <!-- set the locale tests should run with --> |
| <sysproperty key="tests.locale" value="${tests.locale}"/> |
| <!-- set the timezone tests should run with --> |
| <sysproperty key="tests.timezone" value="${tests.timezone}"/> |
| <!-- set the directory tests should run with --> |
| <sysproperty key="tests.directory" value="${tests.directory}"/> |
| <!-- set the line file source for oal.util.LineFileDocs --> |
| <sysproperty key="tests.linedocsfile" value="${tests.linedocsfile}"/> |
| <!-- set the number of times tests should run --> |
| <sysproperty key="tests.iter" value="${tests.iter}"/> |
| <!-- set the minimum number of times tests should run unless failure --> |
| <sysproperty key="tests.iter.min" value="${tests.iter.min}"/> |
| <!-- set the test seed --> |
| <sysproperty key="tests.seed" value="${tests.seed}"/> |
| <!-- set the Version that tests should run against --> |
| <sysproperty key="tests.luceneMatchVersion" value="${tests.luceneMatchVersion}"/> |
| <!-- for lucene we can be strict, and we don't want false fails even across methods --> |
| <sysproperty key="tests.cleanthreads" value="${tests.cleanthreads.sysprop}"/> |
| <!-- logging config file --> |
| <sysproperty key="java.util.logging.config.file" value="${tests.loggingfile}"/> |
| <!-- set whether or not nightly tests should run --> |
| <sysproperty key="tests.nightly" value="@{tests.nightly}"/> |
| <!-- set whether or not weekly tests should run --> |
| <sysproperty key="tests.weekly" value="@{tests.weekly}"/> |
| <!-- set whether or not slow tests should run --> |
| <sysproperty key="tests.slow" value="@{tests.slow}"/> |
| |
| <!-- set whether tests framework should not require java assertions enabled --> |
| <sysproperty key="tests.asserts.gracious" value="${tests.asserts.gracious}"/> |
| |
| <!-- TODO: create propertyset for test properties, so each project can have its own set --> |
| <sysproperty key="tests.multiplier" value="@{tests.multiplier}"/> |
| <sysproperty key="tempDir" file="@{tempDir}/@{threadNum}"/> |
| |
| <sysproperty key="lucene.version" value="${dev.version}"/> |
| |
| <sysproperty key="testmethod" value="${testmethod}"/> |
| <sysproperty key="jetty.testMode" value="1"/> |
| <sysproperty key="jetty.insecurerandom" value="1"/> |
| <sysproperty key="solr.directoryFactory" value="org.apache.solr.core.MockDirectoryFactory"/> |
| |
| <formatter type="xml"/> |
| <formatter classname="${junit.details.formatter}" usefile="false"/> |
| <batchtest fork="yes" todir="@{junit.output.dir}" if="runall"> |
| <fileset dir="@{dataDir}" includes="**/Test*.java,**/*Test.java" excludes="${junit.excludes}"> |
| <custom classname="${junit.parallel.selector}" classpathref="@{junit.classpath}"> |
| <param name="divisor" value="@{threadTotal}" /> |
| <param name="part" value="@{threadNum}" /> |
| </custom> |
| </fileset> |
| </batchtest> |
| <batchtest fork="yes" todir="@{junit.output.dir}" if="testpackage"> |
| <fileset dir="@{dataDir}" includes="**/${testpackage}/**/Test*.java,**/${testpackage}/**/*Test.java" excludes="${junit.excludes}"> |
| <custom classname="${junit.parallel.selector}" classpathref="@{junit.classpath}"> |
| <param name="divisor" value="@{threadTotal}" /> |
| <param name="part" value="@{threadNum}" /> |
| </custom> |
| </fileset> |
| </batchtest> |
| <batchtest fork="yes" todir="@{junit.output.dir}" if="testpackageroot"> |
| <fileset dir="@{dataDir}" includes="**/${testpackageroot}/Test*.java,**/${testpackageroot}/*Test.java" excludes="${junit.excludes}"> |
| <custom classname="${junit.parallel.selector}" classpathref="@{junit.classpath}"> |
| <param name="divisor" value="@{threadTotal}" /> |
| <param name="part" value="@{threadNum}" /> |
| </custom> |
| </fileset> |
| </batchtest> |
| <batchtest fork="yes" todir="@{junit.output.dir}" if="testcase"> |
| <fileset dir="@{dataDir}" includes="**/${testcase}.java"/> |
| </batchtest> |
| </junit> |
| <fail if="tests.failed">Tests failed!</fail> |
| </sequential> |
| </macrodef> |
| |
| <target name="test" depends="compile-test,validate,junit-mkdir,junit-sequential,junit-parallel" description="Runs unit tests"/> |
| |
| <target name="junit-mkdir"> |
| <mkdir dir="${junit.output.dir}"/> |
| </target> |
| |
| <target name="junit-sequential" if="tests.sequential"> |
| <test-macro/> |
| </target> |
| |
| <target name="junit-parallel" unless="tests.sequential"> |
| <parallel threadsPerProcessor="${tests.threadspercpu}"> |
| <test-macro threadNum="1" threadTotal="4"/> |
| <test-macro threadNum="2" threadTotal="4"/> |
| <test-macro threadNum="3" threadTotal="4"/> |
| <test-macro threadNum="4" threadTotal="4"/> |
| </parallel> |
| </target> |
| |
| |
| <!-- |
| If you want clover test code coverage, run this before the tests. You need clover.jar and the license in your ANT classspath and you need to specify -Drun.clover=true on the command line. |
| |
| See http://issues.apache.org/jira/browse/LUCENE-721 |
| --> |
| <target name="clover" depends="clover.setup, clover.info" description="Instrument the Unit tests using Clover. Requires a Clover 2.x 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="cloverlib.xml"/> |
| <mkdir dir="${clover.db.dir}"/> |
| <clover-setup initString="${clover.db.dir}/lucene_coverage.db" encoding="${build.encoding}"> |
| <fileset dir="${src.dir}"> |
| <include name="org/apache/**/*.java" /> |
| </fileset> |
| <testsources dir="${tests-framework.src.dir}"> |
| <include name="org/apache/**/*.java" /> |
| </testsources> |
| <testsources dir="${tests.src.dir}"> |
| <include name="org/apache/**/*.java" /> |
| </testsources> |
| </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> |
| |
| <target name="generate-test-reports" description="Generates test reports"> |
| <mkdir dir="${junit.reports}"/> |
| <junitreport todir="${junit.output.dir}"> |
| <!-- this fileset let's the task work for individual contribs, |
| as well as the project as a whole |
| --> |
| <fileset dir="${build.dir}"> |
| <include name="**/test/TEST-*.xml"/> |
| </fileset> |
| <report format="frames" todir="${junit.reports}"/> |
| </junitreport> |
| |
| <mkdir dir="${junit.reports.backwards}"/> |
| <junitreport todir="${junit.output.dir.backwards}"> |
| <!-- this fileset let's the task work for individual contribs, |
| as well as the project as a whole |
| --> |
| <fileset dir="${build.dir.backwards}"> |
| <include name="**/test/TEST-*.xml"/> |
| </fileset> |
| <report format="frames" todir="${junit.reports.backwards}"/> |
| </junitreport> |
| </target> |
| |
| <target name="jar" depends="jar-core"> |
| <!-- convenience target to package core JAR --> |
| </target> |
| |
| <target name="jar-src"> |
| <sequential> |
| <mkdir dir="${build.dir}" /> |
| <jarify basedir="${src.dir}" destfile="${build.dir}/${final.name}-src.jar"> |
| <fileset dir="${src.dir}/../resources" erroronmissingdir="no"/> |
| </jarify> |
| </sequential> |
| </target> |
| |
| <target name="default" depends="jar-core"/> |
| |
| <available type="file" file="pom.xml" property="pom.xml.present"/> |
| |
| <!-- TODO, this is really unintuitive how we depend on a target that does not exist --> |
| <target name="javadocs"> |
| <fail message="You must redefine the javadocs task to do something!!!!!"/> |
| </target> |
| |
| <target name="install-maven-tasks" unless="maven-tasks.uptodate" depends="ivy-availability-check,ivy-fail"> |
| <property name="maven-tasks.uptodate" value="true"/> |
| <ivy:cachepath organisation="org.apache.maven" module="maven-ant-tasks" revision="2.1.3" |
| inline="true" conf="master" type="jar" pathid="maven-ant-tasks.classpath"/> |
| <taskdef resource="org/apache/maven/artifact/ant/antlib.xml" |
| uri="antlib:org.apache.maven.artifact.ant" |
| classpathref="maven-ant-tasks.classpath"/> |
| </target> |
| |
| <target name="dist-maven" |
| depends="filter-pom-templates, install-maven-tasks, m2-deploy-lucene-parent-pom, dist-maven-common"/> |
| <target name="dist-maven-common" |
| depends="jar-core, jar-src, javadocs, install-maven-tasks, filter-pom-templates"> |
| <sequential> |
| <property name="top.level.dir" location="${common.dir}/.."/> |
| <pathconvert property="pom.xml"> |
| <mapper> |
| <chainedmapper> |
| <globmapper from="${top.level.dir}*" to="${filtered.pom.templates.dir}*"/> |
| <globmapper from="*build.xml" to="*pom.xml"/> |
| </chainedmapper> |
| </mapper> |
| <path location="${ant.file}"/> |
| </pathconvert> |
| <m2-deploy pom.xml="${pom.xml}"> |
| <artifact-attachments> |
| <attach file="${build.dir}/${final.name}-src.jar" |
| classifier="sources"/> |
| <attach file="${build.dir}/${final.name}-javadoc.jar" |
| classifier="javadoc"/> |
| </artifact-attachments> |
| </m2-deploy> |
| </sequential> |
| </target> |
| |
| <target name="filter-pom-templates" unless="filtered.pom.templates.uptodate"> |
| <mkdir dir="${filtered.pom.templates.dir}"/> |
| <copy todir="${common.dir}/build/poms" overwrite="true"> |
| <fileset dir="${common.dir}/../dev-tools/maven"/> |
| <filterset begintoken="@" endtoken="@"> |
| <filter token="version" value="${version}"/> |
| </filterset> |
| <globmapper from="*.template" to="*"/> |
| </copy> |
| <property name="filtered.pom.templates.uptodate" value="true"/> |
| </target> |
| |
| <target name="m2-deploy-lucene-parent-pom" depends="filter-pom-templates,m2-deploy-grandparent-pom" |
| unless="deployed.lucene.parent.pom.uptodate"> |
| <m2-deploy pom.xml="${filtered.pom.templates.dir}/lucene/pom.xml"/> <!-- Lucene parent POM --> |
| <property name="deployed.lucene.parent.pom.uptodate" value="true"/> |
| </target> |
| |
| <target name="m2-deploy-grandparent-pom" depends="filter-pom-templates" |
| unless="deployed.grandparent.pom.uptodate"> |
| <m2-deploy pom.xml="${filtered.pom.templates.dir}/pom.xml"/> <!-- Lucene/Solr grandparent POM --> |
| <property name="deployed.grandparent.pom.uptodate" value="true"/> |
| </target> |
| |
| <target name="stage-maven-artifacts"> |
| <sequential> |
| <property name="output.build.xml" location="${build.dir}/stage_maven_build.xml"/> |
| <property name="dev-tools.scripts.dir" value="../dev-tools/scripts"/> |
| <exec dir="." executable="perl" failonerror="true" outputproperty="stage.maven.script.output"> |
| <arg value="${dev-tools.scripts.dir}/write.stage.maven.build.xml.pl"/> |
| <arg value="${maven.dist.dir}"/> <!-- Maven distribution artifacts directory --> |
| <arg value="${output.build.xml}"/> <!-- Ant build file to be written --> |
| <arg value="${common.dir}/common-build.xml"/> <!-- Imported from the ant file to be written --> |
| </exec> |
| <echo message="${stage.maven.script.output}"/> |
| </sequential> |
| <echo>Invoking target stage-maven in ${output.build.xml} now...</echo> |
| <ant target="stage-maven" antfile="${output.build.xml}" inheritall="false"> |
| <property name="m2.repository.id" value="${m2.repository.id}"/> |
| <property name="m2.repository.url" value="${m2.repository.url}"/> |
| </ant> |
| </target> |
| |
| <!-- TODO: add cool detector like the ivy one? this requires you have rat --> |
| <target name="rat-sources-typedef"> |
| <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="rat-sources-typedef" |
| description="runs the tasks over source and test files"> |
| <sequential> |
| <!-- create a temp file for the log to go to --> |
| <tempfile property="rat.sources.logfile" |
| prefix="rat" |
| destdir="${java.io.tmpdir}"/> |
| <!-- run rat, going to the file --> |
| <rat:report xmlns:rat="antlib:org.apache.rat.anttasks" |
| reportFile="${rat.sources.logfile}"> |
| <fileset dir="${src.dir}" excludes="${rat.excludes}"/> |
| <fileset dir="${tests.src.dir}" excludes="${rat.excludes}" erroronmissingdir="false"/> |
| <!-- some modules have a src/tools/[java,test] --> |
| <fileset dir="src/tools/java" excludes="${rat.excludes}" erroronmissingdir="false"/> |
| <fileset dir="src/tools/test" excludes="${rat.excludes}" erroronmissingdir="false"/> |
| |
| <!-- bsd-like stuff --> |
| <rat:substringMatcher licenseFamilyCategory="BSD " |
| licenseFamilyName="Modified BSD License"> |
| <!-- brics automaton --> |
| <pattern substring="Copyright (c) 2001-2009 Anders Moeller"/> |
| <!-- snowball --> |
| <pattern substring="Copyright (c) 2001, Dr Martin Porter"/> |
| <!-- UMASS kstem --> |
| <pattern substring="THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF MASSACHUSETTS AND OTHER CONTRIBUTORS"/> |
| <!-- Egothor --> |
| <pattern substring="Egothor Software License version 1.00"/> |
| <!-- JaSpell --> |
| <pattern substring="Copyright (c) 2005 Bruno Martins"/> |
| </rat:substringMatcher> |
| |
| <!-- mit-like --> |
| <rat:substringMatcher licenseFamilyCategory="MIT " |
| licenseFamilyName="The MIT License"> |
| <!-- ICU license --> |
| <pattern substring="Permission is hereby granted, free of charge, to any person obtaining a copy"/> |
| </rat:substringMatcher> |
| |
| <rat:substringMatcher licenseFamilyCategory="GEN " |
| licenseFamilyName="Generated"> |
| <!-- svg files generated by gnuplot --> |
| <pattern substring="Produced by GNUPLOT"/> |
| <!-- snowball stemmers generated by snowball compiler --> |
| <pattern substring="This file was generated automatically by the Snowball to Java compiler"/> |
| <!-- uima tests generated by JCasGen --> |
| <pattern substring="First created by JCasGen"/> |
| </rat:substringMatcher> |
| |
| <!-- built in approved licenses --> |
| <rat:approvedLicense familyName="Apache License Version 2.0"/> |
| <rat:approvedLicense familyName="The MIT License"/> |
| <rat:approvedLicense familyName="Modified BSD License"/> |
| <rat:approvedLicense familyName="Generated"/> |
| </rat:report> |
| <!-- now print the output, for review --> |
| <loadfile property="rat.output" srcFile="${rat.sources.logfile}"/> |
| <echo>${rat.output}</echo> |
| <delete> |
| <fileset file="${rat.sources.logfile}"> |
| <containsregexp expression="^0 Unknown Licenses"/> |
| </fileset> |
| </delete> |
| <!-- fail if we didnt find the pattern --> |
| <fail message="Rat problems were found!"> |
| <condition> |
| <available file="${rat.sources.logfile}"/> |
| </condition> |
| </fail> |
| </sequential> |
| </target> |
| |
| <!--+ |
| | M A C R O S |
| +--> |
| <macrodef name="compile"> |
| <attribute name="srcdir"/> |
| <attribute name="destdir"/> |
| <attribute name="javac.source" default="${javac.source}"/> |
| <attribute name="javac.target" default="${javac.target}"/> |
| <attribute name="includeantruntime" default="${javac.includeAntRuntime}" /> |
| |
| <element name="nested" implicit="yes" optional="yes"/> |
| |
| <sequential> |
| <mkdir dir="@{destdir}"/> |
| <javac |
| includeAntRuntime="@{includeantruntime}" |
| encoding="${build.encoding}" |
| bootclasspath="${bootclasspath}" |
| srcdir="@{srcdir}" |
| destdir="@{destdir}" |
| deprecation="${javac.deprecation}" |
| debug="${javac.debug}" |
| source="@{javac.source}" |
| target="@{javac.target}"> |
| <nested/> |
| <!-- <compilerarg line="-Xmaxwarns 10000000"/> |
| <compilerarg line="-Xmaxerrs 10000000"/> --> |
| <!-- for generics in Java 1.5: --> |
| <compilerarg line="${javac.args}"/> |
| </javac> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="invoke-javacc"> |
| <attribute name="target"/> |
| <attribute name="outputDir"/> |
| <sequential> |
| <mkdir dir="@{outputDir}"/> |
| <javacc |
| target="@{target}" |
| outputDirectory="@{outputDir}" |
| debugTokenManager="${javacc.debug.tokenmgr}" |
| debugParser="${javacc.debug.parser}" |
| debuglookahead="${javacc.debug.lookahead}" |
| javacchome="${javacc.home}" |
| jdkversion="${javac.source}" |
| /> |
| <fixcrlf srcdir="@{outputDir}" includes="*.java" encoding="UTF-8"> |
| <containsregexp expression="Generated.*By.*JavaCC"/> |
| </fixcrlf> |
| </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"/> |
| <attribute name="overview" default="${src.dir}/overview.html"/> |
| <sequential> |
| <antcall target="download-java6-javadoc-packagelist"/> |
| <delete file="@{destdir}/stylesheet.css" failonerror="false"/> |
| <copy todir="@{destdir}" file="${prettify.dir}/prettify.js" overwrite="false" /> |
| <record name="@{destdir}/log_javadoc.txt" action="start" append="no"/> |
| <javadoc |
| overview="@{overview}" |
| bootclasspath="${bootclasspath}" |
| packagenames="org.apache.lucene.*,org.apache.solr.*" |
| destdir="@{destdir}" |
| access="${javadoc.access}" |
| encoding="${build.encoding}" |
| charset="${javadoc.charset}" |
| docencoding="${javadoc.charset}" |
| author="true" |
| version="true" |
| use="true" |
| failonerror="true" |
| source="${ant.java.version}" |
| windowtitle="${Name} ${version} API" |
| doctitle="@{title}" |
| maxmemory="${javadoc.maxmemory}" |
| bottom="Copyright &copy; ${year} Apache Software Foundation. All Rights Reserved."> |
| <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 internal purposes only and might change in incompatible ways in the next release."/> |
| <link offline="true" packagelistLoc="${javadoc.dir}"/> |
| <link offline="true" href="${javadoc.link}" packagelistLoc="${javadoc.packagelist.dir}/java6"/> |
| <bottom><![CDATA[ |
| <script src='{@docRoot}/prettify.js' type='text/javascript'></script> |
| <script type='text/javascript'> |
| (function(){ |
| var oldonload = window.onload; |
| if (typeof oldonload != 'function') { |
| window.onload = prettyPrint; |
| } else { |
| window.onload = function() { |
| oldonload(); |
| prettyPrint(); |
| } |
| } |
| })(); |
| </script> |
| ]]></bottom> |
| |
| <sources /> |
| |
| <classpath refid="javadoc.classpath"/> |
| </javadoc> |
| <record name="@{destdir}/log_javadoc.txt" action="stop"/> |
| |
| <!-- append prettify.css --> |
| <concat destfile="@{destdir}/stylesheet.css" append="true"> |
| <filelist dir="${prettify.dir}" files="prettify.css"/> |
| </concat> |
| |
| <delete> |
| <fileset file="@{destdir}/log_javadoc.txt"> |
| <or> |
| <not> |
| <containsregexp expression="\[javadoc\]\s*[1-9][0-9]*\s*warning"/> |
| </not> |
| <and> |
| <!-- allow 1 warning, if there is also a bootstrap warning generated by Java7 --> |
| <containsregexp expression="\[javadoc\]\s*warning.*bootstrap"/> |
| <containsregexp expression="\[javadoc\]\s*1\s*warning"/> |
| </and> |
| </or> |
| </fileset> |
| </delete> |
| |
| <fail message="Javadocs warnings were found!"> |
| <condition> |
| <and> |
| <available file="@{destdir}/log_javadoc.txt"/> |
| <istrue value="${failonjavadocwarning}"/> |
| </and> |
| </condition> |
| </fail> |
| |
| |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="contrib-crawl"> |
| <attribute name="target" default=""/> |
| <attribute name="failonerror" default="true"/> |
| <sequential> |
| <subant target="@{target}" failonerror="@{failonerror}" inheritall="false"> |
| <propertyset refid="uptodate.and.compiled.properties"/> |
| <fileset dir="." includes="contrib/*/build.xml"/> |
| </subant> |
| </sequential> |
| </macrodef> |
| |
| <target name="download-java6-javadoc-packagelist" unless="javadoc.java6.packagelist.exists"> |
| <mkdir dir="${javadoc.packagelist.dir}/java6"/> |
| <get src="${javadoc.link}/package-list" |
| dest="${javadoc.packagelist.dir}/java6/package-list" ignoreerrors="true"/> |
| </target> |
| |
| <!-- VALIDATION work --> |
| |
| <!-- Generic placeholder target for if we add other validation tasks --> |
| <target name="validate"> |
| </target> |
| |
| <property name="svn.export.dir" location="${build.dir}/svn-export"/> |
| <macrodef name="svn-export-source" |
| description="Runs 'svn export' with the same URL and revision as the current working copy."> |
| <attribute name="source.dir"/> |
| <sequential> |
| <delete dir="${svn.export.dir}" includeemptydirs="true" failonerror="false"/> |
| <get-svn-info directory="@{source.dir}"/> |
| <exec dir="@{source.dir}" executable="${svn.exe}" failonerror="true"> |
| <arg value="export"/> |
| <arg value="--native-eol"/> |
| <arg value="LF"/> |
| <arg value="-r"/> |
| <arg value="${svn.Revision}"/> |
| <arg value="${svn.URL}"/> |
| <arg value="${svn.export.dir}"/> |
| </exec> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="get-svn-info" |
| description="Populates properties svn.URL and svn.Revision using 'svn info'."> |
| <attribute name="directory"/> |
| <sequential> |
| <exec dir="." executable="${svnversion.exe}" outputproperty="svn.ver"/> |
| <fail message="A subversion checkout is required for this target"> |
| <condition> |
| <equals arg1="${svn.ver}" arg2="exported"/> |
| </condition> |
| </fail> |
| <exec dir="@{directory}" executable="${svn.exe}" outputproperty="svn.info" failonerror="true"> |
| <arg value="info"/> |
| </exec> |
| <loadproperties> |
| <propertyresource name="svn.info"/> |
| <filterchain> |
| <linecontainsregexp> |
| <regexp pattern="(URL|Revision):"/> |
| </linecontainsregexp> |
| <replacestring from=": " to="="/> |
| <prefixlines prefix="svn."/> |
| </filterchain> |
| </loadproperties> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="make-checksums" description="Macro for building checksum files"> |
| <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> |
| |
| <macrodef name="sign-artifacts-macro"> |
| <attribute name="artifacts.dir"/> |
| <sequential> |
| <delete failonerror="false"> |
| <fileset dir="@{artifacts.dir}"> |
| <include name="**/*.asc"/> |
| </fileset> |
| </delete> |
| |
| <available property="gpg.input.handler" classname="org.apache.tools.ant.input.SecureInputHandler" |
| value="org.apache.tools.ant.input.SecureInputHandler"/> |
| <!--else:--><property name="gpg.input.handler" value="org.apache.tools.ant.input.DefaultInputHandler"/> |
| <input message="Enter GPG keystore password: >" addproperty="gpg.passphrase"> |
| <handler classname="${gpg.input.handler}" /> |
| </input> |
| |
| <apply executable="${gpg.exe}" inputstring="${gpg.passphrase}" |
| dest="@{artifacts.dir}" type="file" maxparallel="1" verbose="yes"> |
| <arg value="--passphrase-fd"/> |
| <arg value="0"/> |
| <arg value="--batch"/> |
| <arg value="--armor"/> |
| <arg value="--default-key"/> |
| <arg value="${gpg.key}"/> |
| <arg value="--output"/> |
| <targetfile/> |
| <arg value="--detach-sig"/> |
| <srcfile/> |
| |
| <fileset dir="@{artifacts.dir}"> |
| <include name="**/*.jar"/> |
| <include name="**/*.war"/> |
| <include name="**/*.zip"/> |
| <include name="**/*.tgz"/> |
| <include name="**/*.pom"/> |
| </fileset> |
| <globmapper from="*" to="*.asc"/> |
| </apply> |
| </sequential> |
| </macrodef> |
| |
| <property name="rc" value="rc0"/> |
| <property name="remote.staging.dir" value="public_html/staging_area/${rc}/${version}"/> |
| <property name="keyfile" value="${user.home}/.ssh/id_rsa"/> |
| <property name="scp.user" value="${user.name}"/> |
| <!--keys.dir is the location of the https://svn.apache.org/repos/asf/lucene/java/dist/ directory--> |
| <property name="keys.dir" value="${common.dir}/../../dist"/> |
| <macrodef name="copy-to-stage-macro"> |
| <attribute name="artifacts.dir"/> |
| <sequential> |
| <sshexec host="people.apache.org" |
| username="${scp.user}" |
| keyfile="${keyfile}" |
| command="mkdir -p ${remote.staging.dir}"/> |
| <echo>Uploading artifacts to ${scp.user}@people.apache.org:${remote.staging.dir}</echo> |
| <scp todir="${scp.user}@people.apache.org:${remote.staging.dir}" |
| username="${scp.user}" |
| keyfile="${keyfile}" |
| verbose="true"> |
| <fileset dir="${artifacts.dir}"/> |
| <fileset dir="${keys.dir}"> |
| <include name="KEYS"/> |
| </fileset> |
| </scp> |
| </sequential> |
| </macrodef> |
| </project> |