From 5afd06ae57d2b46688aa2bf6de28e4311cc8b793 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Wed, 27 Sep 2023 08:46:44 +0200 Subject: [PATCH] [7.17] Update Gradle Wrapper to 8.2 (#96686) (#97484) * Update Gradle Wrapper to 8.2 (#96686) - Convention usage has been deprecated and was fixed in our build files - Fix test dependencies and deprecation --- benchmarks/build.gradle | 9 +- build-conventions/build.gradle | 8 +- .../internal/conventions/util/Util.java | 32 +++- build-tools-internal/build.gradle | 7 +- .../gradle/wrapper/gradle-wrapper.properties | 8 +- .../remote/distribution/archives/build.gradle | 1 + ...elasticsearch.runtime-jdk-provision.gradle | 3 +- .../internal/ElasticsearchJavadocPlugin.java | 4 +- .../InternalTestArtifactExtension.java | 14 +- .../gradle/internal/info/BuildParams.java | 32 +++- .../internal/info/GlobalBuildInfoPlugin.java | 146 ++++++++++++++---- .../internal/test/DistroTestPlugin.java | 5 + .../test/StandaloneRestTestPlugin.java | 2 +- .../executer/RerunTestResultProcessor.java | 54 +++++-- .../src/main/resources/minimumGradleVersion | 2 +- .../RerunTestResultProcessorTestSpec.groovy | 15 +- build-tools/build.gradle | 9 +- build-tools/reaper/build.gradle | 8 +- .../test/JavaRestTestPluginFuncTest.groovy | 2 + .../test/YamlRestTestPluginFuncTest.groovy | 2 + .../java/org/elasticsearch/gradle/Jdk.java | 12 +- .../gradle/plugin/PluginBuildPlugin.java | 49 +++--- .../plugin/PluginPropertiesExtension.java | 2 + .../StandaloneRestIntegTestTask.java | 8 +- .../gradle/util/GradleUtils.java | 14 +- .../gradle/JdkDownloadPluginTests.java | 9 +- .../test/InternalAwareGradleRunner.java | 5 + .../test/NormalizeOutputGradleRunner.java | 5 + build.gradle | 5 + client/benchmark/build.gradle | 9 +- client/rest-high-level/build.gradle | 5 +- client/rest/build.gradle | 11 +- client/sniffer/build.gradle | 10 +- client/test/build.gradle | 6 +- .../archives/integ-test-zip/build.gradle | 4 +- distribution/packages/build.gradle | 2 +- distribution/tools/geoip-cli/build.gradle | 4 +- .../tools/java-version-checker/build.gradle | 4 +- distribution/tools/launchers/build.gradle | 4 +- distribution/tools/plugin-cli/build.gradle | 4 +- gradle/build.versions.toml | 2 +- gradle/verification-metadata.xml | 68 ++++++-- gradle/wrapper/gradle-wrapper.properties | 8 +- gradlew | 5 +- libs/core/build.gradle | 4 +- modules/build.gradle | 2 +- modules/lang-painless/build.gradle | 2 +- modules/lang-painless/spi/build.gradle | 5 +- modules/legacy-geo/build.gradle | 5 +- modules/transport-netty4/build.gradle | 2 + .../gradle/wrapper/gradle-wrapper.properties | 8 +- plugins/examples/settings.gradle | 4 +- plugins/repository-s3/build.gradle | 2 + qa/wildfly/build.gradle | 2 + server/build.gradle | 7 +- test/test-clusters/build.gradle | 6 +- x-pack/plugin/analytics/build.gradle | 4 +- x-pack/plugin/async-search/build.gradle | 4 +- x-pack/plugin/async/build.gradle | 4 +- x-pack/plugin/autoscaling/build.gradle | 4 +- x-pack/plugin/build.gradle | 4 +- x-pack/plugin/ccr/build.gradle | 4 +- x-pack/plugin/core/build.gradle | 4 +- x-pack/plugin/data-streams/build.gradle | 4 +- x-pack/plugin/deprecation/build.gradle | 4 +- x-pack/plugin/enrich/build.gradle | 4 +- x-pack/plugin/eql/build.gradle | 5 +- x-pack/plugin/frozen-indices/build.gradle | 4 +- x-pack/plugin/graph/build.gradle | 4 +- x-pack/plugin/identity-provider/build.gradle | 4 +- x-pack/plugin/ilm/build.gradle | 4 +- x-pack/plugin/logstash/build.gradle | 4 +- .../mapper-aggregate-metric/build.gradle | 4 +- .../mapper-constant-keyword/build.gradle | 4 +- .../plugin/mapper-unsigned-long/build.gradle | 4 +- x-pack/plugin/mapper-version/build.gradle | 4 +- x-pack/plugin/monitoring/build.gradle | 4 +- x-pack/plugin/ql/build.gradle | 5 +- .../repositories-metering-api/build.gradle | 4 +- .../plugin/repository-encrypted/build.gradle | 5 +- x-pack/plugin/rollup/build.gradle | 4 +- .../plugin/search-business-rules/build.gradle | 4 +- .../plugin/searchable-snapshots/build.gradle | 5 +- .../preallocate/build.gradle | 4 +- x-pack/plugin/security/build.gradle | 4 +- x-pack/plugin/security/cli/build.gradle | 4 +- x-pack/plugin/shutdown/build.gradle | 4 +- .../snapshot-repo-test-kit/build.gradle | 4 +- x-pack/plugin/sql/build.gradle | 8 +- x-pack/plugin/sql/jdbc/build.gradle | 5 +- .../plugin/sql/qa/jdbc/security/build.gradle | 2 +- x-pack/plugin/sql/sql-cli/build.gradle | 4 +- x-pack/plugin/stack/build.gradle | 6 +- x-pack/plugin/text-structure/build.gradle | 4 +- x-pack/plugin/vectors/build.gradle | 5 +- x-pack/plugin/watcher/build.gradle | 4 +- x-pack/plugin/wildcard/build.gradle | 5 +- .../qa/google-cloud-storage/build.gradle | 5 +- x-pack/snapshot-tool/qa/s3/build.gradle | 2 + x-pack/transport-client/build.gradle | 5 +- 100 files changed, 648 insertions(+), 206 deletions(-) diff --git a/benchmarks/build.gradle b/benchmarks/build.gradle index acb990048c06..740dfe8e436e 100644 --- a/benchmarks/build.gradle +++ b/benchmarks/build.gradle @@ -10,10 +10,15 @@ import org.elasticsearch.gradle.internal.info.BuildParams apply plugin: 'elasticsearch.java' apply plugin: 'application' -mainClassName = 'org.openjdk.jmh.Main' + +application { + mainClass = 'org.openjdk.jmh.Main' +} tasks.named("assemble").configure { enabled = false } -archivesBaseName = 'elasticsearch-benchmarks' +base { + archivesName = 'elasticsearch-benchmarks' +} tasks.named("test").configure { enabled = false } diff --git a/build-conventions/build.gradle b/build-conventions/build.gradle index 07ad44141f41..62ac09d26010 100644 --- a/build-conventions/build.gradle +++ b/build-conventions/build.gradle @@ -15,9 +15,11 @@ plugins { } group = "org.elasticsearch" - -targetCompatibility = 11 -sourceCompatibility = 11 +// This project contains Checkstyle rule implementations used by IDEs which use a Java 11 runtime +java { + targetCompatibility = 11 + sourceCompatibility = 11 +} gradlePlugin { // We already configure publication and we don't need or want the one that comes diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java index 05e4624d360d..9e7f39576e65 100644 --- a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/util/Util.java @@ -12,12 +12,16 @@ import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.file.FileTree; +import org.gradle.api.initialization.IncludedBuild; +import org.gradle.api.invocation.Gradle; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.util.PatternFilterable; import javax.annotation.Nullable; +import java.io.File; +import java.util.Collection; import java.util.Optional; import java.util.function.Supplier; @@ -102,7 +106,6 @@ public class Util { return project.getExtensions().getByType(JavaPluginExtension.class) == null; } - public static Object toStringable(Supplier getter) { return new Object() { @Override @@ -116,4 +119,31 @@ public class Util { return project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets(); } + public static File locateElasticsearchWorkspace(Gradle gradle) { + if(gradle.getRootProject().getName().startsWith("build-tools")) { + File buildToolsParent = gradle.getRootProject().getRootDir().getParentFile(); + if(versionFileExists(buildToolsParent)) { + return buildToolsParent; + } + return buildToolsParent; + } + if (gradle.getParent() == null) { + // See if any of these included builds is the Elasticsearch gradle + for (IncludedBuild includedBuild : gradle.getIncludedBuilds()) { + if (versionFileExists(includedBuild.getProjectDir())) { + return includedBuild.getProjectDir(); + } + } + + // Otherwise assume this gradle is the root elasticsearch workspace + return gradle.getRootProject().getRootDir(); + } else { + // We're an included build, so keep looking + return locateElasticsearchWorkspace(gradle.getParent()); + } + } + + private static boolean versionFileExists(File rootDir) { + return new File(rootDir, "build-tools-internal/version.properties").exists(); + } } diff --git a/build-tools-internal/build.gradle b/build-tools-internal/build.gradle index fc7cce3a071a..81e28db5ea05 100644 --- a/build-tools-internal/build.gradle +++ b/build-tools-internal/build.gradle @@ -184,8 +184,10 @@ gradlePlugin { *****************************************************************************/ def minCompilerJava = versions.get("minimumCompilerJava") -targetCompatibility = minCompilerJava -sourceCompatibility = minCompilerJava +java { + targetCompatibility = minCompilerJava + sourceCompatibility = minCompilerJava +} if (JavaVersion.current() < JavaVersion.toVersion(minCompilerJava)) { throw new GradleException("Java ${minCompilerJava} is required to build Elasticsearch but current Java is version ${JavaVersion.current()}.") @@ -241,7 +243,6 @@ dependencies { api buildLibs.commons.codec api buildLibs.apache.compress api buildLibs.ant - api 'com.netflix.nebula:gradle-extra-configurations-plugin:7.0.0' api buildLibs.nebula.info api buildLibs.apache.rat api buildLibs.jna diff --git a/build-tools-internal/gradle/wrapper/gradle-wrapper.properties b/build-tools-internal/gradle/wrapper/gradle-wrapper.properties index e939ec976751..a3d33870aad5 100644 --- a/build-tools-internal/gradle/wrapper/gradle-wrapper.properties +++ b/build-tools-internal/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,8 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip +distributionSha256Sum=5022b0b25fe182b0e50867e77f484501dba44feeea88f5c1f13b6b4660463640 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionSha256Sum=db9c8211ed63f61f60292c69e80d89196f9eb36665e369e7f00ac4cc841c2219 +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle index 6611f7a28da1..52fce0fe1b6d 100644 --- a/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle +++ b/build-tools-internal/src/integTest/resources/org/elasticsearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle @@ -16,6 +16,7 @@ subprojects { archiveVersion.set("${versionFromBranch}-SNAPSHOT") archiveClassifier.set("darwin-x86_64") archiveExtension.set('tar.gz') + exclude('build') } tasks.register('extracted', Copy) { diff --git a/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle index cd7b04446504..3ba934a61389 100644 --- a/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle @@ -32,7 +32,8 @@ configure(allprojects) { } project.tasks.withType(Test).configureEach { Test test -> if (BuildParams.getIsRuntimeJavaHomeSet()) { - test.executable = "${BuildParams.runtimeJavaHome}/bin/java" + test.executable = "${BuildParams.runtimeJavaHome}/bin/java" + + (OS.current() == OS.WINDOWS ? '.exe' : '') } else { test.dependsOn(project.jdks.provisioned_runtime) test.executable = project.jdks.provisioned_runtime.getBinJavaPath() diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavadocPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavadocPlugin.java index d08611905134..cac5e7deb61b 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavadocPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ElasticsearchJavadocPlugin.java @@ -51,10 +51,12 @@ public class ElasticsearchJavadocPlugin implements Plugin { var withShadowPlugin = project1.getPlugins().hasPlugin(ShadowPlugin.class); var compileClasspath = project.getConfigurations().getByName("compileClasspath"); + var copiedCompileClasspath = project.getConfigurations().create("copiedCompileClasspath"); + copiedCompileClasspath.extendsFrom(compileClasspath); if (withShadowPlugin) { var shadowConfiguration = project.getConfigurations().getByName("shadow"); var shadowedDependencies = shadowConfiguration.getAllDependencies(); - var nonShadowedCompileClasspath = compileClasspath.copyRecursive( + var nonShadowedCompileClasspath = copiedCompileClasspath.copyRecursive( dependency -> shadowedDependencies.contains(dependency) == false ); configureJavadocForConfiguration(project, false, nonShadowedCompileClasspath); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java index fae845b22965..4c33bdf6c6b9 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java @@ -9,6 +9,7 @@ package org.elasticsearch.gradle.internal; import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.Dependency; import org.gradle.api.artifacts.dsl.DependencyHandler; import org.gradle.api.plugins.BasePluginExtension; @@ -40,9 +41,18 @@ public class InternalTestArtifactExtension { DependencyHandler dependencies = project.getDependencies(); project.getPlugins().withType(JavaPlugin.class, javaPlugin -> { + Configuration apiElements = project.getConfigurations().getByName(sourceSet.getApiElementsConfigurationName()); + Configuration apiElementsTestArtifacts = project.getConfigurations() + .create(sourceSet.getApiConfigurationName() + "TestArtifacts"); + apiElements.extendsFrom(apiElementsTestArtifacts); Dependency projectDependency = dependencies.create(project); - dependencies.add(sourceSet.getApiElementsConfigurationName(), projectDependency); - dependencies.add(sourceSet.getRuntimeElementsConfigurationName(), projectDependency); + dependencies.add(apiElementsTestArtifacts.getName(), projectDependency); + + Configuration runtimeElements = project.getConfigurations().getByName(sourceSet.getRuntimeElementsConfigurationName()); + Configuration runtimeElementsTestArtifacts = project.getConfigurations() + .create(sourceSet.getRuntimeElementsConfigurationName() + "TestArtifacts"); + runtimeElements.extendsFrom(runtimeElementsTestArtifacts); + dependencies.add(runtimeElementsTestArtifacts.getName(), projectDependency); }); // PolicyUtil doesn't handle classifier notation well probably. // Instead of fixing PoliceUtil we stick to the pattern of changing diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java index f3951b2b45d0..b090f05c14c8 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/BuildParams.java @@ -8,14 +8,19 @@ package org.elasticsearch.gradle.internal.info; import org.elasticsearch.gradle.internal.BwcVersions; +import org.gradle.api.Action; import org.gradle.api.JavaVersion; +import org.gradle.api.Task; import org.gradle.api.provider.Provider; +import org.gradle.jvm.toolchain.JavaToolchainSpec; import java.io.File; +import java.io.IOException; import java.lang.reflect.Modifier; import java.time.ZonedDateTime; import java.util.Arrays; import java.util.List; +import java.util.Random; import java.util.function.Consumer; import static java.util.Objects.requireNonNull; @@ -28,6 +33,7 @@ public class BuildParams { private static JavaVersion minimumRuntimeVersion; private static JavaVersion gradleJavaVersion; private static JavaVersion runtimeJavaVersion; + private static Provider> javaToolChainSpec; private static String runtimeJavaDetails; private static Boolean inFipsJvm; private static String gitRevision; @@ -87,6 +93,10 @@ public class BuildParams { return value(inFipsJvm); } + public static void withFipsEnabledOnly(Task task) { + task.onlyIf("FIPS mode disabled", task1 -> isInFipsJvm() == false); + } + public static String getGitRevision() { return value(gitRevision); } @@ -107,10 +117,18 @@ public class BuildParams { return value(testSeed); } + public static Random getRandom() { + return new Random(Long.parseUnsignedLong(testSeed.split(":")[0], 16)); + } + public static Boolean isCi() { return value(isCi); } + public static Boolean isGraalVmRuntime() { + return value(runtimeJavaDetails.toLowerCase().contains("graalvm")); + } + public static Integer getDefaultParallel() { return value(defaultParallel); } @@ -119,6 +137,10 @@ public class BuildParams { return value(BuildParams.isSnapshotBuild); } + public static Provider> getJavaToolChainSpec() { + return javaToolChainSpec; + } + private static T value(T object) { if (object == null) { String callingMethod = Thread.currentThread().getStackTrace()[2].getMethodName(); @@ -161,7 +183,11 @@ public class BuildParams { } public void setRuntimeJavaHome(File runtimeJavaHome) { - BuildParams.runtimeJavaHome = requireNonNull(runtimeJavaHome); + try { + BuildParams.runtimeJavaHome = requireNonNull(runtimeJavaHome).getCanonicalFile(); + } catch (IOException e) { + throw new RuntimeException(e); + } } public void setIsRuntimeJavaHomeSet(boolean isRutimeJavaHomeSet) { @@ -227,5 +253,9 @@ public class BuildParams { public void setBwcVersions(Provider bwcVersions) { BuildParams.bwcVersions = requireNonNull(bwcVersions); } + + public void setJavaToolChainSpec(Provider> javaToolChain) { + BuildParams.javaToolChainSpec = javaToolChain; + } } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java index 313994b5645c..d76d715977bd 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java @@ -12,21 +12,32 @@ import org.elasticsearch.gradle.internal.BwcVersions; import org.elasticsearch.gradle.internal.conventions.info.GitInfo; import org.elasticsearch.gradle.internal.conventions.info.ParallelDetector; import org.elasticsearch.gradle.internal.conventions.util.Util; +import org.elasticsearch.gradle.util.GradleUtils; +import org.gradle.api.Action; import org.gradle.api.GradleException; import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.logging.Logger; import org.gradle.api.logging.Logging; +import org.gradle.api.model.ObjectFactory; +import org.gradle.api.plugins.JvmToolchainsPlugin; +import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; import org.gradle.api.provider.ProviderFactory; import org.gradle.internal.jvm.Jvm; +import org.gradle.internal.jvm.inspection.JavaInstallationRegistry; import org.gradle.internal.jvm.inspection.JvmInstallationMetadata; import org.gradle.internal.jvm.inspection.JvmMetadataDetector; import org.gradle.internal.jvm.inspection.JvmVendor; +import org.gradle.jvm.toolchain.JavaLanguageVersion; +import org.gradle.jvm.toolchain.JavaLauncher; +import org.gradle.jvm.toolchain.JavaToolchainService; +import org.gradle.jvm.toolchain.JavaToolchainSpec; +import org.gradle.jvm.toolchain.JvmVendorSpec; import org.gradle.jvm.toolchain.internal.InstallationLocation; -import org.gradle.jvm.toolchain.internal.JavaInstallationRegistry; import org.gradle.util.GradleVersion; +import org.jetbrains.annotations.NotNull; import java.io.BufferedReader; import java.io.File; @@ -41,6 +52,7 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.Random; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -49,21 +61,25 @@ import javax.inject.Inject; public class GlobalBuildInfoPlugin implements Plugin { private static final Logger LOGGER = Logging.getLogger(GlobalBuildInfoPlugin.class); private static final String DEFAULT_VERSION_JAVA_FILE_PATH = "server/src/main/java/org/elasticsearch/Version.java"; - private static Boolean _isBundledJdkSupported = null; + private ObjectFactory objectFactory; private final JavaInstallationRegistry javaInstallationRegistry; private final JvmMetadataDetector metadataDetector; private final ProviderFactory providers; + private JavaToolchainService toolChainService; @Inject public GlobalBuildInfoPlugin( + ObjectFactory objectFactory, JavaInstallationRegistry javaInstallationRegistry, JvmMetadataDetector metadataDetector, ProviderFactory providers ) { + this.objectFactory = objectFactory; this.javaInstallationRegistry = javaInstallationRegistry; this.metadataDetector = new ErrorTraceMetadataDetector(metadataDetector); this.providers = providers; + } @Override @@ -71,6 +87,8 @@ public class GlobalBuildInfoPlugin implements Plugin { if (project != project.getRootProject()) { throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project."); } + project.getPlugins().apply(JvmToolchainsPlugin.class); + toolChainService = project.getExtensions().getByType(JavaToolchainService.class); GradleVersion minimumGradleVersion = GradleVersion.version(getResourceContents("/minimumGradleVersion")); if (GradleVersion.current().compareTo(minimumGradleVersion) < 0) { throw new GradleException("Gradle " + minimumGradleVersion.getVersion() + "+ is required"); @@ -80,16 +98,23 @@ public class GlobalBuildInfoPlugin implements Plugin { JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(getResourceContents("/minimumRuntimeVersion")); File runtimeJavaHome = findRuntimeJavaHome(); + boolean isRuntimeJavaHomeSet = Jvm.current().getJavaHome().equals(runtimeJavaHome) == false; - File rootDir = project.getRootDir(); - GitInfo gitInfo = GitInfo.gitInfo(rootDir); + GitInfo gitInfo = GitInfo.gitInfo(project.getRootDir()); BuildParams.init(params -> { params.reset(); params.setRuntimeJavaHome(runtimeJavaHome); - params.setRuntimeJavaVersion(determineJavaVersion("runtime java.home", runtimeJavaHome, minimumRuntimeVersion)); - params.setIsRuntimeJavaHomeSet(Jvm.current().getJavaHome().equals(runtimeJavaHome) == false); - JvmInstallationMetadata runtimeJdkMetaData = metadataDetector.getMetadata(getJavaInstallation(runtimeJavaHome).getLocation()); + params.setJavaToolChainSpec(resolveToolchainSpecFromEnv()); + params.setRuntimeJavaVersion( + determineJavaVersion( + "runtime java.home", + runtimeJavaHome, + isRuntimeJavaHomeSet ? minimumRuntimeVersion : Jvm.current().getJavaVersion() + ) + ); + params.setIsRuntimeJavaHomeSet(isRuntimeJavaHomeSet); + JvmInstallationMetadata runtimeJdkMetaData = metadataDetector.getMetadata(getJavaInstallation(runtimeJavaHome)); params.setRuntimeJavaDetails(formatJavaVendorDetails(runtimeJdkMetaData)); params.setJavaVersions(getAvailableJavaVersions()); params.setMinimumCompilerVersion(minimumCompilerVersion); @@ -99,18 +124,41 @@ public class GlobalBuildInfoPlugin implements Plugin { params.setGitOrigin(gitInfo.getOrigin()); params.setBuildDate(ZonedDateTime.now(ZoneOffset.UTC)); params.setTestSeed(getTestSeed()); - params.setIsCi(System.getenv("JENKINS_URL") != null); + params.setIsCi(System.getenv("JENKINS_URL") != null || System.getenv("BUILDKITE_BUILD_URL") != null); params.setDefaultParallel(ParallelDetector.findDefaultParallel(project)); params.setInFipsJvm(Util.getBooleanProperty("tests.fips.enabled", false)); params.setIsSnapshotBuild(Util.getBooleanProperty("build.snapshot", true)); - params.setBwcVersions(providers.provider(() -> resolveBwcVersions(rootDir))); + AtomicReference cache = new AtomicReference<>(); + params.setBwcVersions( + providers.provider( + () -> cache.updateAndGet( + val -> val == null ? resolveBwcVersions(Util.locateElasticsearchWorkspace(project.getGradle())) : val + ) + ) + ); }); // Enforce the minimum compiler version assertMinimumCompilerVersion(minimumCompilerVersion); // Print global build info header just before task execution - project.getGradle().getTaskGraph().whenReady(graph -> logGlobalBuildInfo()); + // Only do this if we are the root build of a composite + if (GradleUtils.isIncludedBuild(project) == false) { + project.getGradle().getTaskGraph().whenReady(graph -> logGlobalBuildInfo()); + } + } + + private Provider resolveToolchainSpecFromEnv() { + return providers.environmentVariable("JAVA_TOOLCHAIN_HOME").map(toolChainEnvVariable -> { + File toolChainDir = new File(toolChainEnvVariable); + JvmInstallationMetadata metadata = metadataDetector.getMetadata(getJavaInstallation(toolChainDir)); + if (metadata.isValidInstallation() == false) { + throw new GradleException( + "Configured JAVA_TOOLCHAIN_HOME " + toolChainEnvVariable + " does not point to a valid jdk installation." + ); + } + return new MetadataBasedToolChainMatcher(metadata); + }); } private String formatJavaVendorDetails(JvmInstallationMetadata runtimeJdkMetaData) { @@ -136,18 +184,20 @@ public class GlobalBuildInfoPlugin implements Plugin { final String osVersion = System.getProperty("os.version"); final String osArch = System.getProperty("os.arch"); final Jvm gradleJvm = Jvm.current(); - JvmInstallationMetadata gradleJvmMetadata = metadataDetector.getMetadata(gradleJvm.getJavaHome()); + JvmInstallationMetadata gradleJvmMetadata = metadataDetector.getMetadata(getJavaInstallation(gradleJvm.getJavaHome())); final String gradleJvmVendorDetails = gradleJvmMetadata.getVendor().getDisplayName(); - final String gradleJvmImplementationVersion = gradleJvmMetadata.getImplementationVersion(); + final String gradleJvmImplementationVersion = gradleJvmMetadata.getJvmVersion(); LOGGER.quiet("======================================="); LOGGER.quiet("Elasticsearch Build Hamster says Hello!"); LOGGER.quiet(" Gradle Version : " + GradleVersion.current().getVersion()); LOGGER.quiet(" OS Info : " + osName + " " + osVersion + " (" + osArch + ")"); if (BuildParams.getIsRuntimeJavaHomeSet()) { - JvmInstallationMetadata runtimeJvm = metadataDetector.getMetadata(BuildParams.getRuntimeJavaHome()); + JvmInstallationMetadata runtimeJvm = metadataDetector.getMetadata(getJavaInstallation(BuildParams.getRuntimeJavaHome())); final String runtimeJvmVendorDetails = runtimeJvm.getVendor().getDisplayName(); - final String runtimeJvmImplementationVersion = runtimeJvm.getImplementationVersion(); - LOGGER.quiet(" Runtime JDK Version : " + runtimeJvmImplementationVersion + " (" + runtimeJvmVendorDetails + ")"); + final String runtimeJvmImplementationVersion = runtimeJvm.getJvmVersion(); + final String runtimeVersion = runtimeJvm.getRuntimeVersion(); + final String runtimeExtraDetails = runtimeJvmVendorDetails + ", " + runtimeVersion; + LOGGER.quiet(" Runtime JDK Version : " + runtimeJvmImplementationVersion + " (" + runtimeExtraDetails + ")"); LOGGER.quiet(" Runtime java.home : " + BuildParams.getRuntimeJavaHome()); LOGGER.quiet(" Gradle JDK Version : " + gradleJvmImplementationVersion + " (" + gradleJvmVendorDetails + ")"); LOGGER.quiet(" Gradle java.home : " + gradleJvm.getJavaHome()); @@ -155,6 +205,10 @@ public class GlobalBuildInfoPlugin implements Plugin { LOGGER.quiet(" JDK Version : " + gradleJvmImplementationVersion + " (" + gradleJvmVendorDetails + ")"); LOGGER.quiet(" JAVA_HOME : " + gradleJvm.getJavaHome()); } + String javaToolchainHome = System.getenv("JAVA_TOOLCHAIN_HOME"); + if (javaToolchainHome != null) { + LOGGER.quiet(" JAVA_TOOLCHAIN_HOME : " + javaToolchainHome); + } LOGGER.quiet(" Random Testing Seed : " + BuildParams.getTestSeed()); LOGGER.quiet(" In FIPS 140 mode : " + BuildParams.isInFipsJvm()); LOGGER.quiet("======================================="); @@ -162,7 +216,7 @@ public class GlobalBuildInfoPlugin implements Plugin { private JavaVersion determineJavaVersion(String description, File javaHome, JavaVersion requiredVersion) { InstallationLocation installation = getJavaInstallation(javaHome); - JavaVersion actualVersion = metadataDetector.getMetadata(installation.getLocation()).getLanguageVersion(); + JavaVersion actualVersion = metadataDetector.getMetadata(installation).getLanguageVersion(); if (actualVersion.isCompatibleWith(requiredVersion) == false) { throwInvalidJavaHomeException( description, @@ -183,7 +237,7 @@ public class GlobalBuildInfoPlugin implements Plugin { private boolean isSameFile(File javaHome, InstallationLocation installationLocation) { try { - return Files.isSameFile(installationLocation.getLocation().toPath(), javaHome.toPath()); + return Files.isSameFile(javaHome.toPath(), installationLocation.getLocation().toPath()); } catch (IOException ioException) { throw new UncheckedIOException(ioException); } @@ -195,16 +249,15 @@ public class GlobalBuildInfoPlugin implements Plugin { */ private List getAvailableJavaVersions() { return getAvailableJavaInstallationLocationSteam().map(installationLocation -> { - File installationDir = installationLocation.getLocation(); - JvmInstallationMetadata metadata = metadataDetector.getMetadata(installationDir); + JvmInstallationMetadata metadata = metadataDetector.getMetadata(installationLocation); int actualVersion = Integer.parseInt(metadata.getLanguageVersion().getMajorVersion()); - return JavaHome.of(actualVersion, providers.provider(() -> installationDir)); + return JavaHome.of(actualVersion, providers.provider(() -> installationLocation.getLocation())); }).collect(Collectors.toList()); } private Stream getAvailableJavaInstallationLocationSteam() { return Stream.concat( - javaInstallationRegistry.listInstallations().stream(), + javaInstallationRegistry.toolchains().stream().map(metadata -> metadata.location), Stream.of(new InstallationLocation(Jvm.current().getJavaHome(), "Current JVM")) ); } @@ -249,14 +302,24 @@ public class GlobalBuildInfoPlugin implements Plugin { if (runtimeJavaProperty != null) { return new File(findJavaHome(runtimeJavaProperty)); } - - return System.getenv("RUNTIME_JAVA_HOME") == null ? Jvm.current().getJavaHome() : new File(System.getenv("RUNTIME_JAVA_HOME")); + String env = System.getenv("RUNTIME_JAVA_HOME"); + if (env != null) { + return new File(env); + } + // fall back to tool chain if set. + env = System.getenv("JAVA_TOOLCHAIN_HOME"); + return env == null ? Jvm.current().getJavaHome() : new File(env); } private String findJavaHome(String version) { - Provider javaHomeNames = providers.gradleProperty("org.gradle.java.installations.fromEnv"); String javaHomeEnvVar = getJavaHomeEnvVarName(version); + String env = System.getenv(javaHomeEnvVar); + return env != null ? resolveJavaHomeFromEnvVariable(javaHomeEnvVar) : resolveJavaHomeFromToolChainService(version); + } + @NotNull + private String resolveJavaHomeFromEnvVariable(String javaHomeEnvVar) { + Provider javaHomeNames = providers.gradleProperty("org.gradle.java.installations.fromEnv"); // Provide a useful error if we're looking for a Java home version that we haven't told Gradle about yet Arrays.stream(javaHomeNames.get().split(",")) .filter(s -> s.equals(javaHomeEnvVar)) @@ -269,7 +332,6 @@ public class GlobalBuildInfoPlugin implements Plugin { + "updated in gradle.properties file." ) ); - String versionedJavaHome = System.getenv(javaHomeEnvVar); if (versionedJavaHome == null) { final String exceptionMessage = String.format( @@ -280,12 +342,25 @@ public class GlobalBuildInfoPlugin implements Plugin { + "it to be picked up. See https://github.com/elastic/elasticsearch/issues/31399 details.", javaHomeEnvVar ); - throw new GradleException(exceptionMessage); } return versionedJavaHome; } + @NotNull + private String resolveJavaHomeFromToolChainService(String version) { + Property value = objectFactory.property(JavaLanguageVersion.class).value(JavaLanguageVersion.of(version)); + Provider javaLauncherProvider = toolChainService.launcherFor( + javaToolchainSpec -> javaToolchainSpec.getLanguageVersion().value(value) + ); + + try { + return javaLauncherProvider.get().getMetadata().getInstallationPath().getAsFile().getCanonicalPath(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + private static String getJavaHomeEnvVarName(String version) { return "JAVA" + version + "_HOME"; } @@ -316,8 +391,8 @@ public class GlobalBuildInfoPlugin implements Plugin { } @Override - public JvmInstallationMetadata getMetadata(File file) { - JvmInstallationMetadata metadata = delegate.getMetadata(file); + public JvmInstallationMetadata getMetadata(InstallationLocation installationLocation) { + JvmInstallationMetadata metadata = delegate.getMetadata(installationLocation); if (metadata instanceof JvmInstallationMetadata.FailureInstallationMetadata) { throw new GradleException("Jvm Metadata cannot be resolved for " + metadata.getJavaHome().toString()); } @@ -325,4 +400,19 @@ public class GlobalBuildInfoPlugin implements Plugin { } } + private static class MetadataBasedToolChainMatcher implements Action { + private final JvmVendorSpec expectedVendorSpec; + private final JavaLanguageVersion expectedJavaLanguageVersion; + + MetadataBasedToolChainMatcher(JvmInstallationMetadata metadata) { + expectedVendorSpec = JvmVendorSpec.matching(metadata.getVendor().getRawVendor()); + expectedJavaLanguageVersion = JavaLanguageVersion.of(metadata.getLanguageVersion().getMajorVersion()); + } + + @Override + public void execute(JavaToolchainSpec spec) { + spec.getVendor().set(expectedVendorSpec); + spec.getLanguageVersion().set(expectedJavaLanguageVersion); + } + } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java index a03c064ae442..18ceb931343d 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/DistroTestPlugin.java @@ -37,9 +37,11 @@ import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.dsl.DependencyHandler; import org.gradle.api.artifacts.type.ArtifactTypeDefinition; import org.gradle.api.plugins.JavaBasePlugin; +import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.provider.Provider; import org.gradle.api.specs.Specs; import org.gradle.api.tasks.Copy; +import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.testing.Test; import org.gradle.initialization.layout.BuildLayout; @@ -368,6 +370,9 @@ public class DistroTestPlugin implements Plugin { t.onlyIf(t3 -> distribution.getArchitecture() == Architecture.current()); t.getOutputs().doNotCacheIf("Build cache is disabled for packaging tests", Specs.satisfyAll()); t.setMaxParallelForks(1); + SourceSet testSourceSet = project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets().getByName("test"); + t.setClasspath(testSourceSet.getRuntimeClasspath()); + t.setTestClassesDirs(testSourceSet.getOutput().getClassesDirs()); t.setWorkingDir(project.getProjectDir()); if (System.getProperty(IN_VM_SYSPROP) == null) { t.dependsOn(deps); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java index fb6ed7e10cb0..3f95d8c2b389 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/StandaloneRestTestPlugin.java @@ -71,7 +71,7 @@ public class StandaloneRestTestPlugin implements Plugin { ); IdeaModel idea = project.getExtensions().getByType(IdeaModel.class); - idea.getModule().getTestSourceDirs().addAll(testSourceSet.getJava().getSrcDirs()); + idea.getModule().getTestSources().from(testSourceSet.getJava().getSrcDirs()); idea.getModule() .getScopes() .put( diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java index 5a51c0bf38ad..39b21df53133 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessor.java @@ -12,6 +12,7 @@ import org.gradle.api.internal.tasks.testing.TestCompleteEvent; import org.gradle.api.internal.tasks.testing.TestDescriptorInternal; import org.gradle.api.internal.tasks.testing.TestResultProcessor; import org.gradle.api.internal.tasks.testing.TestStartEvent; +import org.gradle.api.tasks.testing.TestFailure; import org.gradle.api.tasks.testing.TestOutputEvent; import java.util.ArrayList; @@ -30,7 +31,7 @@ final class RerunTestResultProcessor implements TestResultProcessor { * being the root element. This is required to be tracked here to get the * structure right when rerunning a test task tests. * */ - private Object rootTestDescriptorId; + private TestDescriptorInternal rootTestDescriptor; RerunTestResultProcessor(TestResultProcessor delegate) { this.delegate = delegate; @@ -39,13 +40,21 @@ final class RerunTestResultProcessor implements TestResultProcessor { @Override public void started(TestDescriptorInternal descriptor, TestStartEvent testStartEvent) { activeDescriptorsById.put(descriptor.getId(), descriptor); - if (rootTestDescriptorId == null) { - rootTestDescriptorId = descriptor.getId(); - delegate.started(descriptor, testStartEvent); - } else if (descriptor.getId().equals(rootTestDescriptorId) == false) { + if (rootTestDescriptor == null) { + rootTestDescriptor = descriptor; + try { + delegate.started(descriptor, testStartEvent); + } catch (IllegalArgumentException illegalArgumentException) { + logTracing(descriptor.getId(), illegalArgumentException); + } + } else if (descriptor.getId().equals(rootTestDescriptor.getId()) == false) { boolean active = activeDescriptorsById.containsKey(testStartEvent.getParentId()); if (active) { - delegate.started(descriptor, testStartEvent); + try { + delegate.started(descriptor, testStartEvent); + } catch (IllegalArgumentException illegalArgumentException) { + logTracing(descriptor.getId(), illegalArgumentException); + } } } } @@ -53,7 +62,7 @@ final class RerunTestResultProcessor implements TestResultProcessor { @Override public void completed(Object testId, TestCompleteEvent testCompleteEvent) { boolean active = activeDescriptorsById.containsKey(testId); - if (testId.equals(rootTestDescriptorId)) { + if (testId.equals(rootTestDescriptor.getId())) { if (activeDescriptorsById.size() != 1) { return; } @@ -61,27 +70,50 @@ final class RerunTestResultProcessor implements TestResultProcessor { activeDescriptorsById.remove(testId); } if (active) { - delegate.completed(testId, testCompleteEvent); + try { + delegate.completed(testId, testCompleteEvent); + } catch (IllegalArgumentException illegalArgumentException) { + logTracing(testId, illegalArgumentException); + } } } @Override public void output(Object testId, TestOutputEvent testOutputEvent) { if (activeDescriptorsById.containsKey(testId)) { - delegate.output(testId, testOutputEvent); + try { + delegate.output(testId, testOutputEvent); + } catch (IllegalArgumentException illegalArgumentException) { + logTracing(testId, illegalArgumentException); + } } } @Override - public void failure(Object testId, Throwable throwable) { + public void failure(Object testId, TestFailure result) { if (activeDescriptorsById.containsKey(testId)) { activeDescriptorsById.remove(testId); - delegate.failure(testId, throwable); + try { + delegate.failure(testId, result); + } catch (IllegalArgumentException illegalArgumentException) { + logTracing(testId, illegalArgumentException); + } } } + private void logTracing(Object testId, IllegalArgumentException illegalArgumentException) { + // Add tracing to diagnose why we see this on CI + System.out.println("Rerun failure test id = " + testId); + System.out.println("Active test descriptors:"); + for (Map.Entry entry : activeDescriptorsById.entrySet()) { + System.out.println("id= " + entry.getKey() + " -- " + entry.getValue().getDisplayName()); + } + illegalArgumentException.printStackTrace(); + } + public void reset() { this.activeDescriptorsById.clear(); + this.activeDescriptorsById.put(rootTestDescriptor.getId(), rootTestDescriptor); } public List getActiveDescriptors() { diff --git a/build-tools-internal/src/main/resources/minimumGradleVersion b/build-tools-internal/src/main/resources/minimumGradleVersion index 7501d508f743..2983cad04951 100644 --- a/build-tools-internal/src/main/resources/minimumGradleVersion +++ b/build-tools-internal/src/main/resources/minimumGradleVersion @@ -1 +1 @@ -7.5.1 \ No newline at end of file +8.2 diff --git a/build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy b/build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy index bfcfea3e2da1..2716ac1669ff 100644 --- a/build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy +++ b/build-tools-internal/src/test/groovy/org/elasticsearch/gradle/internal/test/rerun/executer/RerunTestResultProcessorTestSpec.groovy @@ -12,6 +12,7 @@ import org.gradle.api.internal.tasks.testing.TestCompleteEvent import org.gradle.api.internal.tasks.testing.TestDescriptorInternal import org.gradle.api.internal.tasks.testing.TestResultProcessor import org.gradle.api.internal.tasks.testing.TestStartEvent +import org.gradle.api.tasks.testing.TestFailure import org.gradle.api.tasks.testing.TestOutputEvent import spock.lang.Specification @@ -75,20 +76,20 @@ class RerunTestResultProcessorTestSpec extends Specification { def testDescriptor2 = descriptor("testId2") def testStartEvent2 = startEvent("testId2") - def testError2 = Mock(Throwable) + def testFailure = Mock(TestFailure) when: processor.started(rootDescriptor, rootTestStartEvent) processor.started(testDescriptor1, testStartEvent1) processor.started(testDescriptor2, testStartEvent2) - processor.failure("testId2", testError2) + processor.failure("testId2", testFailure) processor.completed("rootId", rootCompleteEvent) then: 1 * delegate.started(rootDescriptor, rootTestStartEvent) 1 * delegate.started(testDescriptor1, testStartEvent1) 1 * delegate.started(testDescriptor2, testStartEvent2) - 1 * delegate.failure("testId2", testError2) + 1 * delegate.failure("testId2", testFailure) 0 * delegate.completed("rootId", rootCompleteEvent) when: @@ -132,10 +133,4 @@ class RerunTestResultProcessorTestSpec extends Specification { _ * event.getParentId() >> parentId event } - -// TestFinishEvent finishEvent(String parentId) { -// def event = Mock(TestFinishEvent) -// _ * event.getParentId() >> parentId -// event -// } -} +} \ No newline at end of file diff --git a/build-tools/build.gradle b/build-tools/build.gradle index 406c34fc7dbb..04b43177e973 100644 --- a/build-tools/build.gradle +++ b/build-tools/build.gradle @@ -21,8 +21,11 @@ description = "The elasticsearch build tools" group = "org.elasticsearch.gradle" version = versions.getProperty("elasticsearch") -targetCompatibility = 11 -sourceCompatibility = 11 + +java { + targetCompatibility = 11 + sourceCompatibility = 11 +} gradlePlugin { // We already configure publication and we don't need or want the one that comes @@ -68,7 +71,7 @@ gradlePlugin { // we write this back out below to load it in the Build.java which will be shown in rest main action // to indicate this being a snapshot build or a release build. def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) { - outputFile = "${buildDir}/version.properties" + destinationFile = new File(buildDir, "version.properties"); comment = 'Generated version properties' properties(versions) } diff --git a/build-tools/reaper/build.gradle b/build-tools/reaper/build.gradle index 5266cf1cc310..1bab55fb39f9 100644 --- a/build-tools/reaper/build.gradle +++ b/build-tools/reaper/build.gradle @@ -7,8 +7,12 @@ plugins { group = "org.elasticsearch.gradle" version = versions.getProperty("elasticsearch") -targetCompatibility = 11 -sourceCompatibility = 11 + + +java { + targetCompatibility = 11 + sourceCompatibility = 11 +} tasks.named("jar").configure { archiveFileName = "${project.name}.jar" diff --git a/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/JavaRestTestPluginFuncTest.groovy b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/JavaRestTestPluginFuncTest.groovy index 2d6d122663da..1d3ac0030a0b 100644 --- a/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/JavaRestTestPluginFuncTest.groovy +++ b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/JavaRestTestPluginFuncTest.groovy @@ -11,6 +11,7 @@ package org.elasticsearch.gradle.test import org.elasticsearch.gradle.VersionProperties import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.gradle.testkit.runner.TaskOutcome +import spock.lang.Ignore class JavaRestTestPluginFuncTest extends AbstractGradleFuncTest { @@ -19,6 +20,7 @@ class JavaRestTestPluginFuncTest extends AbstractGradleFuncTest { configurationCacheCompatible = false } + @Ignore('https://github.com/gradle/gradle/issues/21868') def "declares default dependencies"() { given: buildFile << """ diff --git a/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/YamlRestTestPluginFuncTest.groovy b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/YamlRestTestPluginFuncTest.groovy index 96fe706506c8..a54cbec91e77 100644 --- a/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/YamlRestTestPluginFuncTest.groovy +++ b/build-tools/src/integTest/groovy/org/elasticsearch/gradle/test/YamlRestTestPluginFuncTest.groovy @@ -11,6 +11,7 @@ package org.elasticsearch.gradle.test import org.elasticsearch.gradle.VersionProperties import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest import org.gradle.testkit.runner.TaskOutcome +import spock.lang.Ignore class YamlRestTestPluginFuncTest extends AbstractGradleFuncTest { @@ -19,6 +20,7 @@ class YamlRestTestPluginFuncTest extends AbstractGradleFuncTest { configurationCacheCompatible = false } + @Ignore('https://github.com/gradle/gradle/issues/21868') def "declares default dependencies"() { given: buildFile << """ diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/Jdk.java b/build-tools/src/main/java/org/elasticsearch/gradle/Jdk.java index f378f6c48af2..def38f9514a9 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/Jdk.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/Jdk.java @@ -15,6 +15,7 @@ import org.gradle.api.provider.Property; import org.gradle.api.tasks.TaskDependency; import java.io.File; +import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.regex.Matcher; @@ -152,11 +153,20 @@ public class Jdk implements Buildable, Iterable { return new Object() { @Override public String toString() { - return getHomeRoot() + "/bin/java"; + try { + return new File(getHomeRoot() + getPlatformBinPath()).getCanonicalPath(); + } catch (IOException e) { + throw new RuntimeException(e); + } } }; } + private String getPlatformBinPath() { + boolean isWindows = "windows".equals(getPlatform()); + return "/bin/java" + (isWindows ? ".exe" : ""); + } + public Object getJavaHomePath() { return new Object() { @Override diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java index e505575068e5..62786792beea 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginBuildPlugin.java @@ -34,7 +34,7 @@ import org.gradle.api.artifacts.dsl.DependencyHandler; import org.gradle.api.artifacts.type.ArtifactTypeDefinition; import org.gradle.api.file.RegularFile; import org.gradle.api.plugins.BasePlugin; -import org.gradle.api.plugins.BasePluginConvention; +import org.gradle.api.plugins.BasePluginExtension; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.provider.Provider; @@ -78,37 +78,43 @@ public class PluginBuildPlugin implements Plugin { final TaskProvider bundleTask = createBundleTasks(project, extension); project.afterEvaluate(project1 -> { - final PluginPropertiesExtension extension1 = project1.getExtensions().getByType(PluginPropertiesExtension.class); - configurePublishing(project1, extension1); - String name = extension1.getName(); - project1.setProperty("archivesBaseName", name); - project1.setDescription(extension1.getDescription()); + final PluginPropertiesExtension pluginPropertiesExtension = project1.getExtensions().getByType(PluginPropertiesExtension.class); + configurePublishing(project1, pluginPropertiesExtension); + String name = pluginPropertiesExtension.getName(); - if (extension1.getName() == null) { + final BasePluginExtension basepluginExtension = project1.getExtensions().getByType(BasePluginExtension.class); + basepluginExtension.getArchivesName().set(name); + project1.setDescription(pluginPropertiesExtension.getDescription()); + + if (pluginPropertiesExtension.getName() == null) { throw new InvalidUserDataException("name is a required setting for esplugin"); } - if (extension1.getDescription() == null) { + if (pluginPropertiesExtension.getDescription() == null) { throw new InvalidUserDataException("description is a required setting for esplugin"); } - if (extension1.getType().equals(PluginType.BOOTSTRAP) == false && extension1.getClassname() == null) { + if (pluginPropertiesExtension.getType().equals(PluginType.BOOTSTRAP) == false + && pluginPropertiesExtension.getClassname() == null) { throw new InvalidUserDataException("classname is a required setting for esplugin"); } Map map = new LinkedHashMap<>(12); - map.put("name", extension1.getName()); - map.put("description", extension1.getDescription()); - map.put("version", extension1.getVersion()); + map.put("name", pluginPropertiesExtension.getName()); + map.put("description", pluginPropertiesExtension.getDescription()); + map.put("version", pluginPropertiesExtension.getVersion()); map.put("elasticsearchVersion", Version.fromString(VersionProperties.getElasticsearch()).toString()); map.put("javaVersion", project1.getExtensions().getByType(JavaPluginExtension.class).getTargetCompatibility().toString()); - map.put("classname", extension1.getType().equals(PluginType.BOOTSTRAP) ? "" : extension1.getClassname()); - map.put("extendedPlugins", extension1.getExtendedPlugins().stream().collect(Collectors.joining(","))); - map.put("hasNativeController", extension1.isHasNativeController()); - map.put("requiresKeystore", extension1.isRequiresKeystore()); - map.put("type", extension1.getType().toString()); - map.put("javaOpts", extension1.getJavaOpts()); - map.put("licensed", extension1.isLicensed()); + map.put( + "classname", + pluginPropertiesExtension.getType().equals(PluginType.BOOTSTRAP) ? "" : pluginPropertiesExtension.getClassname() + ); + map.put("extendedPlugins", pluginPropertiesExtension.getExtendedPlugins().stream().collect(Collectors.joining(","))); + map.put("hasNativeController", pluginPropertiesExtension.isHasNativeController()); + map.put("requiresKeystore", pluginPropertiesExtension.isRequiresKeystore()); + map.put("type", pluginPropertiesExtension.getType().toString()); + map.put("javaOpts", pluginPropertiesExtension.getJavaOpts()); + map.put("licensed", pluginPropertiesExtension.isLicensed()); project1.getTasks().withType(Copy.class).named("pluginProperties").configure(copy -> { copy.expand(map); copy.getInputs().properties(map); @@ -146,9 +152,10 @@ public class PluginBuildPlugin implements Plugin { .withType(Jar.class) .configureEach(jar -> jar.getArchiveBaseName().set(jar.getArchiveBaseName().get() + "-client")); project.getTasks().withType(GenerateMavenPom.class).configureEach(pomTask -> { - String archivesBaseName = project.getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName(); + final BasePluginExtension basepluginExtension = project.getExtensions().getByType(BasePluginExtension.class); + String archivesName = basepluginExtension.getArchivesName().get(); pomTask.setDestination( - new File(project.getBuildDir(), "/distributions/" + archivesBaseName + "-client-" + project.getVersion() + ".pom") + new File(project.getBuildDir(), "/distributions/" + archivesName + "-client-" + project.getVersion() + ".pom") ); }); elastic.setArtifactId(extension.getName() + "-client"); diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java index 2e6ab47ffc95..0aa7074748f2 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/PluginPropertiesExtension.java @@ -10,6 +10,7 @@ package org.elasticsearch.gradle.plugin; import org.gradle.api.Project; import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.plugins.BasePluginExtension; import org.gradle.api.plugins.ExtraPropertiesExtension; import java.io.File; @@ -66,6 +67,7 @@ public class PluginPropertiesExtension { } public void setName(String name) { + this.project.getExtensions().getByType(BasePluginExtension.class).getArchivesName().set(name); this.name = name; } diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java index f67428b5b93d..9246b138b17f 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/testclusters/StandaloneRestIntegTestTask.java @@ -8,8 +8,7 @@ package org.elasticsearch.gradle.testclusters; import org.elasticsearch.gradle.FileSystemOperationsAware; -import org.elasticsearch.gradle.util.GradleUtils; -import org.gradle.api.provider.Provider; +import org.gradle.api.services.internal.BuildServiceProvider; import org.gradle.api.services.internal.BuildServiceRegistryInternal; import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Internal; @@ -81,9 +80,8 @@ public class StandaloneRestIntegTestTask extends Test implements TestClustersAwa public List getSharedResources() { List locks = new ArrayList<>(super.getSharedResources()); BuildServiceRegistryInternal serviceRegistry = getServices().get(BuildServiceRegistryInternal.class); - Provider throttleProvider = GradleUtils.getBuildService(serviceRegistry, THROTTLE_SERVICE_NAME); - SharedResource resource = serviceRegistry.forService(throttleProvider); - + BuildServiceProvider serviceProvider = serviceRegistry.consume(THROTTLE_SERVICE_NAME, TestClustersThrottle.class); + SharedResource resource = serviceRegistry.forService(serviceProvider); int nodeCount = clusters.stream().mapToInt(cluster -> cluster.getNodes().size()).sum(); if (nodeCount > 0) { for (int i = 0; i < Math.min(nodeCount, resource.getMaxUsages()); i++) { diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java b/build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java index 4cdccb1ef81d..3bf3dafc97b3 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java @@ -127,7 +127,7 @@ public abstract class GradleUtils { Configuration runtimeClasspathConfiguration = project.getConfigurations().getByName(runtimeClasspathName); project.getPluginManager().withPlugin("idea", p -> { IdeaModel idea = project.getExtensions().getByType(IdeaModel.class); - idea.getModule().setTestSourceDirs(testSourceSet.getJava().getSrcDirs()); + idea.getModule().getTestSources().from(testSourceSet.getJava().getSrcDirs()); idea.getModule().getScopes().put(testSourceSet.getName(), Map.of("plus", List.of(runtimeClasspathConfiguration))); }); project.getPluginManager().withPlugin("eclipse", p -> { @@ -219,4 +219,16 @@ public abstract class GradleUtils { public static String projectPath(String taskPath) { return taskPath.lastIndexOf(':') == 0 ? ":" : taskPath.substring(0, taskPath.lastIndexOf(':')); } + + /** + * Determine if the given {@link Project} is part of a composite included build. Returns {@code false} for any projects that belong + * to the root "outer" build of a composite. + * + * @param project the current project + * @return true if the project is an included build + */ + public static boolean isIncludedBuild(Project project) { + return project.getGradle().getParent() != null; + } + } diff --git a/build-tools/src/test/java/org/elasticsearch/gradle/JdkDownloadPluginTests.java b/build-tools/src/test/java/org/elasticsearch/gradle/JdkDownloadPluginTests.java index 6d37ad44a75e..5145945317b3 100644 --- a/build-tools/src/test/java/org/elasticsearch/gradle/JdkDownloadPluginTests.java +++ b/build-tools/src/test/java/org/elasticsearch/gradle/JdkDownloadPluginTests.java @@ -11,7 +11,6 @@ package org.elasticsearch.gradle; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Project; import org.gradle.testfixtures.ProjectBuilder; -import org.junit.BeforeClass; import org.junit.Test; import static org.hamcrest.CoreMatchers.equalTo; @@ -19,12 +18,6 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertThrows; public class JdkDownloadPluginTests { - private static Project rootProject; - - @BeforeClass - public static void setupRoot() { - rootProject = ProjectBuilder.builder().build(); - } @Test public void testMissingVendor() { @@ -134,7 +127,7 @@ public class JdkDownloadPluginTests { } private Project createProject() { - Project project = ProjectBuilder.builder().withParent(rootProject).build(); + Project project = ProjectBuilder.builder().withParent(ProjectBuilder.builder().build()).build(); project.getPlugins().apply("elasticsearch.jdk-download"); return project; } diff --git a/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java index 2ea1eb904210..38c4a8105b11 100644 --- a/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java +++ b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/InternalAwareGradleRunner.java @@ -149,4 +149,9 @@ public class InternalAwareGradleRunner extends GradleRunner { public BuildResult buildAndFail() throws InvalidRunnerConfigurationException, UnexpectedBuildSuccess { return delegate.buildAndFail(); } + + @Override + public BuildResult run() throws InvalidRunnerConfigurationException { + return delegate.run(); + } } diff --git a/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/NormalizeOutputGradleRunner.java b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/NormalizeOutputGradleRunner.java index 0c535eb7e60f..7c496d1f9597 100644 --- a/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/NormalizeOutputGradleRunner.java +++ b/build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/NormalizeOutputGradleRunner.java @@ -152,6 +152,11 @@ public class NormalizeOutputGradleRunner extends GradleRunner { return new NormalizedBuildResult(delegate.buildAndFail()); } + @Override + public BuildResult run() throws InvalidRunnerConfigurationException { + return new NormalizedBuildResult(delegate.run()); + } + private class NormalizedBuildResult implements BuildResult { private BuildResult delegate; private String normalizedString; diff --git a/build.gradle b/build.gradle index 60ff387f4825..74f378e44320 100644 --- a/build.gradle +++ b/build.gradle @@ -228,6 +228,11 @@ allprojects { } } + allprojects { + tasks.withType(Test).configureEach { t -> + println "paaath: " + t.path + } + } tasks.register('resolveAllDependencies', ResolveAllDependencies) { configs = project.configurations if (project.path.contains("fixture")) { diff --git a/client/benchmark/build.gradle b/client/benchmark/build.gradle index 588d302bb3dd..2717979b74da 100644 --- a/client/benchmark/build.gradle +++ b/client/benchmark/build.gradle @@ -14,8 +14,13 @@ group = 'org.elasticsearch.client' // Not published so no need to assemble tasks.named("assemble").configure { enabled = true } -archivesBaseName = 'client-benchmarks' -mainClassName = 'org.elasticsearch.client.benchmark.BenchmarkMain' +base { + archivesName = 'client-benchmarks' +} + +application { + mainClass = 'org.elasticsearch.client.benchmark.BenchmarkMain' +} dependencies { api 'org.apache.commons:commons-math3:3.2' diff --git a/client/rest-high-level/build.gradle b/client/rest-high-level/build.gradle index 3cf647ba290d..ed8e4a5c00cc 100644 --- a/client/rest-high-level/build.gradle +++ b/client/rest-high-level/build.gradle @@ -14,7 +14,10 @@ apply plugin: 'elasticsearch.publish' apply plugin: 'elasticsearch.rest-resources' group = 'org.elasticsearch.client' -archivesBaseName = 'elasticsearch-rest-high-level-client' + +base { + archivesName = 'elasticsearch-rest-high-level-client' +} // HLRC is published under the Elastic License projectLicenses.set(['Elastic License 2.0': ext.elasticLicenseUrl.get()]) diff --git a/client/rest/build.gradle b/client/rest/build.gradle index e92779683dac..14f0448813bc 100644 --- a/client/rest/build.gradle +++ b/client/rest/build.gradle @@ -24,11 +24,16 @@ import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTas apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' -targetCompatibility = JavaVersion.VERSION_1_8 -sourceCompatibility = JavaVersion.VERSION_1_8 +java { + targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_1_8 +} group = 'org.elasticsearch.client' -archivesBaseName = 'elasticsearch-rest-client' + +base { + archivesName = 'elasticsearch-rest-client' +} // LLRC is licenses under Apache 2.0 projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) diff --git a/client/sniffer/build.gradle b/client/sniffer/build.gradle index 9162c813c746..d67b57d13a51 100644 --- a/client/sniffer/build.gradle +++ b/client/sniffer/build.gradle @@ -21,11 +21,15 @@ import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTas apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' -targetCompatibility = JavaVersion.VERSION_1_8 -sourceCompatibility = JavaVersion.VERSION_1_8 +java { + targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_1_8 +} group = 'org.elasticsearch.client' -archivesBaseName = 'elasticsearch-rest-client-sniffer' +base { + archivesName = 'elasticsearch-rest-client-sniffer' +} // rest client sniffer is licenses under Apache 2.0 projectLicenses.set(['The Apache Software License, Version 2.0': 'http://www.apache.org/licenses/LICENSE-2.0']) diff --git a/client/test/build.gradle b/client/test/build.gradle index c8ba70814086..1a68caf90bbc 100644 --- a/client/test/build.gradle +++ b/client/test/build.gradle @@ -9,8 +9,10 @@ import org.elasticsearch.gradle.internal.conventions.precommit.LicenseHeadersTas apply plugin: 'elasticsearch.build' -targetCompatibility = JavaVersion.VERSION_1_8 -sourceCompatibility = JavaVersion.VERSION_1_8 +java { + targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_1_8 +} group = "${group}.client.test" diff --git a/distribution/archives/integ-test-zip/build.gradle b/distribution/archives/integ-test-zip/build.gradle index d91d919619ff..639136b8df15 100644 --- a/distribution/archives/integ-test-zip/build.gradle +++ b/distribution/archives/integ-test-zip/build.gradle @@ -21,7 +21,9 @@ tasks.named("processJavaRestTestResources").configure { } // make the pom file name use elasticsearch instead of the project name -archivesBaseName = "elasticsearch" +base { + archivesName = "elasticsearch" +} ext.buildDist = parent.tasks.named("buildIntegTestZip") publishing { diff --git a/distribution/packages/build.gradle b/distribution/packages/build.gradle index 2cfd360ebff2..6028aff51e3d 100644 --- a/distribution/packages/build.gradle +++ b/distribution/packages/build.gradle @@ -43,7 +43,7 @@ import java.util.regex.Pattern */ plugins { - id "nebula.ospackage-base" version "8.6.1" + id "com.netflix.nebula.ospackage-base" version "11.0.0" } void addProcessFilesTask(String type, boolean oss, boolean jdk) { diff --git a/distribution/tools/geoip-cli/build.gradle b/distribution/tools/geoip-cli/build.gradle index b285ed95307a..c735b2e4601b 100644 --- a/distribution/tools/geoip-cli/build.gradle +++ b/distribution/tools/geoip-cli/build.gradle @@ -8,7 +8,9 @@ apply plugin: 'elasticsearch.build' -archivesBaseName = 'elasticsearch-geoip-cli' +base { + archivesName = 'elasticsearch-geoip-cli' +} dependencies { compileOnly project(":server") diff --git a/distribution/tools/java-version-checker/build.gradle b/distribution/tools/java-version-checker/build.gradle index 9166586d036e..aebce65cd043 100644 --- a/distribution/tools/java-version-checker/build.gradle +++ b/distribution/tools/java-version-checker/build.gradle @@ -1,6 +1,8 @@ apply plugin: 'elasticsearch.build' -targetCompatibility = JavaVersion.VERSION_1_7 +java { + targetCompatibility = JavaVersion.VERSION_1_7 +} // java_version_checker do not depend on core so only JDK signatures should be checked tasks.named('forbiddenApisMain').configure { diff --git a/distribution/tools/launchers/build.gradle b/distribution/tools/launchers/build.gradle index e133350d5c44..41e966fdff33 100644 --- a/distribution/tools/launchers/build.gradle +++ b/distribution/tools/launchers/build.gradle @@ -17,7 +17,9 @@ dependencies { testImplementation "org.hamcrest:hamcrest:${versions.hamcrest}" } -archivesBaseName = 'elasticsearch-launchers' +base { + archivesName = 'elasticsearch-launchers' +} tasks.withType(CheckForbiddenApis).configureEach { replaceSignatureFiles 'jdk-signatures', 'snakeyaml-signatures' diff --git a/distribution/tools/plugin-cli/build.gradle b/distribution/tools/plugin-cli/build.gradle index d1a53a0e11bd..5719e6be171d 100644 --- a/distribution/tools/plugin-cli/build.gradle +++ b/distribution/tools/plugin-cli/build.gradle @@ -8,7 +8,9 @@ apply plugin: 'elasticsearch.build' -archivesBaseName = 'elasticsearch-plugin-cli' +base { + archivesName = 'elasticsearch-plugin-cli' +} dependencies { compileOnly project(":server") diff --git a/gradle/build.versions.toml b/gradle/build.versions.toml index ea230d55efde..7891c7e017da 100644 --- a/gradle/build.versions.toml +++ b/gradle/build.versions.toml @@ -33,7 +33,7 @@ junit5-vintage = { group = "org.junit.vintage", name="junit-vintage-engine", ver maven-model = "org.apache.maven:maven-model:3.6.2" mockito-core = "org.mockito:mockito-core:1.9.5" nebula-info = "com.netflix.nebula:gradle-info-plugin:11.3.3" -shadow-plugin = "gradle.plugin.com.github.johnrengelman:shadow:7.1.2" +shadow-plugin = "com.github.johnrengelman:shadow:8.1.1" spock-core = { group = "org.spockframework", name="spock-core", version.ref="spock" } spock-junit4 = { group = "org.spockframework", name="spock-junit4", version.ref="spock" } spock-platform = { group = "org.spockframework", name="spock-bom", version.ref="spock" } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 453ce1562a79..8bc33ec1a2a5 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -1,5 +1,5 @@ - + false false @@ -399,6 +399,11 @@ + + + + + @@ -939,9 +944,9 @@ - - - + + + @@ -1279,11 +1284,6 @@ - - - - - @@ -1964,6 +1964,11 @@ + + + + + @@ -1974,6 +1979,11 @@ + + + + + @@ -2777,11 +2787,21 @@ + + + + + + + + + + @@ -3170,6 +3190,11 @@ + + + + + @@ -3430,6 +3455,11 @@ + + + + + @@ -3820,6 +3850,11 @@ + + + + + @@ -3860,6 +3895,11 @@ + + + + + @@ -3890,6 +3930,11 @@ + + + + + @@ -4030,6 +4075,11 @@ + + + + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e939ec976751..a3d33870aad5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,8 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip +distributionSha256Sum=5022b0b25fe182b0e50867e77f484501dba44feeea88f5c1f13b6b4660463640 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionSha256Sum=db9c8211ed63f61f60292c69e80d89196f9eb36665e369e7f00ac4cc841c2219 +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/gradlew b/gradlew index a69d9cb6c206..b17c688e21e0 100755 --- a/gradlew +++ b/gradlew @@ -133,10 +133,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. diff --git a/libs/core/build.gradle b/libs/core/build.gradle index c9dfd13feab1..6906356b4f47 100644 --- a/libs/core/build.gradle +++ b/libs/core/build.gradle @@ -10,7 +10,9 @@ import org.elasticsearch.gradle.internal.info.BuildParams apply plugin: 'elasticsearch.publish' -archivesBaseName = 'elasticsearch-core' +base { + archivesName = 'elasticsearch-core' +} // we want to keep the JDKs in our IDEs set to JDK 8 until minimum JDK is bumped to 11 so we do not include this source set in our IDEs if (!isEclipse) { diff --git a/modules/build.gradle b/modules/build.gradle index 57f7495d8713..30a3cee930d3 100644 --- a/modules/build.gradle +++ b/modules/build.gradle @@ -13,7 +13,7 @@ configure(subprojects.findAll { it.parent.path == project.path }) { esplugin { // for local ES plugins, the name of the plugin is the same as the directory - name project.name + name = project.name } if (project.file('src/main/packaging').exists()) { diff --git a/modules/lang-painless/build.gradle b/modules/lang-painless/build.gradle index 3e539afc4f7b..d91aac991897 100644 --- a/modules/lang-painless/build.gradle +++ b/modules/lang-painless/build.gradle @@ -63,7 +63,7 @@ tasks.register("apiJavadoc", Javadoc) { source = sourceSets.main.allJava classpath = sourceSets.main.compileClasspath + sourceSets.main.output include '**/org/elasticsearch/painless/api/' - destinationDir = new File(docsDir, 'apiJavadoc') + destinationDir = new File(buildDir, 'docs/apiJavadoc') } tasks.register("apiJavadocJar", Jar) { diff --git a/modules/lang-painless/spi/build.gradle b/modules/lang-painless/spi/build.gradle index 84700c62ef7c..96b26eea9772 100644 --- a/modules/lang-painless/spi/build.gradle +++ b/modules/lang-painless/spi/build.gradle @@ -10,7 +10,10 @@ apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.publish' group = 'org.elasticsearch.plugin' -archivesBaseName = 'elasticsearch-scripting-painless-spi' + +base { + archivesName = 'elasticsearch-scripting-painless-spi' +} dependencies { compileOnly project(":server") diff --git a/modules/legacy-geo/build.gradle b/modules/legacy-geo/build.gradle index 8d45856cabce..158d3308e339 100644 --- a/modules/legacy-geo/build.gradle +++ b/modules/legacy-geo/build.gradle @@ -7,7 +7,6 @@ */ apply plugin: 'elasticsearch.internal-cluster-test' -apply plugin: 'nebula.optional-base' esplugin { description 'Placeholder plugin for geospatial features in ES' @@ -16,8 +15,8 @@ esplugin { dependencies { api "org.apache.lucene:lucene-spatial-extras:${versions.lucene}" - api "org.locationtech.spatial4j:spatial4j:${versions.spatial4j}", optional - api "org.locationtech.jts:jts-core:${versions.jts}", optional + api "org.locationtech.spatial4j:spatial4j:${versions.spatial4j}" + api "org.locationtech.jts:jts-core:${versions.jts}" testImplementation project(":test:framework") } diff --git a/modules/transport-netty4/build.gradle b/modules/transport-netty4/build.gradle index 4097626fed01..d6c687dd6c6e 100644 --- a/modules/transport-netty4/build.gradle +++ b/modules/transport-netty4/build.gradle @@ -51,6 +51,8 @@ tasks.named("dependencyLicenses").configure { TaskProvider pooledTest = tasks.register("pooledTest", Test) { include '**/*Tests.class' systemProperty 'es.use_unpooled_allocator', 'false' + classpath = sourceSets.test.runtimeClasspath + testClassesDirs = sourceSets.test.output.classesDirs } TaskProvider pooledInternalClusterTest = tasks.register("pooledInternalClusterTest", Test) { diff --git a/plugins/examples/gradle/wrapper/gradle-wrapper.properties b/plugins/examples/gradle/wrapper/gradle-wrapper.properties index e939ec976751..a3d33870aad5 100644 --- a/plugins/examples/gradle/wrapper/gradle-wrapper.properties +++ b/plugins/examples/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,8 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip +distributionSha256Sum=5022b0b25fe182b0e50867e77f484501dba44feeea88f5c1f13b6b4660463640 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionSha256Sum=db9c8211ed63f61f60292c69e80d89196f9eb36665e369e7f00ac4cc841c2219 +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/plugins/examples/settings.gradle b/plugins/examples/settings.gradle index 5477a355f98b..c580ca1fcb23 100644 --- a/plugins/examples/settings.gradle +++ b/plugins/examples/settings.gradle @@ -36,8 +36,8 @@ gradle.projectsEvaluated { substitute module('org.elasticsearch:elasticsearch') using module("org.elasticsearch:server:${elasticsearchVersion}") substitute module('org.elasticsearch.client:elasticsearch-rest-high-level-client') using module("org.elasticsearch.client:rest-high-level:${elasticsearchVersion}") substitute module('org.elasticsearch.client:elasticsearch-rest-client') using module("org.elasticsearch.client:rest:${elasticsearchVersion}") - substitute module('org.elasticsearch.plugin:x-pack-core') with module("org.elasticsearch.plugin:core:${elasticsearchVersion}") - substitute module('org.elasticsearch.plugin:elasticsearch-scripting-painless-spi') with module("org.elasticsearch.plugin:spi:${elasticsearchVersion}") + substitute module('org.elasticsearch.plugin:x-pack-core') using module("org.elasticsearch.plugin:core:${elasticsearchVersion}") + substitute module('org.elasticsearch.plugin:elasticsearch-scripting-painless-spi') using module("org.elasticsearch.plugin:spi:${elasticsearchVersion}") substitute module('org.elasticsearch.distribution.integ-test-zip:elasticsearch') using variant(module("org.elasticsearch.distribution.integ-test-zip:integ-test-zip:${elasticsearchVersion}")) { attributes { attribute(Attribute.of("composite", Boolean.class), true) diff --git a/plugins/repository-s3/build.gradle b/plugins/repository-s3/build.gradle index 566f1792efd4..b699e12ed1cd 100644 --- a/plugins/repository-s3/build.gradle +++ b/plugins/repository-s3/build.gradle @@ -79,6 +79,8 @@ tasks.named("bundlePlugin").configure { def testRepositoryCreds = tasks.register("testRepositoryCreds", Test) { include '**/RepositoryCredentialsTests.class' systemProperty 'es.allow_insecure_settings', 'true' + classpath = sourceSets.test.runtimeClasspath + testClassesDirs = sourceSets.test.output.classesDirs } tasks.named('check').configure { diff --git a/qa/wildfly/build.gradle b/qa/wildfly/build.gradle index a09057abc99b..966f00fac153 100644 --- a/qa/wildfly/build.gradle +++ b/qa/wildfly/build.gradle @@ -65,6 +65,8 @@ tasks.register("integTest", Test) { maxParallelForks = '1' include '**/*IT.class' systemProperty 'tests.security.manager', 'false' + classpath = sourceSets.test.runtimeClasspath + testClassesDirs = sourceSets.test.output.classesDirs } tasks.named("check").configure { diff --git a/server/build.gradle b/server/build.gradle index cb516d599922..a902ff3a2ae1 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -9,7 +9,6 @@ import org.elasticsearch.gradle.internal.info.BuildParams */ apply plugin: 'elasticsearch.build' -apply plugin: 'nebula.optional-base' apply plugin: 'elasticsearch.publish' apply plugin: 'elasticsearch.internal-cluster-test' @@ -21,7 +20,9 @@ publishing { } } -archivesBaseName = 'elasticsearch' +base { + archivesName = 'elasticsearch' +} // we want to keep the JDKs in our IDEs set to JDK 8 until minimum JDK is bumped to 11 so we do not include this source set in our IDEs if (!isEclipse) { @@ -102,7 +103,7 @@ dependencies { // logging api "org.apache.logging.log4j:log4j-api:${versions.log4j}" - api "org.apache.logging.log4j:log4j-core:${versions.log4j}", optional + api "org.apache.logging.log4j:log4j-core:${versions.log4j}" api "net.java.dev.jna:jna:${versions.jna}" diff --git a/test/test-clusters/build.gradle b/test/test-clusters/build.gradle index d88974f61f52..57bed37effee 100644 --- a/test/test-clusters/build.gradle +++ b/test/test-clusters/build.gradle @@ -11,8 +11,10 @@ dependencies { } // We use updated APIs here and since this project is only used for REST testing it's ok to run with > Java 8 -sourceCompatibility = 17 -targetCompatibility = 17 +java { + sourceCompatibility = 17 + targetCompatibility = 17 +} tasks.named("processResources").configure { from(new File(rootDir, "build-tools-internal/version.properties")) diff --git a/x-pack/plugin/analytics/build.gradle b/x-pack/plugin/analytics/build.gradle index 4318333698e7..98ae09c9a8ee 100644 --- a/x-pack/plugin/analytics/build.gradle +++ b/x-pack/plugin/analytics/build.gradle @@ -7,7 +7,9 @@ esplugin { classname 'org.elasticsearch.xpack.analytics.AnalyticsPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-analytics' +base { + archivesName = 'x-pack-analytics' +} dependencies { api 'org.apache.commons:commons-math3:3.6.1' diff --git a/x-pack/plugin/async-search/build.gradle b/x-pack/plugin/async-search/build.gradle index 134cdd0f9274..034f19bf8a28 100644 --- a/x-pack/plugin/async-search/build.gradle +++ b/x-pack/plugin/async-search/build.gradle @@ -6,7 +6,9 @@ esplugin { classname 'org.elasticsearch.xpack.search.AsyncSearch' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-async-search' +base { + archivesName = 'x-pack-async-search' +} addQaCheckDependencies() diff --git a/x-pack/plugin/async/build.gradle b/x-pack/plugin/async/build.gradle index e3ca21c257a4..36f1c6dea9b9 100644 --- a/x-pack/plugin/async/build.gradle +++ b/x-pack/plugin/async/build.gradle @@ -6,7 +6,9 @@ esplugin { classname 'org.elasticsearch.xpack.async.AsyncResultsIndexPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-async' +base { + archivesName = 'x-pack-async' +} dependencies { compileOnly project(":server") diff --git a/x-pack/plugin/autoscaling/build.gradle b/x-pack/plugin/autoscaling/build.gradle index 4b6b91f4a0f4..2bc881ab8750 100644 --- a/x-pack/plugin/autoscaling/build.gradle +++ b/x-pack/plugin/autoscaling/build.gradle @@ -9,7 +9,9 @@ esplugin { hasNativeController false requiresKeystore true } -archivesBaseName = 'x-pack-autoscaling' +base { + archivesName = 'x-pack-autoscaling' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/build.gradle b/x-pack/plugin/build.gradle index 9016ad33fc68..f770421b9749 100644 --- a/x-pack/plugin/build.gradle +++ b/x-pack/plugin/build.gradle @@ -9,7 +9,9 @@ apply plugin: 'elasticsearch.legacy-yaml-rest-test' apply plugin: 'elasticsearch.validate-rest-spec' apply plugin: 'elasticsearch.internal-test-artifact' -archivesBaseName = 'x-pack' +base { + archivesName = 'x-pack' +} dependencies { testImplementation(testArtifact(project(xpackModule('core')))) diff --git a/x-pack/plugin/ccr/build.gradle b/x-pack/plugin/ccr/build.gradle index 0ca9c1024913..9d028552d488 100644 --- a/x-pack/plugin/ccr/build.gradle +++ b/x-pack/plugin/ccr/build.gradle @@ -8,7 +8,9 @@ esplugin { requiresKeystore true extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-ccr' +base { + archivesName = 'x-pack-ccr' +} // Integration Test classes that cannot run with the security manager String[] noSecurityManagerITClasses = ["**/CloseFollowerIndexIT.class"] diff --git a/x-pack/plugin/core/build.gradle b/x-pack/plugin/core/build.gradle index 88394d4812e9..12c805750b34 100644 --- a/x-pack/plugin/core/build.gradle +++ b/x-pack/plugin/core/build.gradle @@ -10,7 +10,9 @@ apply plugin: 'elasticsearch.internal-cluster-test' apply plugin: 'elasticsearch.legacy-yaml-rest-test' apply plugin: 'elasticsearch.internal-test-artifact' -archivesBaseName = 'x-pack-core' +base { + archivesName = 'x-pack-core' +} esplugin { name 'x-pack-core' diff --git a/x-pack/plugin/data-streams/build.gradle b/x-pack/plugin/data-streams/build.gradle index b1ceab4f4bde..e4e15107a1a4 100644 --- a/x-pack/plugin/data-streams/build.gradle +++ b/x-pack/plugin/data-streams/build.gradle @@ -6,7 +6,9 @@ esplugin { classname 'org.elasticsearch.xpack.datastreams.DataStreamsPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-data-streams' +base { + archivesName = 'x-pack-data-streams' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/deprecation/build.gradle b/x-pack/plugin/deprecation/build.gradle index 0c1e8fd68033..56bf7fb5d5cc 100644 --- a/x-pack/plugin/deprecation/build.gradle +++ b/x-pack/plugin/deprecation/build.gradle @@ -6,7 +6,9 @@ esplugin { classname 'org.elasticsearch.xpack.deprecation.Deprecation' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-deprecation' +base { + archivesName = 'x-pack-deprecation' +} addQaCheckDependencies() diff --git a/x-pack/plugin/enrich/build.gradle b/x-pack/plugin/enrich/build.gradle index 25de96e7e3d6..8f73db4cf459 100644 --- a/x-pack/plugin/enrich/build.gradle +++ b/x-pack/plugin/enrich/build.gradle @@ -6,7 +6,9 @@ esplugin { classname 'org.elasticsearch.xpack.enrich.EnrichPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-enrich' +base { + archivesName = 'x-pack-enrich' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/eql/build.gradle b/x-pack/plugin/eql/build.gradle index 03f7671d5abd..4e03920696eb 100644 --- a/x-pack/plugin/eql/build.gradle +++ b/x-pack/plugin/eql/build.gradle @@ -12,8 +12,9 @@ ext { // EQL dependency versions antlrVersion = "4.9.2" } - -archivesBaseName = 'x-pack-eql' +base { + archivesName = 'x-pack-eql' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/frozen-indices/build.gradle b/x-pack/plugin/frozen-indices/build.gradle index 169b02584f5f..d4423f9df274 100644 --- a/x-pack/plugin/frozen-indices/build.gradle +++ b/x-pack/plugin/frozen-indices/build.gradle @@ -6,7 +6,9 @@ esplugin { classname 'org.elasticsearch.xpack.frozen.FrozenIndices' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-frozen-indices' +base { + archivesName = 'x-pack-frozen-indices' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/graph/build.gradle b/x-pack/plugin/graph/build.gradle index 839bb68c6a4b..e33e0b950f55 100644 --- a/x-pack/plugin/graph/build.gradle +++ b/x-pack/plugin/graph/build.gradle @@ -6,7 +6,9 @@ esplugin { classname 'org.elasticsearch.xpack.graph.Graph' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-graph' +base { + archivesName = 'x-pack-graph' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/identity-provider/build.gradle b/x-pack/plugin/identity-provider/build.gradle index d302891aa7c9..b3ecff4659d8 100644 --- a/x-pack/plugin/identity-provider/build.gradle +++ b/x-pack/plugin/identity-provider/build.gradle @@ -9,7 +9,9 @@ esplugin { extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-identity-provider' +base { + archivesName = 'x-pack-identity-provider' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/ilm/build.gradle b/x-pack/plugin/ilm/build.gradle index b88085065792..7825a70a4838 100644 --- a/x-pack/plugin/ilm/build.gradle +++ b/x-pack/plugin/ilm/build.gradle @@ -9,7 +9,9 @@ esplugin { hasNativeController false requiresKeystore true } -archivesBaseName = 'x-pack-ilm' +base { + archivesName = 'x-pack-ilm' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/logstash/build.gradle b/x-pack/plugin/logstash/build.gradle index 9fc7e642820e..98dcdda42553 100644 --- a/x-pack/plugin/logstash/build.gradle +++ b/x-pack/plugin/logstash/build.gradle @@ -8,7 +8,9 @@ esplugin { extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-logstash' +base { + archivesName = 'x-pack-logstash' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/mapper-aggregate-metric/build.gradle b/x-pack/plugin/mapper-aggregate-metric/build.gradle index 6dfe2d5049ce..6210b9f4cf34 100644 --- a/x-pack/plugin/mapper-aggregate-metric/build.gradle +++ b/x-pack/plugin/mapper-aggregate-metric/build.gradle @@ -15,7 +15,9 @@ esplugin { classname 'org.elasticsearch.xpack.aggregatemetric.AggregateMetricMapperPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-aggregate-metric' +base { + archivesName = 'x-pack-aggregate-metric' +} dependencies { compileOnly project(":server") diff --git a/x-pack/plugin/mapper-constant-keyword/build.gradle b/x-pack/plugin/mapper-constant-keyword/build.gradle index 984e69a772bb..95ad16f8405e 100644 --- a/x-pack/plugin/mapper-constant-keyword/build.gradle +++ b/x-pack/plugin/mapper-constant-keyword/build.gradle @@ -7,7 +7,9 @@ esplugin { classname 'org.elasticsearch.xpack.constantkeyword.ConstantKeywordMapperPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-constant-keyword' +base { + archivesName = 'x-pack-constant-keyword' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/mapper-unsigned-long/build.gradle b/x-pack/plugin/mapper-unsigned-long/build.gradle index 488dde9bffcc..f2f2cbd74c3c 100644 --- a/x-pack/plugin/mapper-unsigned-long/build.gradle +++ b/x-pack/plugin/mapper-unsigned-long/build.gradle @@ -16,7 +16,9 @@ esplugin { classname 'org.elasticsearch.xpack.unsignedlong.UnsignedLongMapperPlugin' extendedPlugins = ['x-pack-core', 'lang-painless'] } -archivesBaseName = 'x-pack-unsigned-long' +base { + archivesName = 'x-pack-unsigned-long' +} dependencies { compileOnly project(':modules:lang-painless:spi') diff --git a/x-pack/plugin/mapper-version/build.gradle b/x-pack/plugin/mapper-version/build.gradle index 557d43c0d9f1..eae6cd73268f 100644 --- a/x-pack/plugin/mapper-version/build.gradle +++ b/x-pack/plugin/mapper-version/build.gradle @@ -9,7 +9,9 @@ esplugin { classname 'org.elasticsearch.xpack.versionfield.VersionFieldPlugin' extendedPlugins = ['x-pack-core', 'lang-painless'] } -archivesBaseName = 'x-pack-mapper-version' +base { + archivesName = 'x-pack-mapper-version' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/monitoring/build.gradle b/x-pack/plugin/monitoring/build.gradle index dd967731bcf8..6c2bc2470da5 100644 --- a/x-pack/plugin/monitoring/build.gradle +++ b/x-pack/plugin/monitoring/build.gradle @@ -8,7 +8,9 @@ esplugin { classname 'org.elasticsearch.xpack.monitoring.Monitoring' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-monitoring' +base { + archivesName = 'x-pack-monitoring' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/ql/build.gradle b/x-pack/plugin/ql/build.gradle index 81ef6a52be28..9fa4063432d0 100644 --- a/x-pack/plugin/ql/build.gradle +++ b/x-pack/plugin/ql/build.gradle @@ -11,8 +11,9 @@ esplugin { ext { antlrVersion = "4.9.2" } - -archivesBaseName = 'x-pack-ql' +base { + archivesName = 'x-pack-ql' +} dependencies { api "org.antlr:antlr4-runtime:${antlrVersion}" diff --git a/x-pack/plugin/repositories-metering-api/build.gradle b/x-pack/plugin/repositories-metering-api/build.gradle index d258391662e3..ea9a888c56a9 100644 --- a/x-pack/plugin/repositories-metering-api/build.gradle +++ b/x-pack/plugin/repositories-metering-api/build.gradle @@ -7,7 +7,9 @@ esplugin { classname 'org.elasticsearch.xpack.repositories.metering.RepositoriesMeteringPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-repositories-metering-api' +base { + archivesName = 'x-pack-repositories-metering-api' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/repository-encrypted/build.gradle b/x-pack/plugin/repository-encrypted/build.gradle index 4baadec11bfd..2bf2139be602 100644 --- a/x-pack/plugin/repository-encrypted/build.gradle +++ b/x-pack/plugin/repository-encrypted/build.gradle @@ -8,7 +8,10 @@ esplugin { classname 'org.elasticsearch.repositories.encrypted.EncryptedRepositoryPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-repository-encrypted' + +base { + archivesName = 'x-pack-repository-encrypted' +} dependencies { // necessary for the license check diff --git a/x-pack/plugin/rollup/build.gradle b/x-pack/plugin/rollup/build.gradle index f825239e4c6e..c25b73b5d5be 100644 --- a/x-pack/plugin/rollup/build.gradle +++ b/x-pack/plugin/rollup/build.gradle @@ -8,7 +8,9 @@ esplugin { extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-rollup' +base { + archivesName = 'x-pack-rollup' +} dependencies { compileOnly project(":server") diff --git a/x-pack/plugin/search-business-rules/build.gradle b/x-pack/plugin/search-business-rules/build.gradle index 31c83d675f3f..11e1207f7f3c 100644 --- a/x-pack/plugin/search-business-rules/build.gradle +++ b/x-pack/plugin/search-business-rules/build.gradle @@ -7,7 +7,9 @@ esplugin { classname 'org.elasticsearch.xpack.searchbusinessrules.SearchBusinessRules' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-searchbusinessrules' +base { + archivesName = 'x-pack-searchbusinessrules' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/searchable-snapshots/build.gradle b/x-pack/plugin/searchable-snapshots/build.gradle index 03b30ea44b17..3f6786e8af23 100644 --- a/x-pack/plugin/searchable-snapshots/build.gradle +++ b/x-pack/plugin/searchable-snapshots/build.gradle @@ -8,7 +8,10 @@ esplugin { classname 'org.elasticsearch.xpack.searchablesnapshots.SearchableSnapshots' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-searchable-snapshots' + +base { + archivesName = 'x-pack-searchable-snapshots' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/searchable-snapshots/preallocate/build.gradle b/x-pack/plugin/searchable-snapshots/preallocate/build.gradle index 6a6ceb8b5069..c7a60de15048 100644 --- a/x-pack/plugin/searchable-snapshots/preallocate/build.gradle +++ b/x-pack/plugin/searchable-snapshots/preallocate/build.gradle @@ -7,7 +7,9 @@ apply plugin: 'elasticsearch.build' -archivesBaseName = 'preallocate' +base { + archivesName = 'preallocate' +} dependencies { compileOnly project(":server") diff --git a/x-pack/plugin/security/build.gradle b/x-pack/plugin/security/build.gradle index 6aedc23da77f..431a64dd98a8 100644 --- a/x-pack/plugin/security/build.gradle +++ b/x-pack/plugin/security/build.gradle @@ -13,7 +13,9 @@ esplugin { extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-security' +base { + archivesName = 'x-pack-security' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/security/cli/build.gradle b/x-pack/plugin/security/cli/build.gradle index 378b950f4296..31350b586f77 100644 --- a/x-pack/plugin/security/cli/build.gradle +++ b/x-pack/plugin/security/cli/build.gradle @@ -3,7 +3,9 @@ import org.elasticsearch.gradle.internal.info.BuildParams apply plugin: 'elasticsearch.build' -archivesBaseName = 'elasticsearch-security-cli' +base { + archivesName = 'elasticsearch-security-cli' +} dependencies { compileOnly project(":server") diff --git a/x-pack/plugin/shutdown/build.gradle b/x-pack/plugin/shutdown/build.gradle index bcc2cb55a921..2b52759a4fe6 100644 --- a/x-pack/plugin/shutdown/build.gradle +++ b/x-pack/plugin/shutdown/build.gradle @@ -9,7 +9,9 @@ esplugin { classname 'org.elasticsearch.xpack.shutdown.ShutdownPlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-shutdown' +base { + archivesName = 'x-pack-shutdown' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/snapshot-repo-test-kit/build.gradle b/x-pack/plugin/snapshot-repo-test-kit/build.gradle index a19a05024e61..2ccde0e7f3b4 100644 --- a/x-pack/plugin/snapshot-repo-test-kit/build.gradle +++ b/x-pack/plugin/snapshot-repo-test-kit/build.gradle @@ -8,7 +8,9 @@ esplugin { classname 'org.elasticsearch.repositories.blobstore.testkit.SnapshotRepositoryTestKit' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-snapshot-repo-test-kit' +base { + archivesName = 'x-pack-snapshot-repo-test-kit' +} dependencies { compileOnly project(xpackModule('core')) diff --git a/x-pack/plugin/sql/build.gradle b/x-pack/plugin/sql/build.gradle index e99ceaea0093..88b8e864cf30 100644 --- a/x-pack/plugin/sql/build.gradle +++ b/x-pack/plugin/sql/build.gradle @@ -4,9 +4,9 @@ apply plugin: 'elasticsearch.internal-cluster-test' import org.elasticsearch.gradle.internal.info.BuildParams esplugin { - name 'x-pack-sql' + name = 'x-pack-sql' description 'The Elasticsearch plugin that powers SQL for Elasticsearch' - classname 'org.elasticsearch.xpack.sql.plugin.SqlPlugin' + classname = 'org.elasticsearch.xpack.sql.plugin.SqlPlugin' extendedPlugins = ['x-pack-ql', 'lang-painless'] } @@ -26,7 +26,9 @@ configurations { bin } -archivesBaseName = 'x-pack-sql' +base { + archivesName = 'x-pack-sql' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/sql/jdbc/build.gradle b/x-pack/plugin/sql/jdbc/build.gradle index 51837b3e9d8f..154e7f80a34f 100644 --- a/x-pack/plugin/sql/jdbc/build.gradle +++ b/x-pack/plugin/sql/jdbc/build.gradle @@ -3,7 +3,10 @@ apply plugin: 'elasticsearch.publish' apply plugin: 'com.github.johnrengelman.shadow' description = 'JDBC driver for Elasticsearch' -archivesBaseName = "x-pack-sql-jdbc" + +base { + archivesName = "x-pack-sql-jdbc" +} tasks.named('forbiddenApisMain').configure { // does not depend on core, so only jdk and http signatures should be checked diff --git a/x-pack/plugin/sql/qa/jdbc/security/build.gradle b/x-pack/plugin/sql/qa/jdbc/security/build.gradle index 75dced322e39..3c6c2a15c1c8 100644 --- a/x-pack/plugin/sql/qa/jdbc/security/build.gradle +++ b/x-pack/plugin/sql/qa/jdbc/security/build.gradle @@ -44,7 +44,7 @@ subprojects { tasks.withType(RestIntegTestTask).configureEach { dependsOn copyTestClasses - classpath = configurations.testArtifacts + classpath += configurations.testArtifacts testClassesDirs = project.files(testArtifactsDir) nonInputProperties.systemProperty 'tests.audit.logfile', "${-> testClusters.javaRestTest.singleNode().getAuditLog()}" diff --git a/x-pack/plugin/sql/sql-cli/build.gradle b/x-pack/plugin/sql/sql-cli/build.gradle index 99a14091be5d..3ef764adcc29 100644 --- a/x-pack/plugin/sql/sql-cli/build.gradle +++ b/x-pack/plugin/sql/sql-cli/build.gradle @@ -12,7 +12,9 @@ apply plugin: 'com.github.johnrengelman.shadow' /* We don't use the 'application' plugin because it builds a zip and tgz which * we don't want. */ -archivesBaseName = 'elasticsearch-sql-cli' +base { + archivesName = 'elasticsearch-sql-cli' +} description = 'Command line interface to Elasticsearch that speaks SQL' diff --git a/x-pack/plugin/stack/build.gradle b/x-pack/plugin/stack/build.gradle index f40b2987afb2..20d387121474 100644 --- a/x-pack/plugin/stack/build.gradle +++ b/x-pack/plugin/stack/build.gradle @@ -8,10 +8,12 @@ esplugin { hasNativeController false requiresKeystore true } -archivesBaseName = 'x-pack-stack' +base { + archivesName = 'x-pack-stack' +} dependencies { compileOnly project(path: xpackModule('core')) testImplementation(testArtifact(project(xpackModule('core'))))} -addQaCheckDependencies() \ No newline at end of file +addQaCheckDependencies(project) \ No newline at end of file diff --git a/x-pack/plugin/text-structure/build.gradle b/x-pack/plugin/text-structure/build.gradle index 09404d5a9ca2..cab7f3ceeaa1 100644 --- a/x-pack/plugin/text-structure/build.gradle +++ b/x-pack/plugin/text-structure/build.gradle @@ -5,7 +5,9 @@ esplugin { classname 'org.elasticsearch.xpack.textstructure.TextStructurePlugin' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-text-structure' +base { + archivesName = 'x-pack-text-structure' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/plugin/vectors/build.gradle b/x-pack/plugin/vectors/build.gradle index 0ddb327f6e50..91d800278617 100644 --- a/x-pack/plugin/vectors/build.gradle +++ b/x-pack/plugin/vectors/build.gradle @@ -6,7 +6,10 @@ esplugin { classname 'org.elasticsearch.xpack.vectors.DenseVectorPlugin' extendedPlugins = ['x-pack-core', 'lang-painless'] } -archivesBaseName = 'x-pack-vectors' + +base { + archivesName = 'x-pack-vectors' +} dependencies { compileOnly project(':modules:lang-painless:spi') diff --git a/x-pack/plugin/watcher/build.gradle b/x-pack/plugin/watcher/build.gradle index 62a258345176..c7ae0ac2562b 100644 --- a/x-pack/plugin/watcher/build.gradle +++ b/x-pack/plugin/watcher/build.gradle @@ -12,7 +12,9 @@ esplugin { extendedPlugins = ['x-pack-core', 'lang-painless'] } -archivesBaseName = 'x-pack-watcher' +base { + archivesName = 'x-pack-watcher' +} ext.compactProfile = 'full' diff --git a/x-pack/plugin/wildcard/build.gradle b/x-pack/plugin/wildcard/build.gradle index 2c7c1d877d20..d1ecade26ce2 100644 --- a/x-pack/plugin/wildcard/build.gradle +++ b/x-pack/plugin/wildcard/build.gradle @@ -6,7 +6,10 @@ esplugin { classname 'org.elasticsearch.xpack.wildcard.Wildcard' extendedPlugins = ['x-pack-core'] } -archivesBaseName = 'x-pack-wildcard' + +base { + archivesName = 'x-pack-wildcard' +} dependencies { compileOnly project(path: xpackModule('core')) diff --git a/x-pack/snapshot-tool/qa/google-cloud-storage/build.gradle b/x-pack/snapshot-tool/qa/google-cloud-storage/build.gradle index 1a3e7202e30e..60e7ef5c5d89 100644 --- a/x-pack/snapshot-tool/qa/google-cloud-storage/build.gradle +++ b/x-pack/snapshot-tool/qa/google-cloud-storage/build.gradle @@ -47,10 +47,11 @@ def encodedCredentials = { def gcsThirdPartyTest = tasks.register("gcsThirdPartyTest", Test) { include '**/GCSCleanupTests.class' - systemProperty 'tests.security.manager', false - systemProperty 'test.google.bucket', gcsBucket + classpath = sourceSets.test.runtimeClasspath + testClassesDirs = sourceSets.test.output.classesDirs + nonInputProperties.systemProperty 'test.google.base', gcsBasePath ? gcsBasePath + "_snapshot_tool_tests" + BuildParams.testSeed : 'base_path' nonInputProperties.systemProperty 'test.google.account', "${-> encodedCredentials.call()}" } diff --git a/x-pack/snapshot-tool/qa/s3/build.gradle b/x-pack/snapshot-tool/qa/s3/build.gradle index 54dc4f9361c3..85c43e5010b3 100644 --- a/x-pack/snapshot-tool/qa/s3/build.gradle +++ b/x-pack/snapshot-tool/qa/s3/build.gradle @@ -44,6 +44,8 @@ def s3ThirdPartyTest = tasks.register("s3ThirdPartyTest", Test) { systemProperty 'test.s3.account', s3PermanentAccessKey systemProperty 'test.s3.key', s3PermanentSecretKey systemProperty 'test.s3.bucket', s3PermanentBucket + classpath = sourceSets.test.runtimeClasspath + testClassesDirs = sourceSets.test.output.classesDirs nonInputProperties.systemProperty 'test.s3.base', s3PermanentBasePath ? s3PermanentBasePath + "_snapshot_tool_tests" + BuildParams.testSeed : 'base_path' } diff --git a/x-pack/transport-client/build.gradle b/x-pack/transport-client/build.gradle index b0c9cecd5018..e209e00404ce 100644 --- a/x-pack/transport-client/build.gradle +++ b/x-pack/transport-client/build.gradle @@ -1,6 +1,9 @@ apply plugin: 'elasticsearch.build' group = 'org.elasticsearch.client' -archivesBaseName = 'x-pack-transport' + +base { + archivesName = 'x-pack-transport' +} dependencies { // this "api" dependency looks weird, but it is correct, as it contains