From 3248d0cd2de8357cfb48b2525159efd3ad0cb5f6 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Fri, 22 Aug 2025 22:41:00 +0200 Subject: [PATCH 1/5] [Gradle] Some tweaks to transport related build logic - We want to avoid project.allprojects - Implementing Verification task in the transport validation tasks - Allows better filtering for verification vs. other build failures. e.g. in Develocity Failures Overview - Use project.layout.settingsDirectory instead of project.rootProject.projectDir - Avoiding accessing other projects properties --- .../ProjectSubscribeBuildService.java | 33 ++++++++++++++ .../ProjectSubscribeServicePlugin.java | 44 +++++++++++++++++++ .../GenerateTransportVersionManifestTask.java | 1 - .../TransportVersionReferencesPlugin.java | 14 ++++-- .../TransportVersionResourcesPlugin.java | 32 +++++++------- ...alidateTransportVersionReferencesTask.java | 3 +- ...ValidateTransportVersionResourcesTask.java | 3 +- 7 files changed, 107 insertions(+), 23 deletions(-) create mode 100644 build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java create mode 100644 build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeServicePlugin.java diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java new file mode 100644 index 0000000000000..3ff141e0a090c --- /dev/null +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.gradle.internal; + +import org.gradle.api.Project; +import org.gradle.api.services.BuildService; +import org.gradle.api.services.BuildServiceParameters; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +public abstract class ProjectSubscribeBuildService implements BuildService { + + public static final String TRANSPORT_REFERENCES_TOPIC = "transportReferences"; + + private Map> versionsByTopic = new HashMap<>(); + + public Collection getProjectsByTopic(String topic) { + return versionsByTopic.get(topic); + } + + public void registerProjectForTopic(String topic, Project project) { + versionsByTopic.computeIfAbsent(topic, k -> new java.util.LinkedHashSet<>()).add(project.getPath()); + } +} diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeServicePlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeServicePlugin.java new file mode 100644 index 0000000000000..32ed1cf875ddf --- /dev/null +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeServicePlugin.java @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.gradle.internal; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.provider.Provider; + +/** + * This plugin registers a {@link ProjectSubscribeBuildService} to allow projects to + * communicate with each other during the configuration phase. + * + * For example, a project can register itself as a publisher of a topic, and other + * projects can resolve projects that have registered as publishers of that topic. + * + * The actual resolution of whatever data is usually done using dependency declarations. + * Be aware the state of the list depends on the order of project configuration and + * consuming on configuration phase before task graph calculation phase should be avoided. + * + * We want to avoid discouraged plugin api usage like project.allprojects or project.subprojects + * in plugins to avoid unnecessary configuration of projects and not break project isolation and break + * See https://docs.gradle.org/current/userguide/isolated_projects.html + * */ +public class ProjectSubscribeServicePlugin implements Plugin { + + private Provider publishSubscribe; + + @Override + public void apply(Project project) { + publishSubscribe = project.getGradle().getSharedServices().registerIfAbsent("publishSubscribe", ProjectSubscribeBuildService.class); + } + + public Provider getService() { + return publishSubscribe; + } + +} diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java index 153fab4723ac0..f0a0ee09cd3a2 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionManifestTask.java @@ -44,7 +44,6 @@ public Path getDefinitionsDirectory() { @TaskAction public void generateTransportVersionManifest() throws IOException { - Path definitionsDir = getDefinitionsDirectory(); Path manifestFile = getManifestFile().get().getAsFile().toPath(); try (var writer = Files.newBufferedWriter(manifestFile)) { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java index da3f056825aeb..a6a5d2d9ee54b 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java @@ -9,19 +9,27 @@ package org.elasticsearch.gradle.internal.transport; +import org.elasticsearch.gradle.internal.ProjectSubscribeServicePlugin; import org.elasticsearch.gradle.util.GradleUtils; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; import org.gradle.api.tasks.SourceSet; import org.gradle.language.base.plugins.LifecycleBasePlugin; +import static org.elasticsearch.gradle.internal.ProjectSubscribeBuildService.TRANSPORT_REFERENCES_TOPIC; + public class TransportVersionReferencesPlugin implements Plugin { @Override public void apply(Project project) { project.getPluginManager().apply(LifecycleBasePlugin.class); + project.getPlugins() + .apply(ProjectSubscribeServicePlugin.class) + .getService() + .get() + .registerProjectForTopic(TRANSPORT_REFERENCES_TOPIC, project); + var collectTask = project.getTasks() .register("collectTransportVersionReferences", CollectTransportVersionReferencesTask.class, t -> { t.setGroup("Transport Versions"); @@ -31,9 +39,7 @@ public void apply(Project project) { t.getOutputFile().set(project.getLayout().getBuildDirectory().file("transport-version/references.txt")); }); - Configuration tvReferencesConfig = project.getConfigurations().create("transportVersionReferences", c -> { - c.setCanBeConsumed(true); - c.setCanBeResolved(false); + var tvReferencesConfig = project.getConfigurations().consumable("transportVersionReferences", c -> { c.attributes(TransportVersionReference::addArtifactAttribute); }); project.getArtifacts().add(tvReferencesConfig.getName(), collectTask); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java index 4ccefdd72b72f..4b99fd586942c 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java @@ -9,10 +9,9 @@ package org.elasticsearch.gradle.internal.transport; +import org.elasticsearch.gradle.internal.ProjectSubscribeServicePlugin; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.dsl.DependencyHandler; import org.gradle.api.file.Directory; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.tasks.Copy; @@ -20,34 +19,35 @@ import java.util.Map; +import static org.elasticsearch.gradle.internal.ProjectSubscribeBuildService.TRANSPORT_REFERENCES_TOPIC; + public class TransportVersionResourcesPlugin implements Plugin { @Override public void apply(Project project) { project.getPluginManager().apply(LifecycleBasePlugin.class); - - String resourceRoot = getResourceRoot(project); + var psService = project.getPlugins().apply(ProjectSubscribeServicePlugin.class).getService(); + var resourceRoot = getResourceRoot(project); project.getGradle() .getSharedServices() .registerIfAbsent("transportVersionResources", TransportVersionResourcesService.class, spec -> { Directory transportResources = project.getLayout().getProjectDirectory().dir("src/main/resources/" + resourceRoot); spec.getParameters().getTransportResourcesDirectory().set(transportResources); - spec.getParameters().getRootDirectory().set(project.getRootProject().getRootDir()); + spec.getParameters().getRootDirectory().set(project.getLayout().getSettingsDirectory().getAsFile()); }); - DependencyHandler depsHandler = project.getDependencies(); - Configuration tvReferencesConfig = project.getConfigurations().create("globalTvReferences"); - tvReferencesConfig.setCanBeConsumed(false); - tvReferencesConfig.setCanBeResolved(true); - tvReferencesConfig.attributes(TransportVersionReference::addArtifactAttribute); - - // iterate through all projects, and if the management plugin is applied, add that project back as a dep to check - for (Project subProject : project.getRootProject().getSubprojects()) { - subProject.getPlugins().withType(TransportVersionReferencesPlugin.class).configureEach(plugin -> { - tvReferencesConfig.getDependencies().add(depsHandler.project(Map.of("path", subProject.getPath()))); + var depsHandler = project.getDependencies(); + var tvReferencesConfig = project.getConfigurations().create("globalTvReferences", c -> { + c.setCanBeConsumed(false); + c.setCanBeResolved(true); + c.attributes(TransportVersionReference::addArtifactAttribute); + c.defaultDependencies(t -> { + psService.get() + .getProjectsByTopic(TRANSPORT_REFERENCES_TOPIC) + .forEach(p -> { t.add(depsHandler.project(Map.of("path", p))); }); }); - } + }); var validateTask = project.getTasks() .register("validateTransportVersionResources", ValidateTransportVersionResourcesTask.class, t -> { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java index d72a4f097218e..d0691fc0479b7 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java @@ -20,6 +20,7 @@ import org.gradle.api.tasks.PathSensitive; import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; +import org.gradle.api.tasks.VerificationTask; import java.io.IOException; import java.nio.file.Path; @@ -28,7 +29,7 @@ * Validates that each transport version reference has a referable definition. */ @CacheableTask -public abstract class ValidateTransportVersionReferencesTask extends DefaultTask { +public abstract class ValidateTransportVersionReferencesTask extends DefaultTask implements VerificationTask { @ServiceReference("transportVersionResources") abstract Property getTransportResources(); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java index 44e9bde8352f2..d059f17a32c0e 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java @@ -22,6 +22,7 @@ import org.gradle.api.tasks.PathSensitive; import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; +import org.gradle.api.tasks.VerificationTask; import java.io.IOException; import java.nio.file.Path; @@ -38,7 +39,7 @@ * Validates that each defined transport version constant is referenced by at least one project. */ @CacheableTask -public abstract class ValidateTransportVersionResourcesTask extends DefaultTask { +public abstract class ValidateTransportVersionResourcesTask extends DefaultTask implements VerificationTask { @InputDirectory @Optional From 86fc83b683058afa616e4a287fff897718f67646 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Wed, 27 Aug 2025 10:21:16 +0200 Subject: [PATCH 2/5] Address some review feedback --- .../internal/ProjectSubscribeBuildService.java | 14 ++++++++++++-- .../transport/TransportVersionResourcesPlugin.java | 3 ++- .../ValidateTransportVersionReferencesTask.java | 3 ++- .../ValidateTransportVersionResourcesTask.java | 5 +++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java index 3ff141e0a090c..622e4aed3f329 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java @@ -10,6 +10,8 @@ package org.elasticsearch.gradle.internal; import org.gradle.api.Project; +import org.gradle.api.provider.Provider; +import org.gradle.api.provider.ProviderFactory; import org.gradle.api.services.BuildService; import org.gradle.api.services.BuildServiceParameters; @@ -17,14 +19,22 @@ import java.util.HashMap; import java.util.Map; +import javax.inject.Inject; + public abstract class ProjectSubscribeBuildService implements BuildService { public static final String TRANSPORT_REFERENCES_TOPIC = "transportReferences"; + private final ProviderFactory providerFactory; private Map> versionsByTopic = new HashMap<>(); - public Collection getProjectsByTopic(String topic) { - return versionsByTopic.get(topic); + @Inject + public ProjectSubscribeBuildService(ProviderFactory providerFactory) { + this.providerFactory = providerFactory; + } + + public Provider> getProjectsByTopic(String topic) { + return providerFactory.provider(() -> versionsByTopic.computeIfAbsent(topic, k -> new java.util.LinkedHashSet<>())); } public void registerProjectForTopic(String topic, Project project) { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java index 4b99fd586942c..49665c01742cd 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java @@ -45,7 +45,8 @@ public void apply(Project project) { c.defaultDependencies(t -> { psService.get() .getProjectsByTopic(TRANSPORT_REFERENCES_TOPIC) - .forEach(p -> { t.add(depsHandler.project(Map.of("path", p))); }); + .get() + .forEach(path -> t.add(depsHandler.project(Map.of("path", path)))); }); }); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java index d0691fc0479b7..6f7319bd4bcc6 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionReferencesTask.java @@ -20,6 +20,7 @@ import org.gradle.api.tasks.PathSensitive; import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; +import org.gradle.api.tasks.VerificationException; import org.gradle.api.tasks.VerificationTask; import java.io.IOException; @@ -52,7 +53,7 @@ public void validateTransportVersions() throws IOException { for (var tvReference : TransportVersionReference.listFromFile(namesFile)) { if (resources.referableDefinitionExists(tvReference.name()) == false) { - throw new RuntimeException( + throw new VerificationException( "TransportVersion.fromName(\"" + tvReference.name() + "\") was used at " diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java index d059f17a32c0e..f2cfa35966277 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/ValidateTransportVersionResourcesTask.java @@ -22,6 +22,7 @@ import org.gradle.api.tasks.PathSensitive; import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; +import org.gradle.api.tasks.VerificationException; import org.gradle.api.tasks.VerificationTask; import java.io.IOException; @@ -256,11 +257,11 @@ private void validateBase(int base, List ids) { private void throwDefinitionFailure(TransportVersionDefinition definition, String message) { Path relativePath = getResources().get().getReferableDefinitionRepositoryPath(definition); - throw new IllegalStateException("Transport version definition file [" + relativePath + "] " + message); + throw new VerificationException("Transport version definition file [" + relativePath + "] " + message); } private void throwUpperBoundFailure(TransportVersionUpperBound upperBound, String message) { Path relativePath = getResources().get().getUpperBoundRepositoryPath(upperBound); - throw new IllegalStateException("Transport version upper bound file [" + relativePath + "] " + message); + throw new VerificationException("Transport version upper bound file [" + relativePath + "] " + message); } } From 9861447a5c8584e8af34188a2f0564e4e19a9490 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Wed, 27 Aug 2025 15:54:04 +0200 Subject: [PATCH 3/5] Rework mapping project path list to dependencies --- .../transport/TransportVersionResourcesPlugin.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java index 49665c01742cd..6ef991d6f2476 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java @@ -42,12 +42,11 @@ public void apply(Project project) { c.setCanBeConsumed(false); c.setCanBeResolved(true); c.attributes(TransportVersionReference::addArtifactAttribute); - c.defaultDependencies(t -> { - psService.get() - .getProjectsByTopic(TRANSPORT_REFERENCES_TOPIC) - .get() - .forEach(path -> t.add(depsHandler.project(Map.of("path", path)))); - }); + c.getDependencies() + .addAllLater( + psService.flatMap(t -> t.getProjectsByTopic(TRANSPORT_REFERENCES_TOPIC)) + .map(projectPaths -> projectPaths.stream().map(path -> depsHandler.project(Map.of("path", path))).toList()) + ); }); var validateTask = project.getTasks() From 066f879724d96b1f8b3e26f7651e14188f4f97ed Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Wed, 27 Aug 2025 16:18:24 +0200 Subject: [PATCH 4/5] Some more review feedback --- .../gradle/internal/ProjectSubscribeBuildService.java | 10 +++++++++- .../transport/TransportVersionReferencesPlugin.java | 2 +- .../transport/TransportVersionResourcesPlugin.java | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java index 622e4aed3f329..a0ff1774fe0af 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java @@ -23,9 +23,14 @@ public abstract class ProjectSubscribeBuildService implements BuildService { - public static final String TRANSPORT_REFERENCES_TOPIC = "transportReferences"; private final ProviderFactory providerFactory; + /** + * The filling of this map depends on the order of #registerProjectForTopic being called. + * This is usually done during configuration phase, but we do not enforce yet the time of this method call. + * The values are LinkedHashSet to preserve the order of registration mostly to provide a predicatable order + * when running consecutive builds. + * */ private Map> versionsByTopic = new HashMap<>(); @Inject @@ -33,6 +38,9 @@ public ProjectSubscribeBuildService(ProviderFactory providerFactory) { this.providerFactory = providerFactory; } + /** + * Returning a provider so the evaluation of the map value is deferred to when the provider is queried. + * */ public Provider> getProjectsByTopic(String topic) { return providerFactory.provider(() -> versionsByTopic.computeIfAbsent(topic, k -> new java.util.LinkedHashSet<>())); } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java index a6a5d2d9ee54b..5ee561764b5a4 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionReferencesPlugin.java @@ -16,7 +16,7 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.language.base.plugins.LifecycleBasePlugin; -import static org.elasticsearch.gradle.internal.ProjectSubscribeBuildService.TRANSPORT_REFERENCES_TOPIC; +import static org.elasticsearch.gradle.internal.transport.TransportVersionResourcesPlugin.TRANSPORT_REFERENCES_TOPIC; public class TransportVersionReferencesPlugin implements Plugin { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java index 6ef991d6f2476..67c83a9adcef7 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java @@ -19,10 +19,10 @@ import java.util.Map; -import static org.elasticsearch.gradle.internal.ProjectSubscribeBuildService.TRANSPORT_REFERENCES_TOPIC; - public class TransportVersionResourcesPlugin implements Plugin { + public static final String TRANSPORT_REFERENCES_TOPIC = "transportReferences"; + @Override public void apply(Project project) { project.getPluginManager().apply(LifecycleBasePlugin.class); From 8c06add4a8e497a7242430aae8d21293c81d21a4 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Wed, 27 Aug 2025 18:32:44 +0200 Subject: [PATCH 5/5] Minor tweak after review feedback --- .../gradle/internal/ProjectSubscribeBuildService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java index a0ff1774fe0af..d9daf8e9d91b0 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ProjectSubscribeBuildService.java @@ -31,7 +31,7 @@ public abstract class ProjectSubscribeBuildService implements BuildService> versionsByTopic = new HashMap<>(); + private final Map> versionsByTopic = new HashMap<>(); @Inject public ProjectSubscribeBuildService(ProviderFactory providerFactory) {