mirror of https://github.com/apache/lucene.git
Merged revision(s) 1692411 from lucene/dev/branches/branch_5x:
LUCENE-6693: Updated Groovy to 2.4.4, Pegdown to 1.5, Svnkit to 1.8.10. Also fixed some PermGen errors while running full build caused by these updates: Tasks are now installed from root's build.xml git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1692413 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
54be6a3be9
commit
eb2203b597
296
build.xml
296
build.xml
|
@ -18,20 +18,10 @@
|
|||
-->
|
||||
|
||||
<project name="lucene-solr" default="-projecthelp" basedir=".">
|
||||
<!-- 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="lucene/build.properties"/><!-- ${common.dir} -->
|
||||
<import file="lucene/common-build.xml"/>
|
||||
|
||||
<!-- include version number from property file (includes "version.*" properties) -->
|
||||
<loadproperties srcFile="lucene/version.properties"/>
|
||||
<property name="svnkit.version" value="1.8.10"/>
|
||||
|
||||
<!-- define here, as common-build is not included! TODO: maybe include into a property file like the version? -->
|
||||
<property name="python32.exe" value="python3" />
|
||||
<property name="args" value=""/>
|
||||
|
||||
<!-- other settings: -->
|
||||
<property name="tests.heap-dump-dir" location="heapdumps"/>
|
||||
|
||||
<property name="maven-build-dir" value="maven-build"/>
|
||||
|
@ -57,21 +47,41 @@
|
|||
<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 buildpath="." antfile="extra-targets.xml" target="-run-test" inheritall="false" failonerror="true" />
|
||||
<target name="test" description="Test both Lucene and Solr" depends="resolve-groovy">
|
||||
<mkdir dir="lucene/build" />
|
||||
<tempfile property="tests.totals.tmpfile"
|
||||
destdir="lucene/build"
|
||||
prefix=".test-totals-"
|
||||
suffix=".tmp"
|
||||
deleteonexit="true"
|
||||
createfile="true" />
|
||||
|
||||
<subant target="test" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset>
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
<propertyref name="tests.totals.tmpfile" />
|
||||
</propertyset>
|
||||
</subant>
|
||||
|
||||
<property name="tests.totals.toplevel" value="true" />
|
||||
<antcall target="-check-totals" />
|
||||
</target>
|
||||
|
||||
<target name="jacoco" description="Generates JaCoCo code coverage reports">
|
||||
<target name="jacoco" depends="resolve-groovy" description="Generates JaCoCo code coverage reports">
|
||||
<subant target="jacoco" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="pitest" description="Run PITest on both Lucene and Solr">
|
||||
<target name="pitest" depends="resolve-groovy" description="Run PITest on both Lucene and Solr">
|
||||
<subant target="pitest" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -79,26 +89,39 @@
|
|||
<fail message="The Beast only works inside of individual modules"/>
|
||||
</target>
|
||||
|
||||
<target name="documentation" description="Generate Lucene and Solr Documentation">
|
||||
<target name="documentation" depends="resolve-pegdown" 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" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="documentation-lint" description="Validates the generated documentation (HTML errors, broken links,...)">
|
||||
<target name="documentation-lint" depends="resolve-pegdown,-ecj-javadoc-lint-unsupported,-ecj-resolve" 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" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="validate" description="Validate dependencies, licenses, etc." depends="-validate-source-patterns">
|
||||
<target name="check-forbidden-apis" depends="-install-forbidden-apis" description="Check forbidden API calls in compiled class files.">
|
||||
<subant target="check-forbidden-apis" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="validate" description="Validate dependencies, licenses, etc." depends="-validate-source-patterns,resolve-groovy,rat-sources-typedef,-install-forbidden-apis">
|
||||
<subant target="validate" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
<subant buildpath="lucene" target="check-lib-versions" inheritall="false" failonerror="true">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
<subant buildpath="lucene" target="check-lib-versions" inheritall="false" failonerror="true"/>
|
||||
</target>
|
||||
|
||||
<target name="-validate-source-patterns" unless="disable.source-patterns">
|
||||
|
@ -127,11 +150,11 @@
|
|||
<fail if="validate.patternsFound">The following files contain @author tags, tabs, TOODs, svn keywords or nocommits:${line.separator}${validate.patternsFound}</fail>
|
||||
</target>
|
||||
|
||||
<target name="rat-sources" description="Runs rat across all sources and tests">
|
||||
<target name="rat-sources" description="Runs rat across all sources and tests" depends="common.rat-sources">
|
||||
<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" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -139,6 +162,7 @@
|
|||
<subant target="resolve" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -147,6 +171,14 @@
|
|||
<subant target="compile" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="compile-core" description="Compile Lucene Core">
|
||||
<subant target="compile-core" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -154,6 +186,7 @@
|
|||
<subant target="compile-test" inheritAll="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -161,6 +194,7 @@
|
|||
<subant target="jar" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml"/>
|
||||
<fileset dir="solr" includes="build.xml"/>
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -168,6 +202,7 @@
|
|||
<subant target="jar-src" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml"/>
|
||||
<fileset dir="solr" includes="build.xml"/>
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -181,39 +216,61 @@
|
|||
<delete failonerror="true" dir="${maven-build-dir}/"/>
|
||||
</target>
|
||||
|
||||
<target name="generate-maven-artifacts" depends="resolve"
|
||||
<target name="generate-maven-artifacts" depends="resolve,resolve-groovy,resolve-pegdown,install-maven-tasks"
|
||||
description="Generate Maven Artifacts for Lucene and Solr">
|
||||
<property name="maven.dist.dir" location="dist/maven" />
|
||||
<mkdir dir="${maven.dist.dir}" />
|
||||
<ant dir="lucene" inheritall="false">
|
||||
<target name="-unpack-lucene-tgz"/>
|
||||
<target name="-filter-pom-templates"/>
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</ant>
|
||||
<ant dir="solr" target="-unpack-solr-tgz" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</ant>
|
||||
<ant dir="solr" target="-unpack-solr-tgz" inheritall="false"/>
|
||||
<subant target="-dist-maven" inheritall="false" failonerror="true">
|
||||
<property name="maven.dist.dir" location="${maven.dist.dir}" />
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="validate-maven-dependencies" depends="generate-maven-artifacts"
|
||||
description="Validates maven dependencies, licenses, etc.">
|
||||
<sequential>
|
||||
<subant target="-validate-maven-dependencies" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml"/>
|
||||
<fileset dir="solr" includes="build.xml"/>
|
||||
</subant>
|
||||
</sequential>
|
||||
<subant target="-validate-maven-dependencies" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml"/>
|
||||
<fileset dir="solr" includes="build.xml"/>
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</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 name="run-maven-build" depends="get-maven-poms,install-maven-tasks,resolve-groovy" description="Runs the Maven build using automatically generated POMs">
|
||||
<groovy><![CDATA[
|
||||
import groovy.xml.NamespaceBuilder;
|
||||
import org.apache.tools.ant.Project;
|
||||
def userHome = properties['user.home'], commonDir = properties['common.dir'];
|
||||
def propPrefix = '-mvn.inject.'; int propPrefixLen = propPrefix.length();
|
||||
def subProject = project.createSubProject();
|
||||
project.copyUserProperties(subProject);
|
||||
subProject.initProperties();
|
||||
new AntBuilder(subProject).sequential{
|
||||
property(file: userHome+'/lucene.build.properties', prefix: propPrefix);
|
||||
property(file: userHome+'/build.properties', prefix: propPrefix);
|
||||
property(file: commonDir+'/build.properties', prefix: propPrefix);
|
||||
};
|
||||
def cmdlineProps = subProject.properties
|
||||
.findAll{ k, v -> k.startsWith(propPrefix) }
|
||||
.collectEntries{ k, v -> [k.substring(propPrefixLen), v] };
|
||||
cmdlineProps << project.userProperties.findAll{ k, v -> !k.startsWith('ant.') };
|
||||
def artifact = NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant');
|
||||
task.log('Running Maven with props: ' + cmdlineProps.toString(), Project.MSG_INFO);
|
||||
artifact.mvn(pom: properties['maven-build-dir']+'/pom.xml', mavenVersion: properties['maven-version'], failonerror: true, fork: true) {
|
||||
cmdlineProps.each{ k, v -> arg(value: '-D' + k + '=' + v) };
|
||||
arg(value: '-fae');
|
||||
arg(value: 'install');
|
||||
};
|
||||
]]></groovy>
|
||||
</target>
|
||||
|
||||
<target name="remove-maven-artifacts" description="Removes all Lucene/Solr Maven artifacts from the local repository">
|
||||
|
@ -358,6 +415,7 @@ File | Project Structure | Platform Settings | SDKs):
|
|||
<subant target="clean" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
|
@ -373,19 +431,16 @@ File | Project Structure | Platform Settings | SDKs):
|
|||
</delete>
|
||||
</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" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="nightly-smoke" description="Builds an unsigned release and smoke tests it"
|
||||
depends="clean">
|
||||
depends="clean,resolve-groovy">
|
||||
<fail message="To run nightly smoke, the JDK must be exactly Java 1.8, was: ${java.specification.version}">
|
||||
<condition>
|
||||
<not><equals arg1="${java.specification.version}" arg2="1.8"/></not>
|
||||
|
@ -429,8 +484,115 @@ File | Project Structure | Platform Settings | SDKs):
|
|||
<delete dir="${smokeTestRelease.tmp}"/>
|
||||
</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"/>
|
||||
<macrodef xmlns:ivy="antlib:org.apache.ivy.ant" name="svn-checker">
|
||||
<attribute name="failonmodifications" default="true"/> <!-- false if file modifications are allowed -->
|
||||
<sequential>
|
||||
<ivy:cachepath organisation="org.tmatesoft.svnkit" module="svnkit" revision="${svnkit.version}"
|
||||
inline="true" conf="default" transitive="true" pathid="svnkit.classpath"/>
|
||||
<local name="svn.checkprops.failed"/>
|
||||
<local name="svn.unversioned.failed"/>
|
||||
<local name="svn.keywords.failed"/>
|
||||
<local name="svn.changed.failed"/>
|
||||
<groovy taskname="svn" classpathref="svnkit.classpath"><![CDATA[
|
||||
import org.tmatesoft.svn.core.*;
|
||||
import org.tmatesoft.svn.core.wc.*;
|
||||
import org.apache.tools.ant.Project;
|
||||
|
||||
SVNClientManager manager = SVNClientManager.newInstance();
|
||||
SVNStatusClient statusClient = manager.getStatusClient();
|
||||
SVNWCClient wcClient = manager.getWCClient();
|
||||
|
||||
File basedir = new File(properties['basedir']).getAbsoluteFile();
|
||||
int baseLen = basedir.toString().length();
|
||||
|
||||
// do some fake check, to verify if this is valid SVN working copy. If this fails ignore checks but log some useful message.
|
||||
task.log('Initializing working copy...');
|
||||
try {
|
||||
wcClient.doInfo(basedir, SVNRevision.WORKING);
|
||||
} catch (SVNException ex) {
|
||||
def ec = ex.getErrorMessage().getErrorCode();
|
||||
int code = ec.getCode();
|
||||
int category = ec.getCategory();
|
||||
if (code == SVNErrorCode.WC_NOT_DIRECTORY.getCode() || code == SVNErrorCode.WC_NOT_FILE.getCode()) {
|
||||
task.log('WARNING: Development directory is not an SVN checkout! Disabling checks...', Project.MSG_WARN);
|
||||
return;
|
||||
} else if (category == SVNErrorCode.WC_CATEGORY) {
|
||||
task.log('WARNING: Development directory is not a valid SVN checkout (' + ex.getErrorMessage() + '). Disabling checks...', Project.MSG_WARN);
|
||||
return;
|
||||
} else {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
def convertRelative = {
|
||||
file -> '.' + file.getAbsolutePath().substring(baseLen).replace(File.separatorChar, (char)'/');
|
||||
}
|
||||
|
||||
Set missingProps = new TreeSet(), withKeywords = new TreeSet(), unversioned = new TreeSet(), changed = new TreeSet();
|
||||
|
||||
task.log('Getting all versioned and unversioned files...');
|
||||
statusClient.doStatus(basedir, SVNRevision.WORKING, SVNDepth.fromRecurse(true), false, true, false, false, {
|
||||
status ->
|
||||
SVNStatusType nodeStatus = status.getNodeStatus();
|
||||
if (nodeStatus == SVNStatusType.STATUS_UNVERSIONED || nodeStatus == SVNStatusType.STATUS_MISSING) {
|
||||
unversioned.add(convertRelative(status.getFile()));
|
||||
} else if (status.getKind() == SVNNodeKind.FILE && nodeStatus != SVNStatusType.STATUS_DELETED) {
|
||||
missingProps.add(convertRelative(status.getFile()));
|
||||
}
|
||||
if (nodeStatus == SVNStatusType.STATUS_MODIFIED || nodeStatus == SVNStatusType.STATUS_REPLACED ||
|
||||
nodeStatus == SVNStatusType.STATUS_DELETED || nodeStatus == SVNStatusType.STATUS_ADDED) {
|
||||
changed.add(convertRelative(status.getFile()));
|
||||
}
|
||||
} as ISVNStatusHandler, null);
|
||||
|
||||
task.log('Filtering files with existing svn:eol-style...');
|
||||
wcClient.doGetProperty(basedir, 'svn:eol-style', SVNRevision.WORKING, SVNRevision.WORKING, true, {
|
||||
file, prop -> missingProps.remove(convertRelative(file));
|
||||
} as ISVNPropertyHandler);
|
||||
|
||||
task.log('Filtering files with binary svn:mime-type...');
|
||||
wcClient.doGetProperty(basedir, 'svn:mime-type', SVNRevision.WORKING, SVNRevision.WORKING, true, {
|
||||
file, prop ->
|
||||
prop = SVNPropertyValue.getPropertyAsString(prop.getValue());
|
||||
if (prop.startsWith('application/') || prop.startsWith('image/')) {
|
||||
missingProps.remove(convertRelative(file));
|
||||
}
|
||||
} as ISVNPropertyHandler);
|
||||
|
||||
task.log('Scanning for files with svn:keywords property...');
|
||||
wcClient.doGetProperty(basedir, 'svn:keywords', SVNRevision.WORKING, SVNRevision.WORKING, true, {
|
||||
file, prop -> withKeywords.add(convertRelative(file));
|
||||
} as ISVNPropertyHandler);
|
||||
|
||||
def setProjectPropertyFromSet(prop, set) {
|
||||
if (set) {
|
||||
properties[prop] = '* ' + set.join(properties['line.separator'] + '* ');
|
||||
}
|
||||
};
|
||||
setProjectPropertyFromSet('svn.checkprops.failed', missingProps);
|
||||
setProjectPropertyFromSet('svn.keywords.failed', withKeywords);
|
||||
setProjectPropertyFromSet('svn.unversioned.failed', unversioned);
|
||||
setProjectPropertyFromSet('svn.changed.failed', changed);
|
||||
]]></groovy>
|
||||
<fail if="svn.checkprops.failed"
|
||||
message="The following files are missing svn:eol-style (or binary svn:mime-type):${line.separator}${svn.checkprops.failed}"/>
|
||||
<fail if="svn.keywords.failed"
|
||||
message="The following files have the svn:keywords property set:${line.separator}${svn.keywords.failed}"/>
|
||||
<fail if="svn.unversioned.failed"
|
||||
message="Source checkout is dirty after running tests!!! Offending files:${line.separator}${svn.unversioned.failed}"/>
|
||||
<fail message="Source checkout is modified !!! Offending files:${line.separator}${svn.changed.failed}">
|
||||
<condition>
|
||||
<and>
|
||||
<istrue value="@{failonmodifications}"/>
|
||||
<isset property="svn.changed.failed"/>
|
||||
</and>
|
||||
</condition>
|
||||
</fail>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<target name="check-svn-working-copy" depends="ivy-availability-check,ivy-fail,ivy-configure,resolve-groovy">
|
||||
<svn-checker failonmodifications="false"/>
|
||||
</target>
|
||||
|
||||
<target name="run-clover" description="Runs all tests to measure coverage and generates report (pass "ANT_OPTS=-Xmx1536M" as environment)" depends="clean">
|
||||
|
@ -451,8 +613,29 @@ File | Project Structure | Platform Settings | SDKs):
|
|||
</antcall>
|
||||
</target>
|
||||
|
||||
<target name="-generate-clover-reports">
|
||||
<subant buildpath="." antfile="extra-targets.xml" target="-generate-clover-reports" inheritall="false" failonerror="true"/>
|
||||
<!--
|
||||
Run after Junit tests.
|
||||
|
||||
This target is in a separate file, as it needs to include common-build.xml,
|
||||
but must run from top-level!
|
||||
-->
|
||||
<target name="-generate-clover-reports" depends="clover">
|
||||
<fail unless="run.clover">Clover not enabled!</fail>
|
||||
<mkdir dir="${clover.report.dir}"/>
|
||||
<fileset dir="." id="clover.test.result.files">
|
||||
<include name="*/build/**/test/TEST-*.xml"/>
|
||||
</fileset>
|
||||
<clover-report projectName="Apache Lucene/Solr">
|
||||
<current outfile="${clover.report.dir}" title="Apache Lucene/Solr ${version}" numThreads="0">
|
||||
<format type="html" filter="assert"/>
|
||||
<testresults refid="clover.test.result.files"/>
|
||||
</current>
|
||||
<current outfile="${clover.report.dir}/clover.xml" title="Apache Lucene/Solr ${version}">
|
||||
<format type="xml" filter="assert"/>
|
||||
<testresults refid="clover.test.result.files"/>
|
||||
</current>
|
||||
</clover-report>
|
||||
<echo>You can find the merged Lucene/Solr Clover report in '${clover.report.dir}'.</echo>
|
||||
</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)"/>
|
||||
|
@ -492,24 +675,25 @@ File | Project Structure | Platform Settings | SDKs):
|
|||
<fileset dir="lucene" includes="build.xml" />
|
||||
<!-- todo:
|
||||
<fileset dir="solr" includes="build.xml" />-->
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="-check-after-regeneration">
|
||||
<subant buildpath="." antfile="extra-targets.xml" target="-check-after-regeneration" inheritall="false" failonerror="true"/>
|
||||
<!-- should only be called by jenkins, not precommit! -->
|
||||
<target name="-check-after-regeneration" depends="ivy-availability-check,ivy-fail,ivy-configure,resolve-groovy">
|
||||
<svn-checker failonmodifications="true"/>
|
||||
</target>
|
||||
|
||||
<!-- TODO: remove me when jenkins works -->
|
||||
<target name="regenerateAndCheck" depends="regenerate,-check-after-regeneration"/>
|
||||
|
||||
<target name="-append-all-modules-dependencies-properties">
|
||||
<sequential>
|
||||
<delete file="lucene/build/module.dependencies.properties"/>
|
||||
<subant target="-append-module-dependencies-properties" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
</subant>
|
||||
</sequential>
|
||||
<delete file="lucene/build/module.dependencies.properties"/>
|
||||
<subant target="-append-module-dependencies-properties" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<!-- Jenkins tasks -->
|
||||
|
@ -560,4 +744,6 @@ Test args: [${args}]</echo>
|
|||
</antcall>
|
||||
</target>
|
||||
|
||||
<!-- useless targets (override common-build.xml): -->
|
||||
<target name="generate-test-reports"/>
|
||||
</project>
|
||||
|
|
|
@ -1,219 +0,0 @@
|
|||
<?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="extra-targets" basedir=".">
|
||||
<description>
|
||||
This file is designed for importing into a main build file, and not intended
|
||||
for standalone use.
|
||||
</description>
|
||||
|
||||
<import file="lucene/common-build.xml"/>
|
||||
|
||||
<property name="svnkit.version" value="1.8.10"/>
|
||||
|
||||
<target name="-run-test">
|
||||
<mkdir dir="lucene/build" />
|
||||
<tempfile property="tests.totals.tmpfile"
|
||||
destdir="lucene/build"
|
||||
prefix=".test-totals-"
|
||||
suffix=".tmp"
|
||||
deleteonexit="true"
|
||||
createfile="true" />
|
||||
|
||||
<subant target="test" inheritall="false" failonerror="true">
|
||||
<fileset dir="lucene" includes="build.xml" />
|
||||
<fileset dir="solr" includes="build.xml" />
|
||||
<propertyset>
|
||||
<propertyref name="tests.totals.tmpfile" />
|
||||
</propertyset>
|
||||
</subant>
|
||||
|
||||
<property name="tests.totals.toplevel" value="true" />
|
||||
<antcall target="-check-totals" />
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Run after Junit tests.
|
||||
|
||||
This target is in a separate file, as it needs to include common-build.xml,
|
||||
but must run from top-level!
|
||||
-->
|
||||
<target name="-generate-clover-reports" depends="clover">
|
||||
<fail unless="run.clover">Clover not enabled!</fail>
|
||||
<mkdir dir="${clover.report.dir}"/>
|
||||
<fileset dir="." id="clover.test.result.files">
|
||||
<include name="*/build/**/test/TEST-*.xml"/>
|
||||
</fileset>
|
||||
<clover-report projectName="Apache Lucene/Solr">
|
||||
<current outfile="${clover.report.dir}" title="Apache Lucene/Solr ${version}" numThreads="0">
|
||||
<format type="html" filter="assert"/>
|
||||
<testresults refid="clover.test.result.files"/>
|
||||
</current>
|
||||
<current outfile="${clover.report.dir}/clover.xml" title="Apache Lucene/Solr ${version}">
|
||||
<format type="xml" filter="assert"/>
|
||||
<testresults refid="clover.test.result.files"/>
|
||||
</current>
|
||||
</clover-report>
|
||||
<echo>You can find the merged Lucene/Solr Clover report in '${clover.report.dir}'.</echo>
|
||||
</target>
|
||||
|
||||
<target name="-run-maven-build" depends="install-maven-tasks,resolve-groovy">
|
||||
<groovy><![CDATA[
|
||||
import groovy.xml.NamespaceBuilder;
|
||||
import org.apache.tools.ant.Project;
|
||||
def userHome = properties['user.home'], commonDir = properties['common.dir'];
|
||||
def propPrefix = '-mvn.inject.'; int propPrefixLen = propPrefix.length();
|
||||
def subProject = project.createSubProject();
|
||||
project.copyUserProperties(subProject);
|
||||
subProject.initProperties();
|
||||
new AntBuilder(subProject).sequential{
|
||||
property(file: userHome+'/lucene.build.properties', prefix: propPrefix);
|
||||
property(file: userHome+'/build.properties', prefix: propPrefix);
|
||||
property(file: commonDir+'/build.properties', prefix: propPrefix);
|
||||
};
|
||||
def cmdlineProps = subProject.properties
|
||||
.findAll{ k, v -> k.startsWith(propPrefix) }
|
||||
.collectEntries{ k, v -> [k.substring(propPrefixLen), v] };
|
||||
cmdlineProps << project.userProperties.findAll{ k, v -> !k.startsWith('ant.') };
|
||||
def artifact = NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant');
|
||||
task.log('Running Maven with props: ' + cmdlineProps.toString(), Project.MSG_INFO);
|
||||
artifact.mvn(pom: properties['maven-build-dir']+'/pom.xml', mavenVersion: properties['maven-version'], failonerror: true, fork: true) {
|
||||
cmdlineProps.each{ k, v -> arg(value: '-D' + k + '=' + v) };
|
||||
arg(value: '-fae');
|
||||
arg(value: 'install');
|
||||
};
|
||||
]]></groovy>
|
||||
</target>
|
||||
|
||||
<target name="-check-svn-working-copy" depends="ivy-availability-check,ivy-fail,ivy-configure,resolve-groovy">
|
||||
<svn-checker failonmodifications="false"/>
|
||||
</target>
|
||||
|
||||
<!-- should only be called by jenkins, not precommit! -->
|
||||
<target name="-check-after-regeneration" depends="ivy-availability-check,ivy-fail,ivy-configure,resolve-groovy">
|
||||
<svn-checker failonmodifications="true"/>
|
||||
</target>
|
||||
|
||||
<macrodef xmlns:ivy="antlib:org.apache.ivy.ant" name="svn-checker">
|
||||
<attribute name="failonmodifications" default="true"/> <!-- false if file modifications are allowed -->
|
||||
<sequential>
|
||||
<ivy:cachepath organisation="org.tmatesoft.svnkit" module="svnkit" revision="${svnkit.version}"
|
||||
inline="true" conf="default" transitive="true" pathid="svnkit.classpath"/>
|
||||
<local name="svn.checkprops.failed"/>
|
||||
<local name="svn.unversioned.failed"/>
|
||||
<local name="svn.keywords.failed"/>
|
||||
<local name="svn.changed.failed"/>
|
||||
<groovy taskname="svn" classpathref="svnkit.classpath"><![CDATA[
|
||||
import org.tmatesoft.svn.core.*;
|
||||
import org.tmatesoft.svn.core.wc.*;
|
||||
import org.apache.tools.ant.Project;
|
||||
|
||||
SVNClientManager manager = SVNClientManager.newInstance();
|
||||
SVNStatusClient statusClient = manager.getStatusClient();
|
||||
SVNWCClient wcClient = manager.getWCClient();
|
||||
|
||||
File basedir = new File(properties['basedir']).getAbsoluteFile();
|
||||
int baseLen = basedir.toString().length();
|
||||
|
||||
// do some fake check, to verify if this is valid SVN working copy. If this fails ignore checks but log some useful message.
|
||||
task.log('Initializing working copy...');
|
||||
try {
|
||||
wcClient.doInfo(basedir, SVNRevision.WORKING);
|
||||
} catch (SVNException ex) {
|
||||
def ec = ex.getErrorMessage().getErrorCode();
|
||||
int code = ec.getCode();
|
||||
int category = ec.getCategory();
|
||||
if (code == SVNErrorCode.WC_NOT_DIRECTORY.getCode() || code == SVNErrorCode.WC_NOT_FILE.getCode()) {
|
||||
task.log('WARNING: Development directory is not an SVN checkout! Disabling checks...', Project.MSG_WARN);
|
||||
return;
|
||||
} else if (category == SVNErrorCode.WC_CATEGORY) {
|
||||
task.log('WARNING: Development directory is not a valid SVN checkout (' + ex.getErrorMessage() + '). Disabling checks...', Project.MSG_WARN);
|
||||
return;
|
||||
} else {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
def convertRelative = {
|
||||
file -> '.' + file.getAbsolutePath().substring(baseLen).replace(File.separatorChar, (char)'/');
|
||||
}
|
||||
|
||||
Set missingProps = new TreeSet(), withKeywords = new TreeSet(), unversioned = new TreeSet(), changed = new TreeSet();
|
||||
|
||||
task.log('Getting all versioned and unversioned files...');
|
||||
statusClient.doStatus(basedir, SVNRevision.WORKING, SVNDepth.fromRecurse(true), false, true, false, false, {
|
||||
status ->
|
||||
SVNStatusType nodeStatus = status.getNodeStatus();
|
||||
if (nodeStatus == SVNStatusType.STATUS_UNVERSIONED || nodeStatus == SVNStatusType.STATUS_MISSING) {
|
||||
unversioned.add(convertRelative(status.getFile()));
|
||||
} else if (status.getKind() == SVNNodeKind.FILE && nodeStatus != SVNStatusType.STATUS_DELETED) {
|
||||
missingProps.add(convertRelative(status.getFile()));
|
||||
}
|
||||
if (nodeStatus == SVNStatusType.STATUS_MODIFIED || nodeStatus == SVNStatusType.STATUS_REPLACED ||
|
||||
nodeStatus == SVNStatusType.STATUS_DELETED || nodeStatus == SVNStatusType.STATUS_ADDED) {
|
||||
changed.add(convertRelative(status.getFile()));
|
||||
}
|
||||
} as ISVNStatusHandler, null);
|
||||
|
||||
task.log('Filtering files with existing svn:eol-style...');
|
||||
wcClient.doGetProperty(basedir, 'svn:eol-style', SVNRevision.WORKING, SVNRevision.WORKING, true, {
|
||||
file, prop -> missingProps.remove(convertRelative(file));
|
||||
} as ISVNPropertyHandler);
|
||||
|
||||
task.log('Filtering files with binary svn:mime-type...');
|
||||
wcClient.doGetProperty(basedir, 'svn:mime-type', SVNRevision.WORKING, SVNRevision.WORKING, true, {
|
||||
file, prop ->
|
||||
prop = SVNPropertyValue.getPropertyAsString(prop.getValue());
|
||||
if (prop.startsWith('application/') || prop.startsWith('image/')) {
|
||||
missingProps.remove(convertRelative(file));
|
||||
}
|
||||
} as ISVNPropertyHandler);
|
||||
|
||||
task.log('Scanning for files with svn:keywords property...');
|
||||
wcClient.doGetProperty(basedir, 'svn:keywords', SVNRevision.WORKING, SVNRevision.WORKING, true, {
|
||||
file, prop -> withKeywords.add(convertRelative(file));
|
||||
} as ISVNPropertyHandler);
|
||||
|
||||
def setProjectPropertyFromSet(prop, set) {
|
||||
if (set) {
|
||||
properties[prop] = '* ' + set.join(properties['line.separator'] + '* ');
|
||||
}
|
||||
};
|
||||
setProjectPropertyFromSet('svn.checkprops.failed', missingProps);
|
||||
setProjectPropertyFromSet('svn.keywords.failed', withKeywords);
|
||||
setProjectPropertyFromSet('svn.unversioned.failed', unversioned);
|
||||
setProjectPropertyFromSet('svn.changed.failed', changed);
|
||||
]]></groovy>
|
||||
<fail if="svn.checkprops.failed"
|
||||
message="The following files are missing svn:eol-style (or binary svn:mime-type):${line.separator}${svn.checkprops.failed}"/>
|
||||
<fail if="svn.keywords.failed"
|
||||
message="The following files have the svn:keywords property set:${line.separator}${svn.keywords.failed}"/>
|
||||
<fail if="svn.unversioned.failed"
|
||||
message="Source checkout is dirty after running tests!!! Offending files:${line.separator}${svn.unversioned.failed}"/>
|
||||
<fail message="Source checkout is modified !!! Offending files:${line.separator}${svn.changed.failed}">
|
||||
<condition>
|
||||
<and>
|
||||
<istrue value="@{failonmodifications}"/>
|
||||
<isset property="svn.changed.failed"/>
|
||||
</and>
|
||||
</condition>
|
||||
</fail>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
</project>
|
|
@ -373,6 +373,11 @@ Build
|
|||
* LUCENE-6683: ivy-fail goal directs people to non-existent page
|
||||
(Mike Drob via Steve Rowe)
|
||||
|
||||
* LUCENE-6693: Updated Groovy to 2.4.4, Pegdown to 1.5, Svnkit to 1.8.10.
|
||||
Also fixed some PermGen errors while running full build caused by
|
||||
these updates: Tasks are now installed from root's build.xml.
|
||||
(Uwe Schindler)
|
||||
|
||||
Test Framework
|
||||
|
||||
* LUCENE-6637: Fix FSTTester to not violate file permissions on
|
||||
|
|
|
@ -201,7 +201,7 @@
|
|||
<modules-crawl target="-ecj-javadoc-lint"/>
|
||||
</target>
|
||||
|
||||
<target name="process-webpages" depends="resolve-groovy,resolve-pegdown">
|
||||
<target name="process-webpages" depends="resolve-pegdown">
|
||||
<makeurl property="process-webpages.buildfiles" separator="|">
|
||||
<fileset dir="." includes="**/build.xml" excludes="build.xml,analysis/*,build/**,tools/**,site/**"/>
|
||||
</makeurl>
|
||||
|
@ -408,6 +408,7 @@
|
|||
<m2-deploy pom.xml="${filtered.pom.templates.dir}/pom.xml"/> <!-- Lucene/Solr grandparent POM -->
|
||||
<m2-deploy pom.xml="${filtered.pom.templates.dir}/lucene/pom.xml"/> <!-- Lucene parent POM -->
|
||||
<subant target="-dist-maven" failonerror="true" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
<fileset dir="${common.dir}/core" includes="build.xml"/>
|
||||
<fileset dir="${common.dir}/test-framework" includes="build.xml"/>
|
||||
</subant>
|
||||
|
@ -416,11 +417,11 @@
|
|||
</target>
|
||||
|
||||
<target name="generate-maven-artifacts" depends="-unpack-lucene-tgz">
|
||||
<sequential>
|
||||
<ant dir=".." target="resolve" inheritall="false"/>
|
||||
<antcall target="-filter-pom-templates" inheritall="false"/>
|
||||
<antcall target="-dist-maven" inheritall="false"/>
|
||||
</sequential>
|
||||
<ant dir=".." target="resolve" inheritall="false"/>
|
||||
<antcall target="-filter-pom-templates" inheritall="false"/>
|
||||
<antcall target="-dist-maven" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</antcall>
|
||||
</target>
|
||||
|
||||
<target name="-validate-maven-dependencies" depends="compile-tools, install-maven-tasks, load-custom-tasks">
|
||||
|
|
|
@ -519,8 +519,7 @@
|
|||
<!-- convenience target to compile core -->
|
||||
</target>
|
||||
|
||||
<target name="jar-core" depends="compile-core"
|
||||
description="Packages the JAR file">
|
||||
<target name="jar-core" depends="compile-core">
|
||||
<jarify/>
|
||||
</target>
|
||||
|
||||
|
@ -533,10 +532,14 @@
|
|||
</patternset>
|
||||
<available type="dir" file="${lucene.tgz.unpack.dir}" property="lucene.tgz.unpack.dir.exists"/>
|
||||
<target name="-ensure-lucene-tgz-exists" unless="lucene.tgz.exists">
|
||||
<ant dir="${common.dir}" target="package-tgz" inheritall="false"/>
|
||||
<ant dir="${common.dir}" target="package-tgz" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</ant>
|
||||
</target>
|
||||
<target name="-unpack-lucene-tgz" unless="lucene.tgz.unpack.dir.exists">
|
||||
<antcall target="-ensure-lucene-tgz-exists" inheritall="false"/>
|
||||
<antcall target="-ensure-lucene-tgz-exists" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</antcall>
|
||||
<mkdir dir="${lucene.tgz.unpack.dir}"/>
|
||||
<untar compression="gzip" src="${lucene.tgz.file}" dest="${lucene.tgz.unpack.dir}">
|
||||
<patternset refid="patternset.lucene.solr.jars"/>
|
||||
|
@ -1525,7 +1528,7 @@ ${tests-output}/junit4-*.suites - per-JVM executed suites
|
|||
<!--
|
||||
See http://issues.apache.org/jira/browse/LUCENE-721
|
||||
-->
|
||||
<target name="clover" depends="-clover.disable,-clover.load,-clover.classpath,-clover.setup" description="Instrument the Unit tests using Clover. To use, specify -Drun.clover=true on the command line."/>
|
||||
<target name="clover" depends="-clover.disable,-clover.load,-clover.classpath,-clover.setup"/>
|
||||
|
||||
<target name="-clover.load" depends="ivy-availability-check,ivy-configure" if="run.clover" unless="clover.loaded">
|
||||
<available file="${clover.license.path}" property="clover.license.available" />
|
||||
|
@ -2413,16 +2416,47 @@ ${ant.project.name}.test.dependencies=${test.classpath.list}
|
|||
</forbidden-apis>
|
||||
</target>
|
||||
|
||||
<!-- PEGDOWN macro: Before using depend on the target "resolve-pegdown,resolve-groovy" -->
|
||||
|
||||
<target name="resolve-pegdown" unless="pegdown.loaded" depends="ivy-availability-check,ivy-configure">
|
||||
<target name="resolve-pegdown" unless="pegdown.loaded" depends="resolve-groovy">
|
||||
<ivy:cachepath organisation="org.pegdown" module="pegdown" revision="1.5.0"
|
||||
inline="true" conf="default" transitive="true" pathid="pegdown.classpath"/>
|
||||
<groovy classpathref="pegdown.classpath"><![CDATA[
|
||||
import org.apache.tools.ant.AntTypeDefinition;
|
||||
import org.apache.tools.ant.ComponentHelper;
|
||||
import org.apache.tools.ant.filters.TokenFilter.ChainableReaderFilter;
|
||||
import org.pegdown.PegDownProcessor;
|
||||
import org.pegdown.Extensions;
|
||||
import org.pegdown.FastEncoder;
|
||||
|
||||
public final class PegDownFilter extends ChainableReaderFilter {
|
||||
@Override
|
||||
public String filter(String markdownSource) {
|
||||
PegDownProcessor processor = new PegDownProcessor(
|
||||
Extensions.ABBREVIATIONS | Extensions.AUTOLINKS |
|
||||
Extensions.FENCED_CODE_BLOCKS | Extensions.SMARTS
|
||||
);
|
||||
StringBuilder html = new StringBuilder('<html>\n<head>\n');
|
||||
// match the first heading in markdown and use as title:
|
||||
markdownSource.find(~/(?m)^#+\s*(.+)$/) {
|
||||
match, title -> html.append('<title>').append(FastEncoder.encode(title)).append('</title>\n');
|
||||
}
|
||||
html.append('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n')
|
||||
.append('</head>\n<body>\n')
|
||||
.append(processor.markdownToHtml(markdownSource))
|
||||
.append('\n</body>\n</html>\n');
|
||||
return html;
|
||||
}
|
||||
}
|
||||
|
||||
AntTypeDefinition t = new AntTypeDefinition();
|
||||
t.setName('pegdownfilter');
|
||||
t.setClass(PegDownFilter.class);
|
||||
ComponentHelper.getComponentHelper(project).addDataTypeDefinition(t);
|
||||
]]></groovy>
|
||||
<property name="pegdown.loaded" value="true"/>
|
||||
</target>
|
||||
|
||||
<target name="regenerate"/>
|
||||
|
||||
<!-- PEGDOWN macro: Before using depend on the target "resolve-pegdown" -->
|
||||
|
||||
<macrodef name="pegdown">
|
||||
<attribute name="todir"/>
|
||||
<attribute name="flatten" default="false"/>
|
||||
|
@ -2436,31 +2470,7 @@ ${ant.project.name}.test.dependencies=${test.classpath.list}
|
|||
<tokenfilter>
|
||||
<filetokenizer/>
|
||||
<replaceregex pattern="\b(LUCENE|SOLR)\-\d+\b" replace="[\0](https://issues.apache.org/jira/browse/\0)" flags="gs"/>
|
||||
<scriptfilter language="groovy">
|
||||
<classpath>
|
||||
<path refid="groovy.classpath"/>
|
||||
<path refid="pegdown.classpath"/>
|
||||
</classpath><![CDATA[
|
||||
import org.pegdown.PegDownProcessor;
|
||||
import org.pegdown.Extensions;
|
||||
import org.pegdown.FastEncoder;
|
||||
|
||||
String markdownSource = self.getToken();
|
||||
PegDownProcessor processor = new PegDownProcessor(
|
||||
Extensions.ABBREVIATIONS | Extensions.AUTOLINKS |
|
||||
Extensions.FENCED_CODE_BLOCKS | Extensions.SMARTS
|
||||
);
|
||||
StringBuilder html = new StringBuilder('<html>\n<head>\n');
|
||||
// match the first heading in markdown and use as title:
|
||||
markdownSource.find(~/(?m)^#+\s*(.+)$/) {
|
||||
match, title -> html.append('<title>').append(FastEncoder.encode(title)).append('</title>\n');
|
||||
}
|
||||
html.append('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n')
|
||||
.append('</head>\n<body>\n')
|
||||
.append(processor.markdownToHtml(markdownSource))
|
||||
.append('\n</body>\n</html>\n');
|
||||
self.setToken(html.toString());
|
||||
]]></scriptfilter>
|
||||
<pegdownfilter/>
|
||||
</tokenfilter>
|
||||
</filterchain>
|
||||
<nested/>
|
||||
|
@ -2468,6 +2478,8 @@ ${ant.project.name}.test.dependencies=${test.classpath.list}
|
|||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<target name="regenerate"/>
|
||||
|
||||
<macrodef name="check-broken-links">
|
||||
<attribute name="dir"/>
|
||||
<sequential>
|
||||
|
|
|
@ -185,7 +185,7 @@
|
|||
depends="javadocs,changes-to-html,process-webpages"/>
|
||||
<target name="compile-core" depends="compile-solr-core" unless="solr.core.compiled"/>
|
||||
|
||||
<target name="process-webpages" depends="define-lucene-javadoc-url,resolve-groovy,resolve-pegdown">
|
||||
<target name="process-webpages" depends="define-lucene-javadoc-url,resolve-pegdown">
|
||||
<makeurl property="process-webpages.buildfiles" separator="|">
|
||||
<fileset dir="." includes="core/build.xml,test-framework/build.xml,solrj/build.xml,contrib/**/build.xml"/>
|
||||
</makeurl>
|
||||
|
@ -509,6 +509,7 @@
|
|||
description="Packages the Solr Binary Distribution">
|
||||
<antcall inheritall="true">
|
||||
<param name="called.from.create-package" value="true"/>
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
<target name="init-dist"/>
|
||||
<target name="dist"/>
|
||||
<target name="server"/>
|
||||
|
@ -664,13 +665,11 @@
|
|||
</target>
|
||||
|
||||
<target name="generate-maven-artifacts" depends="-unpack-solr-tgz">
|
||||
<sequential>
|
||||
<ant dir=".." target="resolve" inheritall="false"/>
|
||||
<antcall target="-filter-pom-templates" inheritall="false"/>
|
||||
<antcall target="-dist-maven" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</antcall>
|
||||
</sequential>
|
||||
<ant dir=".." target="resolve" inheritall="false"/>
|
||||
<antcall target="-filter-pom-templates" inheritall="false"/>
|
||||
<antcall target="-dist-maven" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</antcall>
|
||||
</target>
|
||||
|
||||
<target name="-validate-maven-dependencies" depends="compile-tools, install-maven-tasks, load-custom-tasks">
|
||||
|
|
|
@ -58,10 +58,14 @@
|
|||
<available file="${solr.tgz.file}" property="solr.tgz.exists"/>
|
||||
<available type="dir" file="${solr.tgz.unpack.dir}" property="solr.tgz.unpack.dir.exists"/>
|
||||
<target name="-ensure-solr-tgz-exists" unless="solr.tgz.exists">
|
||||
<ant dir="${common-solr.dir}" target="create-package" inheritall="false"/>
|
||||
<ant dir="${common-solr.dir}" target="create-package" inheritall="false">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</ant>
|
||||
</target>
|
||||
<target name="-unpack-solr-tgz" unless="${solr.tgz.unpack.dir.exists}">
|
||||
<antcall target="-ensure-solr-tgz-exists"/>
|
||||
<antcall target="-ensure-solr-tgz-exists">
|
||||
<propertyset refid="uptodate.and.compiled.properties"/>
|
||||
</antcall>
|
||||
<mkdir dir="${solr.tgz.unpack.dir}"/>
|
||||
<untar compression="gzip" src="${solr.tgz.file}" dest="${solr.tgz.unpack.dir}">
|
||||
<patternset refid="patternset.lucene.solr.jars"/>
|
||||
|
|
Loading…
Reference in New Issue