Skip to content

Commit 93bd32b

Browse files
authored
Support Gradle 7 (#1609) (#1622)
Signed-off-by: Andriy Redko <andriy.redko@aiven.io>
1 parent df25ea3 commit 93bd32b

30 files changed

Lines changed: 303 additions & 217 deletions

File tree

build.gradle

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ allprojects {
312312
}
313313
}
314314
boolean hasShadow = project.plugins.hasPlugin(ShadowPlugin)
315-
project.configurations.compile.dependencies
315+
project.configurations.implementation.dependencies
316316
.findAll()
317317
.toSorted(sortClosure)
318318
.each({ c -> depJavadocClosure(hasShadow, c) })
@@ -422,6 +422,12 @@ allprojects {
422422
tasks.named('cleanEclipse') { dependsOn 'wipeEclipseSettings' }
423423
// otherwise the eclipse merging is *super confusing*
424424
tasks.named('eclipse') { dependsOn 'cleanEclipse', 'copyEclipseSettings' }
425+
426+
afterEvaluate {
427+
tasks.findByName("eclipseJdt")?.configure {
428+
dependsOn 'copyEclipseSettings'
429+
}
430+
}
425431
}
426432

427433
wrapper {

buildSrc/build.gradle

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ tasks.withType(JavaCompile).configureEach {
9494
*****************************************************************************/
9595

9696
repositories {
97-
jcenter()
97+
mavenCentral()
98+
gradlePluginPortal()
9899
}
99100

100101
dependencies {
@@ -123,7 +124,7 @@ dependencies {
123124
testFixturesApi gradleTestKit()
124125
testImplementation 'com.github.tomakehurst:wiremock-jre8-standalone:2.23.2'
125126
testImplementation "org.mockito:mockito-core:${props.getProperty('mockito')}"
126-
integTestImplementation('org.spockframework:spock-core:1.3-groovy-2.5') {
127+
integTestImplementation('org.spockframework:spock-core:2.0-groovy-3.0') {
127128
exclude module: "groovy"
128129
}
129130
}
@@ -259,6 +260,9 @@ if (project != rootProject) {
259260
*/
260261
afterEvaluate {
261262
generatePomFileForPluginMavenPublication.enabled = false
263+
tasks.matching { it.name.contains("PluginMaven") }*.configure {
264+
dependsOn("generatePomFileForNebulaPublication")
265+
}
262266
}
263267

264268
publishing.publications.named("nebula").configure {

buildSrc/src/main/java/org/opensearch/gradle/LoggedExec.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public LoggedExec(FileSystemOperations fileSystemOperations) {
8282
doLast(new Action<Task>() {
8383
@Override
8484
public void execute(Task task) {
85-
if (LoggedExec.this.getExecResult().getExitValue() != 0) {
85+
if (LoggedExec.this.getExecutionResult().get().getExitValue() != 0) {
8686
try {
8787
LoggedExec.this.getLogger().error("Output for " + LoggedExec.this.getExecutable() + ":");
8888
outputLogger.accept(LoggedExec.this.getLogger());
@@ -94,7 +94,7 @@ public void execute(Task task) {
9494
"Process '%s %s' finished with non-zero exit value %d",
9595
LoggedExec.this.getExecutable(),
9696
LoggedExec.this.getArgs(),
97-
LoggedExec.this.getExecResult().getExitValue()
97+
LoggedExec.this.getExecutionResult().get().getExitValue()
9898
)
9999
);
100100
}

buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void apply(Project project) {
7474
File heapdumpDir = new File(project.getBuildDir(), "heapdump");
7575

7676
project.getTasks().withType(Test.class).configureEach(test -> {
77-
File testOutputDir = new File(test.getReports().getJunitXml().getDestination(), "output");
77+
File testOutputDir = new File(test.getReports().getJunitXml().getOutputLocation().getAsFile().get(), "output");
7878

7979
ErrorReportingTestListener listener = new ErrorReportingTestListener(test.getTestLogging(), test.getLogger(), testOutputDir);
8080
test.getExtensions().add("errorReportingTestListener", listener);

buildSrc/src/main/java/org/opensearch/gradle/RepositoriesSetupPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public static void configureRepositories(Project project) {
8282
// such that we don't have to pass hardcoded files to gradle
8383
repos.mavenLocal();
8484
}
85-
repos.jcenter();
85+
repos.mavenCentral();
8686

8787
String luceneVersion = VersionProperties.getLucene();
8888
if (luceneVersion.contains("-snapshot")) {

buildSrc/src/main/java/org/opensearch/gradle/info/GlobalBuildInfoPlugin.java

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@
4141
import org.gradle.api.logging.Logger;
4242
import org.gradle.api.logging.Logging;
4343
import org.gradle.api.model.ObjectFactory;
44-
import org.gradle.api.provider.Provider;
4544
import org.gradle.api.provider.ProviderFactory;
4645
import org.gradle.internal.jvm.Jvm;
47-
import org.gradle.jvm.toolchain.JavaInstallation;
48-
import org.gradle.jvm.toolchain.JavaInstallationRegistry;
46+
import org.gradle.internal.jvm.inspection.JvmInstallationMetadata;
47+
import org.gradle.internal.jvm.inspection.JvmMetadataDetector;
4948
import org.gradle.util.GradleVersion;
5049

5150
import javax.inject.Inject;
@@ -77,13 +76,13 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
7776
private static final String DEFAULT_VERSION_JAVA_FILE_PATH = "server/src/main/java/org/opensearch/Version.java";
7877
private static Integer _defaultParallel = null;
7978

80-
private final JavaInstallationRegistry javaInstallationRegistry;
79+
private final JvmMetadataDetector jvmMetadataDetector;
8180
private final ObjectFactory objects;
8281
private final ProviderFactory providers;
8382

8483
@Inject
85-
public GlobalBuildInfoPlugin(JavaInstallationRegistry javaInstallationRegistry, ObjectFactory objects, ProviderFactory providers) {
86-
this.javaInstallationRegistry = javaInstallationRegistry;
84+
public GlobalBuildInfoPlugin(JvmMetadataDetector jvmMetadataDetector, ObjectFactory objects, ProviderFactory providers) {
85+
this.jvmMetadataDetector = jvmMetadataDetector;
8786
this.objects = objects;
8887
this.providers = providers;
8988
}
@@ -115,7 +114,7 @@ public void apply(Project project) {
115114
params.setRuntimeJavaHome(runtimeJavaHome);
116115
params.setRuntimeJavaVersion(determineJavaVersion("runtime java.home", runtimeJavaHome, minimumRuntimeVersion));
117116
params.setIsRutimeJavaHomeSet(runtimeJavaHomeOpt.isPresent());
118-
params.setRuntimeJavaDetails(getJavaInstallation(runtimeJavaHome).getImplementationName());
117+
params.setRuntimeJavaDetails(getJavaInstallation(runtimeJavaHome).getDisplayName());
119118
params.setJavaVersions(getAvailableJavaVersions(minimumCompilerVersion));
120119
params.setMinimumCompilerVersion(minimumCompilerVersion);
121120
params.setMinimumRuntimeVersion(minimumRuntimeVersion);
@@ -160,14 +159,14 @@ private void logGlobalBuildInfo() {
160159
final String osVersion = System.getProperty("os.version");
161160
final String osArch = System.getProperty("os.arch");
162161
final Jvm gradleJvm = Jvm.current();
163-
final String gradleJvmDetails = getJavaInstallation(gradleJvm.getJavaHome()).getImplementationName();
162+
final String gradleJvmDetails = getJavaInstallation(gradleJvm.getJavaHome()).getDisplayName();
164163

165164
LOGGER.quiet("=======================================");
166165
LOGGER.quiet("OpenSearch Build Hamster says Hello!");
167166
LOGGER.quiet(" Gradle Version : " + GradleVersion.current().getVersion());
168167
LOGGER.quiet(" OS Info : " + osName + " " + osVersion + " (" + osArch + ")");
169168
if (BuildParams.getIsRuntimeJavaHomeSet()) {
170-
String runtimeJvmDetails = getJavaInstallation(BuildParams.getRuntimeJavaHome()).getImplementationName();
169+
String runtimeJvmDetails = getJavaInstallation(BuildParams.getRuntimeJavaHome()).getDisplayName();
171170
LOGGER.quiet(" Runtime JDK Version : " + BuildParams.getRuntimeJavaVersion() + " (" + runtimeJvmDetails + ")");
172171
LOGGER.quiet(" Runtime java.home : " + BuildParams.getRuntimeJavaHome());
173172
LOGGER.quiet(" Gradle JDK Version : " + gradleJvm.getJavaVersion() + " (" + gradleJvmDetails + ")");
@@ -182,8 +181,8 @@ private void logGlobalBuildInfo() {
182181
}
183182

184183
private JavaVersion determineJavaVersion(String description, File javaHome, JavaVersion requiredVersion) {
185-
JavaInstallation installation = getJavaInstallation(javaHome);
186-
JavaVersion actualVersion = installation.getJavaVersion();
184+
JvmInstallationMetadata installation = getJavaInstallation(javaHome);
185+
JavaVersion actualVersion = installation.getLanguageVersion();
187186
if (actualVersion.isCompatibleWith(requiredVersion) == false) {
188187
throwInvalidJavaHomeException(
189188
description,
@@ -196,15 +195,8 @@ private JavaVersion determineJavaVersion(String description, File javaHome, Java
196195
return actualVersion;
197196
}
198197

199-
private JavaInstallation getJavaInstallation(File javaHome) {
200-
JavaInstallation installation;
201-
if (isCurrentJavaHome(javaHome)) {
202-
installation = javaInstallationRegistry.getInstallationForCurrentVirtualMachine().get();
203-
} else {
204-
installation = javaInstallationRegistry.installationForDirectory(objects.directoryProperty().fileValue(javaHome)).get();
205-
}
206-
207-
return installation;
198+
private JvmInstallationMetadata getJavaInstallation(File javaHome) {
199+
return jvmMetadataDetector.getMetadata(javaHome);
208200
}
209201

210202
private List<JavaHome> getAvailableJavaVersions(JavaVersion minimumCompilerVersion) {
@@ -214,11 +206,9 @@ private List<JavaHome> getAvailableJavaVersions(JavaVersion minimumCompilerVersi
214206
String javaHomeEnvVarName = getJavaHomeEnvVarName(Integer.toString(version));
215207
if (System.getenv(javaHomeEnvVarName) != null) {
216208
File javaHomeDirectory = new File(findJavaHome(Integer.toString(version)));
217-
Provider<JavaInstallation> javaInstallationProvider = javaInstallationRegistry.installationForDirectory(
218-
objects.directoryProperty().fileValue(javaHomeDirectory)
219-
);
209+
JvmInstallationMetadata javaInstallation = jvmMetadataDetector.getMetadata(javaHomeDirectory);
220210
JavaHome javaHome = JavaHome.of(version, providers.provider(() -> {
221-
int actualVersion = Integer.parseInt(javaInstallationProvider.get().getJavaVersion().getMajorVersion());
211+
int actualVersion = Integer.parseInt(javaInstallation.getLanguageVersion().getMajorVersion());
222212
if (actualVersion != version) {
223213
throwInvalidJavaHomeException("env variable " + javaHomeEnvVarName, javaHomeDirectory, version, actualVersion);
224214
}

buildSrc/src/main/java/org/opensearch/gradle/internal/BwcSetupExtension.java

Lines changed: 76 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.gradle.api.Action;
4040
import org.gradle.api.GradleException;
4141
import org.gradle.api.Project;
42+
import org.gradle.api.Task;
4243
import org.gradle.api.logging.LogLevel;
4344
import org.gradle.api.provider.Provider;
4445
import org.gradle.api.tasks.TaskProvider;
@@ -80,77 +81,83 @@ TaskProvider<LoggedExec> bwcTask(String name, Action<LoggedExec> configuration)
8081
}
8182

8283
private TaskProvider<LoggedExec> createRunBwcGradleTask(Project project, String name, Action<LoggedExec> configAction) {
83-
return project.getTasks().register(name, LoggedExec.class, loggedExec -> {
84-
// TODO revisit
85-
loggedExec.dependsOn("checkoutBwcBranch");
86-
loggedExec.setSpoolOutput(true);
87-
loggedExec.setWorkingDir(checkoutDir.get());
88-
loggedExec.doFirst(t -> {
89-
// Execution time so that the checkouts are available
90-
String javaVersionsString = readFromFile(new File(checkoutDir.get(), ".ci/java-versions.properties"));
91-
loggedExec.environment(
92-
"JAVA_HOME",
93-
getJavaHome(
94-
Integer.parseInt(
95-
Arrays.asList(javaVersionsString.split("\n"))
96-
.stream()
97-
.filter(l -> l.trim().startsWith("OPENSEARCH_BUILD_JAVA="))
98-
.map(l -> l.replace("OPENSEARCH_BUILD_JAVA=java", "").trim())
99-
.map(l -> l.replace("OPENSEARCH_BUILD_JAVA=openjdk", "").trim())
100-
.collect(Collectors.joining("!!"))
101-
)
102-
)
103-
);
104-
loggedExec.environment(
105-
"RUNTIME_JAVA_HOME",
106-
getJavaHome(
107-
Integer.parseInt(
108-
Arrays.asList(javaVersionsString.split("\n"))
109-
.stream()
110-
.filter(l -> l.trim().startsWith("OPENSEARCH_RUNTIME_JAVA="))
111-
.map(l -> l.replace("OPENSEARCH_RUNTIME_JAVA=java", "").trim())
112-
.map(l -> l.replace("OPENSEARCH_RUNTIME_JAVA=openjdk", "").trim())
113-
.collect(Collectors.joining("!!"))
114-
)
115-
)
116-
);
117-
});
118-
119-
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
120-
loggedExec.executable("cmd");
121-
loggedExec.args("/C", "call", new File(checkoutDir.get(), "gradlew").toString());
122-
} else {
123-
loggedExec.executable(new File(checkoutDir.get(), "gradlew").toString());
124-
}
125-
if (project.getGradle().getStartParameter().isOffline()) {
126-
loggedExec.args("--offline");
127-
}
128-
// TODO resolve
129-
String buildCacheUrl = System.getProperty("org.opensearch.build.cache.url");
130-
if (buildCacheUrl != null) {
131-
loggedExec.args("-Dorg.opensearch.build.cache.url=" + buildCacheUrl);
132-
}
84+
return project.getTasks().register(name, LoggedExec.class, new Action<LoggedExec>() {
85+
@Override
86+
public void execute(LoggedExec loggedExec) {
87+
// TODO revisit
88+
loggedExec.dependsOn("checkoutBwcBranch");
89+
loggedExec.setSpoolOutput(true);
90+
loggedExec.setWorkingDir(checkoutDir.get());
91+
loggedExec.doFirst(new Action<Task>() {
92+
@Override
93+
public void execute(Task t) {
94+
// Execution time so that the checkouts are available
95+
String javaVersionsString = readFromFile(new File(checkoutDir.get(), ".ci/java-versions.properties"));
96+
loggedExec.environment(
97+
"JAVA_HOME",
98+
getJavaHome(
99+
Integer.parseInt(
100+
Arrays.asList(javaVersionsString.split("\n"))
101+
.stream()
102+
.filter(l -> l.trim().startsWith("OPENSEARCH_BUILD_JAVA="))
103+
.map(l -> l.replace("OPENSEARCH_BUILD_JAVA=java", "").trim())
104+
.map(l -> l.replace("OPENSEARCH_BUILD_JAVA=openjdk", "").trim())
105+
.collect(Collectors.joining("!!"))
106+
)
107+
)
108+
);
109+
loggedExec.environment(
110+
"RUNTIME_JAVA_HOME",
111+
getJavaHome(
112+
Integer.parseInt(
113+
Arrays.asList(javaVersionsString.split("\n"))
114+
.stream()
115+
.filter(l -> l.trim().startsWith("OPENSEARCH_RUNTIME_JAVA="))
116+
.map(l -> l.replace("OPENSEARCH_RUNTIME_JAVA=java", "").trim())
117+
.map(l -> l.replace("OPENSEARCH_RUNTIME_JAVA=openjdk", "").trim())
118+
.collect(Collectors.joining("!!"))
119+
)
120+
)
121+
);
122+
}
123+
});
124+
125+
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
126+
loggedExec.executable("cmd");
127+
loggedExec.args("/C", "call", new File(checkoutDir.get(), "gradlew").toString());
128+
} else {
129+
loggedExec.executable(new File(checkoutDir.get(), "gradlew").toString());
130+
}
131+
if (project.getGradle().getStartParameter().isOffline()) {
132+
loggedExec.args("--offline");
133+
}
134+
// TODO resolve
135+
String buildCacheUrl = System.getProperty("org.opensearch.build.cache.url");
136+
if (buildCacheUrl != null) {
137+
loggedExec.args("-Dorg.opensearch.build.cache.url=" + buildCacheUrl);
138+
}
133139

134-
loggedExec.args("-Dbuild.snapshot=true");
135-
loggedExec.args("-Dscan.tag.NESTED");
136-
final LogLevel logLevel = project.getGradle().getStartParameter().getLogLevel();
137-
List<LogLevel> nonDefaultLogLevels = Arrays.asList(LogLevel.QUIET, LogLevel.WARN, LogLevel.INFO, LogLevel.DEBUG);
138-
if (nonDefaultLogLevels.contains(logLevel)) {
139-
loggedExec.args("--" + logLevel.name().toLowerCase(Locale.ENGLISH));
140-
}
141-
final String showStacktraceName = project.getGradle().getStartParameter().getShowStacktrace().name();
142-
assert Arrays.asList("INTERNAL_EXCEPTIONS", "ALWAYS", "ALWAYS_FULL").contains(showStacktraceName);
143-
if (showStacktraceName.equals("ALWAYS")) {
144-
loggedExec.args("--stacktrace");
145-
} else if (showStacktraceName.equals("ALWAYS_FULL")) {
146-
loggedExec.args("--full-stacktrace");
147-
}
148-
if (project.getGradle().getStartParameter().isParallelProjectExecutionEnabled()) {
149-
loggedExec.args("--parallel");
140+
loggedExec.args("-Dbuild.snapshot=true");
141+
loggedExec.args("-Dscan.tag.NESTED");
142+
final LogLevel logLevel = project.getGradle().getStartParameter().getLogLevel();
143+
List<LogLevel> nonDefaultLogLevels = Arrays.asList(LogLevel.QUIET, LogLevel.WARN, LogLevel.INFO, LogLevel.DEBUG);
144+
if (nonDefaultLogLevels.contains(logLevel)) {
145+
loggedExec.args("--" + logLevel.name().toLowerCase(Locale.ENGLISH));
146+
}
147+
final String showStacktraceName = project.getGradle().getStartParameter().getShowStacktrace().name();
148+
assert Arrays.asList("INTERNAL_EXCEPTIONS", "ALWAYS", "ALWAYS_FULL").contains(showStacktraceName);
149+
if (showStacktraceName.equals("ALWAYS")) {
150+
loggedExec.args("--stacktrace");
151+
} else if (showStacktraceName.equals("ALWAYS_FULL")) {
152+
loggedExec.args("--full-stacktrace");
153+
}
154+
if (project.getGradle().getStartParameter().isParallelProjectExecutionEnabled()) {
155+
loggedExec.args("--parallel");
156+
}
157+
loggedExec.setStandardOutput(new IndentingOutputStream(System.out, unreleasedVersionInfo.get().version));
158+
loggedExec.setErrorOutput(new IndentingOutputStream(System.err, unreleasedVersionInfo.get().version));
159+
configAction.execute(loggedExec);
150160
}
151-
loggedExec.setStandardOutput(new IndentingOutputStream(System.out, unreleasedVersionInfo.get().version));
152-
loggedExec.setErrorOutput(new IndentingOutputStream(System.err, unreleasedVersionInfo.get().version));
153-
configAction.execute(loggedExec);
154161
});
155162
}
156163

0 commit comments

Comments
 (0)