mirror of https://github.com/apache/lucene.git
427 lines
18 KiB
XML
427 lines
18 KiB
XML
<?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="lucene-solr" default="-projecthelp" basedir=".">
|
|
<target name="-projecthelp">
|
|
<java fork="false" classname="org.apache.tools.ant.Main" taskname="-">
|
|
<arg value="-projecthelp"/>
|
|
<arg value="-f"/>
|
|
<arg value="${ant.file}"/>
|
|
</java>
|
|
</target>
|
|
|
|
<target name="test-help" description="Test runner help">
|
|
<subant buildpath="lucene" target="test-help" inheritall="false" failonerror="true"/>
|
|
</target>
|
|
|
|
<property name="tests.heap-dump-dir" location="heapdumps"/>
|
|
|
|
<target name="precommit" description="Run basic checks before committing"
|
|
depends="check-svn-working-copy,validate,documentation-lint"/>
|
|
|
|
<target name="test" description="Test both Lucene and Solr">
|
|
<subant target="test" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="pitest" description="Run PITest on both Lucene and Solr">
|
|
<subant target="pitest" inheritall="false" failonerror="false">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="documentation" description="Generate Lucene and Solr Documentation">
|
|
<subant target="documentation" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="documentation-lint" description="Validates the generated documentation (HTML errors, broken links,...)">
|
|
<subant target="documentation-lint" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="validate" description="Validate dependencies, licenses, etc." depends="-validate-source-patterns">
|
|
<subant target="validate" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="-validate-source-patterns" unless="disable.source-patterns">
|
|
<!-- check that there are no nocommits or @author javadoc tags: -->
|
|
<property name="validate.currDir" location="."/>
|
|
<pathconvert pathsep="${line.separator}" dirsep="/" property="validate.patternsFound" setonempty="false">
|
|
<fileset dir="${validate.currDir}">
|
|
<include name="**/*.java"/>
|
|
<exclude name="**/backwards/**"/>
|
|
<or>
|
|
<containsregexp expression="@author\b" casesensitive="yes"/>
|
|
<containsregexp expression="\bno(n|)commit\b" casesensitive="no"/>
|
|
<containsregexp expression="\t" casesensitive="no"/>
|
|
</or>
|
|
</fileset>
|
|
<map from="${validate.currDir}${file.separator}" to="* "/>
|
|
</pathconvert>
|
|
<fail if="validate.patternsFound">The following files contain @author tags, tabs or nocommits:${line.separator}${validate.patternsFound}</fail>
|
|
</target>
|
|
|
|
<target name="rat-sources" description="Runs rat across all sources and tests">
|
|
<subant target="rat-sources" inheritall="false" failonerror="true">
|
|
<fileset dir="." includes="extra-targets.xml" /><!-- run rat-sources also for root directory -->
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="resolve" description="Resolves all dependencies">
|
|
<subant target="resolve" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<!-- lucene/test-framework and solr/test-framework are excluded from compilation -->
|
|
<target name="compile" description="Compile Lucene and Solr">
|
|
<subant target="compile" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="compile-test" description="Compile Lucene and Solr tests and test-frameworks">
|
|
<subant target="compile-test" inheritAll="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="jar" description="Build Lucene and Solr Jar files">
|
|
<subant target="jar" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml"/>
|
|
<fileset dir="solr" includes="build.xml"/>
|
|
</subant>
|
|
</target>
|
|
|
|
<property name="version" value="5.0-SNAPSHOT"/>
|
|
<property name="maven-build-dir" value="maven-build"/>
|
|
<property name="maven-version" value="2.2.1"/>
|
|
|
|
<target name="get-maven-poms"
|
|
description="Copy Maven POMs from dev-tools/maven/ to maven-build/">
|
|
<copy todir="${maven-build-dir}" overwrite="true" encoding="UTF-8">
|
|
<fileset dir="${basedir}/dev-tools/maven"/>
|
|
<filterset begintoken="@" endtoken="@">
|
|
<filter token="version" value="${version}"/>
|
|
</filterset>
|
|
<globmapper from="*.template" to="*"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<target name="clean-maven-build"
|
|
description="Clean up Maven POMs in working copy">
|
|
<delete failonerror="true" dir="${maven-build-dir}/"/>
|
|
</target>
|
|
|
|
<target name="generate-maven-artifacts"
|
|
description="Generate Maven Artifacts for Lucene and Solr">
|
|
<property name="maven.dist.dir" location="dist/maven" />
|
|
<mkdir dir="${maven.dist.dir}" />
|
|
<ant dir="lucene" target="filter-pom-templates"/>
|
|
<subant target="generate-maven-artifacts" inheritall="false" failonerror="true">
|
|
<property name="maven.dist.dir" location="${maven.dist.dir}" />
|
|
<property name="filtered.pom.templates.uptodate" value="true"/>
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="validate-maven-dependencies" depends="generate-maven-artifacts" description="Validates maven dependencies, licenses, etc.">
|
|
<subant target="-validate-maven-dependencies" inheritall="false" failonerror="true">
|
|
<property name="filtered.pom.templates.uptodate" value="true"/>
|
|
<fileset dir="lucene" includes="build.xml"/>
|
|
<fileset dir="solr" includes="build.xml"/>
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="run-maven-build" depends="get-maven-poms" description="Runs the Maven build using automatically generated POMs">
|
|
<subant buildpath="." antfile="extra-targets.xml" target="-run-maven-build" inheritall="false" failonerror="true">
|
|
<propertyset>
|
|
<propertyref prefix="maven-"/>
|
|
<propertyref builtin="commandline"/>
|
|
</propertyset>
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="remove-maven-artifacts" description="Removes all Lucene/Solr Maven artifacts from the local repository">
|
|
<echo message="Removing all Lucene/Solr Maven artifacts from '${user.home}/.m2/repository'..."/>
|
|
<delete includeemptydirs="true">
|
|
<fileset dir="${user.home}/.m2/repository" erroronmissingdir="false">
|
|
<include name="org/apache/lucene/**"/>
|
|
<include name="org/apache/solr/**"/>
|
|
</fileset>
|
|
</delete>
|
|
</target>
|
|
|
|
<target name="eclipse" depends="resolve" description="Setup Eclipse configuration">
|
|
<basename file="${basedir}" property="eclipseprojectname"/>
|
|
<copy file="dev-tools/eclipse/dot.project" tofile=".project" overwrite="false" encoding="UTF-8">
|
|
<filterset>
|
|
<filter token="ECLIPSEPROJECTNAME" value="${eclipseprojectname}"/>
|
|
</filterset>
|
|
</copy>
|
|
<mkdir dir=".settings"/>
|
|
<copy todir=".settings/" overwrite="true">
|
|
<fileset dir="dev-tools/eclipse/dot.settings" includes="*.prefs" />
|
|
</copy>
|
|
|
|
<pathconvert property="eclipse.fileset.sourcefolders" pathsep="|" dirsep="/">
|
|
<dirset dir="${basedir}/lucene" includes="**/src/java, **/src/resources, **/src/test, **/src/test-files, **/src/examples" excludes="tools/**, build/**, backwards/**" />
|
|
<dirset dir="${basedir}/solr" includes="**/src/java, **/src/resources, **/src/test, **/src/test-files, **/src/examples" excludes="build/**" />
|
|
<map from="${basedir}/" to=""/>
|
|
</pathconvert>
|
|
<!-- TODO: find a better way to exclude duplicate JAR files & fix the servlet-api mess! -->
|
|
<pathconvert property="eclipse.fileset.libs" pathsep="|" dirsep="/">
|
|
<fileset dir="${basedir}/lucene" includes="**/lib/*.jar" excludes="**/*servlet-api*.jar, analysis/uima/**, tools/**, build/**"/>
|
|
<fileset dir="${basedir}/solr" includes="**/test-lib/*.jar,**/lib/*.jar" excludes="core/test-lib/*servlet-api*.jar, contrib/analysis-extras/**, test-framework/lib/junit*, test-framework/lib/ant*, test-framework/lib/randomizedtesting*, build/**, dist/**, package/**" />
|
|
<map from="${basedir}/" to=""/>
|
|
</pathconvert>
|
|
<xslt in="${ant.file}" out=".classpath" style="dev-tools/eclipse/dot.classpath.xsl" force="true">
|
|
<outputproperty name="indent" value="yes"/>
|
|
<param name="eclipse.fileset.libs" expression="${eclipse.fileset.libs}"/>
|
|
<param name="eclipse.fileset.sourcefolders" expression="${eclipse.fileset.sourcefolders}"/>
|
|
</xslt>
|
|
|
|
<echo>
|
|
SUCCESS: You must right-click your project and choose Refresh.
|
|
Your project must use a Java 7 JRE.
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="clean-eclipse" description="Removes all Eclipse configuration files">
|
|
<delete dir=".settings" failonerror="true"/>
|
|
<delete failonerror="true">
|
|
<fileset dir="." includes=".classpath,.project"/>
|
|
</delete>
|
|
<delete dir="eclipse-build" failonerror="true"/>
|
|
</target>
|
|
|
|
<target name="idea" depends="resolve" description="Setup IntelliJ IDEA configuration">
|
|
<copy todir=".">
|
|
<fileset dir="dev-tools/idea"/>
|
|
</copy>
|
|
<echo>
|
|
To complete IntelliJ IDEA setup, you must manually configure
|
|
File | Project Structure | Project | Project SDK.
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="clean-idea"
|
|
description="Removes all IntelliJ IDEA configuration files">
|
|
<delete dir=".idea" failonerror="true"/>
|
|
<delete failonerror="true">
|
|
<fileset dir="." includes="*.iml,*.ipr,*.iws"/>
|
|
<fileset dir="solr" includes="**/*.iml"/>
|
|
<fileset dir="lucene" includes="**/*.iml"/>
|
|
</delete>
|
|
<delete dir="idea-build" failonerror="true"/>
|
|
</target>
|
|
|
|
<target name="clean" description="Clean Lucene and Solr build dirs">
|
|
<delete dir="dist" />
|
|
<delete dir="${tests.heap-dump-dir}" />
|
|
<subant target="clean" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="ivy-bootstrap" description="Download and install Ivy in the users ant lib dir">
|
|
<subant buildpath="lucene" target="ivy-bootstrap" inheritall="false" failonerror="true"/>
|
|
</target>
|
|
|
|
<target name="jar-checksums" description="Recompute SHA1 checksums for all JAR files.">
|
|
<subant target="jar-checksums" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<!-- define here, as common-build is not included! -->
|
|
<property name="python32.exe" value="python3.2" />
|
|
<property name="fakeRelease" location="lucene/build/fakeRelease"/>
|
|
<property name="fakeReleaseTmp" location="lucene/build/fakeReleaseTmp"/>
|
|
<property name="fakeReleaseVersion" value="5.0.0"/> <!-- *not* -SNAPSHOT, the real version -->
|
|
<property name="smokeTestRelease.testArgs" value=""/>
|
|
|
|
<target name="-load-env">
|
|
<!-- load the properties only here, so not on every invocation /usr/bin/env is called: -->
|
|
<property environment="env"/>
|
|
</target>
|
|
|
|
<target name="-env-JAVA7_HOME" depends="-load-env" if="env.JAVA7_HOME">
|
|
<property name="JAVA7_HOME" value="${env.JAVA7_HOME}"/>
|
|
</target>
|
|
|
|
<target name="nightly-smoke" description="Builds an unsigned release and smoke tests it" depends="clean,-env-JAVA7_HOME">
|
|
<fail unless="JAVA7_HOME">JAVA7_HOME property or environment variable is not defined.</fail>
|
|
<exec executable="${python32.exe}" failonerror="true">
|
|
<arg value="-V"/>
|
|
</exec>
|
|
<property name="svnversion.exe" value="svnversion" />
|
|
<subant target="prepare-release-no-sign" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
<property name="version" value="${fakeReleaseVersion}" />
|
|
</subant>
|
|
<delete dir="${fakeRelease}"/>
|
|
<delete dir="${fakeReleaseTmp}"/>
|
|
<mkdir dir="${fakeRelease}"/>
|
|
<copy todir="${fakeRelease}/lucene">
|
|
<fileset dir="lucene/dist"/>
|
|
</copy>
|
|
<copy todir="${fakeRelease}/solr">
|
|
<fileset dir="solr/package"/>
|
|
</copy>
|
|
<makeurl file="${fakeRelease}" validate="false" property="fakeRelease.uri"/>
|
|
<exec executable="${python32.exe}" failonerror="true">
|
|
<arg value="-u"/>
|
|
<!-- Tell Python not to write any bytecode cache into the filesystem: -->
|
|
<arg value="-B"/>
|
|
<arg file="dev-tools/scripts/smokeTestRelease.py"/>
|
|
<arg value="${fakeRelease.uri}"/>
|
|
<arg value="skip"/>
|
|
<arg value="${fakeReleaseVersion}"/>
|
|
<arg file="${fakeReleaseTmp}"/>
|
|
<arg value="false"/>
|
|
<arg value="-testArgs"/>
|
|
<arg value="${smokeTestRelease.testArgs}"/>
|
|
<env key="JAVA7_HOME" file="${JAVA7_HOME}"/>
|
|
</exec>
|
|
<delete dir="${fakeRelease}"/>
|
|
<delete dir="${fakeReleaseTmp}"/>
|
|
</target>
|
|
|
|
<target name="check-svn-working-copy" description="Checks the status of the SVN working copy">
|
|
<subant buildpath="." antfile="extra-targets.xml" target="-check-svn-working-copy" inheritall="false" failonerror="true"/>
|
|
</target>
|
|
|
|
<target name="run-clover" description="Runs all tests to measure coverage and generates report (pass "ANT_OPTS=-Xmx1536M" as environment)" depends="clean">
|
|
<antcall>
|
|
<param name="run.clover" value="true"/>
|
|
<!-- must be 1, as clover does not like parallel test runs: -->
|
|
<param name="tests.jvms.override" value="1"/>
|
|
<!-- Also override some other props to be fast: -->
|
|
<param name="tests.multiplier" value="1"/>
|
|
<param name="tests.nightly" value="false"/>
|
|
<param name="tests.weekly" value="false"/>
|
|
<param name="tests.badapples" value="true"/>
|
|
<!-- The idea behind Clover is to determine test coverage, so be immune to failing tests: -->
|
|
<param name="tests.haltonfailure" value="false"/>
|
|
|
|
<target name="test"/>
|
|
<target name="-generate-clover-reports"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="-generate-clover-reports">
|
|
<subant buildpath="." antfile="extra-targets.xml" target="-generate-clover-reports" inheritall="false" failonerror="true"/>
|
|
</target>
|
|
|
|
<target name="test-with-heapdumps" depends="-test-with-heapdumps-enabled,-test-with-heapdumps-disabled" description="Runs tests with heap dumps on OOM enabled (if VM supports this)"/>
|
|
|
|
<condition property="vm.supports.heapdumps">
|
|
<or>
|
|
<contains string="${java.vm.name}" substring="hotspot" casesensitive="false"/>
|
|
<contains string="${java.vm.name}" substring="openjdk" casesensitive="false"/>
|
|
<contains string="${java.vm.name}" substring="jrockit" casesensitive="false"/>
|
|
</or>
|
|
</condition>
|
|
|
|
<target name="-test-with-heapdumps-enabled" if="vm.supports.heapdumps">
|
|
<echo level="info" message="${java.vm.name}: Enabling heap dumps on OutOfMemoryError to dir '${tests.heap-dump-dir}'."/>
|
|
<mkdir dir="${tests.heap-dump-dir}"/>
|
|
<delete includeEmptyDirs="true">
|
|
<fileset dir="${tests.heap-dump-dir}" includes="**/*"/>
|
|
</delete>
|
|
<antcall inheritAll="false" target="test">
|
|
<param name="tests.heapdump.args" value="-XX:+HeapDumpOnOutOfMemoryError "-XX:HeapDumpPath=${tests.heap-dump-dir}""/>
|
|
</antcall>
|
|
<pathconvert property="heapdumps.list" setonempty="false" pathsep="${line.separator}">
|
|
<fileset dir="${tests.heap-dump-dir}"/>
|
|
<map from="${tests.heap-dump-dir}${file.separator}" to="* "/>
|
|
</pathconvert>
|
|
<fail if="heapdumps.list" message="Some of the tests produced a heap dump, but did not fail. Maybe a suppressed OutOfMemoryError? Dumps created:${line.separator}${heapdumps.list}"/>
|
|
<delete dir="${tests.heap-dump-dir}"/>
|
|
</target>
|
|
|
|
<target name="-test-with-heapdumps-disabled" unless="vm.supports.heapdumps">
|
|
<echo level="warning" message="WARN: The used JVM (${java.vm.name}) does not support HPROF heap dumps on OutOfMemoryError."/>
|
|
<antcall target="test"/>
|
|
</target>
|
|
|
|
<!-- Jenkins tasks -->
|
|
<target name="-jenkins-base" depends="clean,test-with-heapdumps,validate,documentation-lint,jar-checksums,check-svn-working-copy"/>
|
|
|
|
<target name="jenkins-hourly">
|
|
<antcall>
|
|
<param name="is.jenkins.build" value="true"/>
|
|
<target name="-jenkins-base"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="jenkins-nightly">
|
|
<antcall>
|
|
<param name="is.jenkins.build" value="true"/>
|
|
<param name="tests.nightly" value="true"/>
|
|
<target name="-jenkins-base"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="jenkins-maven-nightly" depends="clean,clean-maven-build">
|
|
<!-- step 1: build, install, deploy, and validate ANT-generated maven artifacts: -->
|
|
<antcall>
|
|
<param name="is.jenkins.build" value="true"/>
|
|
<target name="remove-maven-artifacts"/>
|
|
<!-- this implicitely publishes the maven artifacts: -->
|
|
<target name="validate-maven-dependencies"/>
|
|
</antcall>
|
|
<!-- step 2: run the maven build to check that the pom templates also work to drive "mvn": -->
|
|
<antcall>
|
|
<param name="is.jenkins.build" value="true"/>
|
|
<target name="remove-maven-artifacts"/>
|
|
<target name="run-maven-build"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
<target name="jenkins-clover">
|
|
<antcall>
|
|
<param name="is.jenkins.build" value="true"/>
|
|
<target name="run-clover"/>
|
|
</antcall>
|
|
</target>
|
|
|
|
</project>
|