xref: /Lucene/build.gradle (revision 2966228faeef208015c3f599f463c9fa04145888)
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements.  See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18import java.time.ZonedDateTime
19import java.time.format.DateTimeFormatter
20
21plugins {
22  id "base"
23  id "com.palantir.consistent-versions" version "2.10.0"
24  id "org.owasp.dependencycheck" version "5.3.0"
25  id 'de.thetaphi.forbiddenapis' version '3.3' apply false
26  id "de.undercouch.download" version "4.1.1" apply false
27  id "net.ltgt.errorprone" version "2.0.2" apply false
28  id 'com.diffplug.spotless' version "6.5.0" apply false
29}
30
31apply from: file('gradle/globals.gradle')
32
33// General metadata.
34
35// Calculate project version:
36version = {
37  // Release manager: update base version here after release:
38  String baseVersion = '10.0.0'
39
40  // On a release explicitly set release version in one go:
41  //  -Dversion.release=x.y.z
42
43  // Jenkins can just set just a suffix, overriding SNAPSHOT, e.g. using build id:
44  //  -Dversion.suffix=jenkins123
45
46  String versionSuffix = propertyOrDefault('version.suffix', 'SNAPSHOT')
47  return propertyOrDefault('version.release', "${baseVersion}-${versionSuffix}")
48}()
49description = 'Grandparent project for Apache Lucene Core'
50
51// Propagate version and derived properties across projects.
52allprojects {
53  version = rootProject.version
54}
55
56ext {
57  // "base" version is stripped of the qualifier. Compute it.
58  baseVersion = {
59    def m = (version =~ /^(\d+\.\d+\.\d+)(-(.+))?/)
60    if (!m) {
61      throw new GradleException("Can't strip version to just x.y.z: " + rootProject.version)
62    }
63    return m[0][1]
64  }()
65  // "majorVersion" is an integer with just the major version. Compute it.
66  majorVersion = {
67    def m = (version =~ /^(\d+)\.\d+\.\d+(-(.+))?/)
68    if (!m) {
69      throw new GradleException("Can't strip version to just major version: " + rootProject.version)
70    }
71    return m[0][1] as int
72  }
73
74  // Minimum Java version required to compile and run Lucene.
75  minJavaVersion = JavaVersion.VERSION_17
76
77  // snapshot build marker used in scripts.
78  snapshotBuild = version.contains("SNAPSHOT")
79
80  // Build timestamp.
81  def tstamp = ZonedDateTime.now()
82  buildDate = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(tstamp)
83  buildTime = DateTimeFormatter.ofPattern("HH:mm:ss").format(tstamp)
84  buildYear = DateTimeFormatter.ofPattern("yyyy").format(tstamp)
85
86  // Allow definiting external tool locations using system props.
87  externalTool = { name ->
88    def resolved = propertyOrDefault("${name}.exe", name as String)
89    logger.info("External tool '${name}' resolved to: ${resolved}")
90    return resolved
91  }
92}
93
94configurations {
95  groovy
96}
97
98dependencies {
99  // Use a newer groovy that doesn't have illegal reflective accesses.
100  groovy "org.codehaus.groovy:groovy-all:3.0.9"
101}
102
103apply from: file('buildSrc/scriptDepVersions.gradle')
104
105// Include smaller chunks configuring dedicated build areas.
106// Some of these intersect or add additional functionality.
107// The order of inclusion of these files shouldn't matter (but may
108// if the build file is incorrectly written and evaluates something
109// eagerly).
110
111apply from: file('gradle/generation/local-settings.gradle')
112
113// IDE support, settings and specials.
114apply from: file('gradle/ide/intellij-idea.gradle')
115apply from: file('gradle/ide/eclipse.gradle')
116
117// Set up defaults and configure aspects for certain modules or functionality
118// (java, tests)
119apply from: file('gradle/java/folder-layout.gradle')
120apply from: file('gradle/java/javac.gradle')
121apply from: file('gradle/testing/defaults-tests.gradle')
122apply from: file('gradle/testing/randomization.gradle')
123apply from: file('gradle/testing/fail-on-no-tests.gradle')
124apply from: file('gradle/testing/alternative-jdk-support.gradle')
125apply from: file('gradle/java/jar-manifest.gradle')
126apply from: file('gradle/java/modules.gradle')
127
128// Maven artifact publishing.
129apply from: file('gradle/maven/publications.gradle')
130
131// Validation tasks
132apply from: file('gradle/validation/measure-task-times.gradle')
133apply from: file('gradle/validation/error-prone.gradle')
134apply from: file('gradle/validation/precommit.gradle')
135apply from: file('gradle/validation/forbidden-apis.gradle')
136apply from: file('gradle/validation/jar-checks.gradle')
137apply from: file('gradle/validation/git-status.gradle')
138apply from: file('gradle/validation/versions-props-sorted.gradle')
139apply from: file('gradle/validation/validate-source-patterns.gradle')
140apply from: file('gradle/validation/rat-sources.gradle')
141apply from: file('gradle/validation/owasp-dependency-check.gradle')
142apply from: file('gradle/validation/ecj-lint.gradle')
143apply from: file('gradle/validation/gradlew-scripts-tweaked.gradle')
144
145apply from: file('gradle/validation/spotless.gradle')
146
147// Source or data regeneration tasks
148apply from: file('gradle/generation/regenerate.gradle')
149apply from: file('gradle/generation/jflex.gradle')
150apply from: file('gradle/generation/moman.gradle')
151apply from: file('gradle/generation/snowball.gradle')
152apply from: file('gradle/generation/kuromoji.gradle')
153apply from: file('gradle/generation/nori.gradle')
154apply from: file('gradle/generation/icu.gradle')
155apply from: file('gradle/generation/javacc.gradle')
156apply from: file('gradle/generation/forUtil.gradle')
157apply from: file('gradle/generation/antlr.gradle')
158
159apply from: file('gradle/datasets/external-datasets.gradle')
160
161// Shared configuration of subprojects containing native code.
162apply from: file('gradle/native/disable-native.gradle')
163
164// Additional development aids.
165apply from: file('gradle/testing/per-project-summary.gradle')
166apply from: file('gradle/testing/slowest-tests-at-end.gradle')
167apply from: file('gradle/testing/failed-tests-at-end.gradle')
168apply from: file('gradle/testing/profiling.gradle')
169apply from: file('gradle/testing/beasting.gradle')
170apply from: file('gradle/testing/coverage.gradle')
171apply from: file('gradle/help.gradle')
172
173apply from: file('gradle/documentation/documentation.gradle')
174apply from: file('gradle/documentation/changes-to-html.gradle')
175apply from: file('gradle/documentation/markdown.gradle')
176apply from: file('gradle/documentation/render-javadoc.gradle')
177apply from: file('gradle/documentation/check-broken-links.gradle')
178
179apply from: file('gradle/hacks/gradle-archives.gradle')
180apply from: file('gradle/hacks/wipe-temp.gradle')
181apply from: file('gradle/hacks/hashmapAssertions.gradle')
182apply from: file('gradle/hacks/turbocharge-jvm-opts.gradle')
183apply from: file('gradle/hacks/dummy-outputs.gradle')
184
185apply from: file('gradle/pylucene/pylucene.gradle')
186