mirror of https://github.com/apache/lucene.git
311 lines
12 KiB
XML
311 lines
12 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="test" basedir=".">
|
|
<target name="test-help" description="Test runner help">
|
|
<subant target="test-help" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="test" description="Test both Lucene and Solr">
|
|
<sequential>
|
|
<subant target="test" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</sequential>
|
|
</target>
|
|
|
|
<target name="javadocs" description="Generate Lucene and Solr javadocs">
|
|
<sequential>
|
|
<subant target="javadocs" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</sequential>
|
|
</target>
|
|
|
|
<target name="javadocs-lint">
|
|
<sequential>
|
|
<subant target="javadocs-lint" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</sequential>
|
|
</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"/>
|
|
</or>
|
|
</fileset>
|
|
<map from="${validate.currDir}${file.separator}" to="* "/>
|
|
</pathconvert>
|
|
<fail if="validate.patternsFound">The following files contain @author tags or nocommits:${line.separator}${validate.patternsFound}</fail>
|
|
</target>
|
|
|
|
<target name="rat-sources" description="Runs rat across all sources and tests">
|
|
<sequential><subant target="rat-sources" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant></sequential>
|
|
</target>
|
|
|
|
<target name="resolve" depends="clean-jars" description="Resolves all dependencies">
|
|
<sequential><subant target="resolve" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant></sequential>
|
|
</target>
|
|
|
|
<target name="compile" description="Compile Lucene and Solr">
|
|
<sequential>
|
|
|
|
<subant target="compile" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</sequential>
|
|
</target>
|
|
|
|
<property name="version" value="5.0-SNAPSHOT"/>
|
|
<property name="maven-build-dir" value="maven-build"/>
|
|
<target name="get-maven-poms"
|
|
description="Copy Maven POMs from dev-tools/maven/ to ${maven-build-dir}/">
|
|
<copy todir="${maven-build-dir}" overwrite="true">
|
|
<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="Remove ">
|
|
<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}" />
|
|
|
|
<sequential>
|
|
<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>
|
|
</sequential>
|
|
</target>
|
|
|
|
<target name="eclipse" depends="clean-jars, resolve" description="Setup Eclipse configuration">
|
|
<copy file="dev-tools/eclipse/dot.project" tofile=".project" overwrite="false"/>
|
|
<copy file="dev-tools/eclipse/dot.classpath" tofile=".classpath" overwrite="true"/>
|
|
<mkdir dir=".settings"/>
|
|
<copy todir=".settings/" overwrite="true">
|
|
<fileset dir="dev-tools/eclipse/dot.settings" includes="*.prefs" />
|
|
</copy>
|
|
<echo>
|
|
SUCCESS: You must right-click your project and choose Refresh.
|
|
Your project must use a Java 6 JRE.
|
|
</echo>
|
|
</target>
|
|
|
|
<target name="idea" depends="clean-jars, 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>
|
|
</target>
|
|
|
|
<target name="clean" description="Clean Lucene and Solr">
|
|
<delete dir="dist" />
|
|
<sequential>
|
|
<subant target="clean" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
<delete dir="dist" failonerror="false" />
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- TODO: in the future, we don't need to actually put
|
|
jars in the lib/ folders, but can just put in classpath.
|
|
only packaging tasks really need that (and could do it
|
|
under build/ directories) -->
|
|
<target name="clean-jars" description="Clean local jars">
|
|
<delete>
|
|
<fileset dir="." includes="**/*.jar"/>
|
|
</delete>
|
|
</target>
|
|
|
|
<target name="ivy-bootstrap" description="Download and install Ivy in the users ant lib dir">
|
|
<subant target="ivy-bootstrap" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<target name="jar-checksums" description="Recompute SHA1 checksums for all JAR files.">
|
|
<sequential>
|
|
<subant target="jar-checksums" inheritall="false" failonerror="true">
|
|
<fileset dir="lucene" includes="build.xml" />
|
|
<fileset dir="solr" includes="build.xml" />
|
|
</subant>
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- define here, as common-build is not included! -->
|
|
<property name="python32.exe" value="python3.2" />
|
|
<property name="fakeRelease" value="lucene/build/fakeRelease"/>
|
|
<property name="fakeReleaseTmp" value="lucene/build/fakeReleaseTmp"/>
|
|
<property name="fakeReleaseVersion" value="5.0"/> <!-- *not* -SNAPSHOT, the real version -->
|
|
|
|
<target name="nightly-smoke" description="Builds an unsigned release and smoke tests it." depends="clean">
|
|
<sequential>
|
|
<fail unless="JAVA6_HOME">JAVA6_HOME property is not defined.</fail>
|
|
<fail unless="JAVA7_HOME">JAVA7_HOME property is not defined.</fail>
|
|
<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}/lucene/changes">
|
|
<fileset dir="lucene/build/docs/changes"/>
|
|
</copy>
|
|
<get src="http://people.apache.org/keys/group/lucene.asc"
|
|
dest="${fakeRelease}/lucene/KEYS"/>
|
|
<copy todir="${fakeRelease}/solr">
|
|
<fileset dir="solr/package"/>
|
|
</copy>
|
|
<copy file="${fakeRelease}/lucene/KEYS" todir="${fakeRelease}/solr"/>
|
|
<makeurl file="${fakeRelease}" validate="false" property="fakeRelease.uri"/>
|
|
<exec executable="${python32.exe}" failonerror="true">
|
|
<arg value="-u"/>
|
|
<arg value="dev-tools/scripts/smokeTestRelease.py"/>
|
|
<arg value="${fakeRelease.uri}"/>
|
|
<arg value="${fakeReleaseVersion}"/>
|
|
<arg value="${fakeReleaseTmp}"/>
|
|
<arg value="false"/>
|
|
<env key="JAVA6_HOME" value="${JAVA6_HOME}"/>
|
|
<env key="JAVA7_HOME" value="${JAVA7_HOME}"/>
|
|
</exec>
|
|
<delete dir="${fakeRelease}"/>
|
|
<delete dir="${fakeReleaseTmp}"/>
|
|
</sequential>
|
|
</target>
|
|
|
|
<!-- Calls only generate-clover-reports on Lucene, as Solr's is just a clone with other target; the database itsself is fixed -->
|
|
<target name="generate-clover-reports">
|
|
<subant target="generate-clover-reports" inheritall="false" failonerror="true">
|
|
<fileset dir="." includes="build-clover.xml" />
|
|
</subant>
|
|
</target>
|
|
|
|
<!-- Jenkins tasks -->
|
|
<target name="jenkins-hourly" depends="clean,test,validate,-jenkins-javadocs-lint,-svn-status"/>
|
|
|
|
<target name="jenkins-clover">
|
|
<antcall target="-jenkins-clover">
|
|
<param name="run.clover" value="true"/>
|
|
<!-- must be 1, as clover does not like parallel test runs: -->
|
|
<param name="tests.jvms" value="1"/>
|
|
<!-- Also override some other props to be fast, ignoring what's set on command line: -->
|
|
<param name="tests.multiplier" value="1"/>
|
|
<param name="tests.nightly" value="false"/>
|
|
<param name="tests.weekly" value="false"/>
|
|
<param name="tests.multiplier" value="1"/>
|
|
</antcall>
|
|
</target>
|
|
<target name="-jenkins-clover" depends="clean,test,generate-clover-reports"/>
|
|
|
|
<!-- we need this extra condition, as we want to match only on "true", not solely if property is set: -->
|
|
<property name="disable.javadocs-lint" value="false" />
|
|
<condition property="-disable.javadocs-lint">
|
|
<equals arg1="${disable.javadocs-lint}" arg2="true"/>
|
|
</condition>
|
|
<target name="-jenkins-javadocs-lint" unless="-disable.javadocs-lint">
|
|
<antcall target="javadocs-lint"/>
|
|
</target>
|
|
|
|
<!-- define here, as common-build is not included! -->
|
|
<property name="svn.exe" value="svn" />
|
|
|
|
<target name="-svn-status">
|
|
<exec executable="${svn.exe}" dir="." failonerror="true">
|
|
<arg value="status"/>
|
|
<redirector outputproperty="svn.status.output">
|
|
<outputfilterchain>
|
|
<linecontainsregexp>
|
|
<regexp pattern="^\?" />
|
|
</linecontainsregexp>
|
|
<tokenfilter>
|
|
<replaceregex pattern="^........" replace="* " />
|
|
<replacestring from="${file.separator}" to="/" />
|
|
</tokenfilter>
|
|
</outputfilterchain>
|
|
</redirector>
|
|
</exec>
|
|
<fail message="Source checkout is dirty after running tests!!! Offending files:${line.separator}${svn.status.output}">
|
|
<condition>
|
|
<not>
|
|
<equals arg1="${svn.status.output}" arg2=""/>
|
|
</not>
|
|
</condition>
|
|
</fail>
|
|
</target>
|
|
</project>
|