From 1ed1757ba3decf89f562bb430b1dd647900e5afd Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 8 Jul 2025 13:09:56 -0700 Subject: [PATCH] Ensure eclipse classpath excludes binary output folders Update `EclipseConventions` so that classpath `whenMerged` changes are applied via `JavaBasePlugin`. Without this change, the `whenMerged` item is added, but then`EclipsePlugin.configureEclipseClasspath` is called from a `project.getPlugins().withType(JavaBasePlugin.class, ...` call. Using a nested call appears to fix the issue, probably because it now runs after `configureEclipseClasspath`. Closes gh-46319 --- .../boot/build/EclipseConventions.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/EclipseConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/EclipseConventions.java index c65f8f5f3f8..f692b3e70f0 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/EclipseConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/EclipseConventions.java @@ -17,6 +17,7 @@ package org.springframework.boot.build; import org.gradle.api.Project; +import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.plugins.ide.api.XmlFileContentMerger; import org.gradle.plugins.ide.eclipse.EclipsePlugin; import org.gradle.plugins.ide.eclipse.model.Classpath; @@ -34,10 +35,12 @@ import org.gradle.plugins.ide.eclipse.model.Library; class EclipseConventions { void apply(Project project) { - project.getPlugins().withType(EclipsePlugin.class, (eclipse) -> { - EclipseModel eclipseModel = project.getExtensions().getByType(EclipseModel.class); - eclipseModel.classpath(this::configureClasspath); - }); + project.getPlugins() + .withType(EclipsePlugin.class, + (eclipse) -> project.getPlugins().withType(JavaBasePlugin.class, (javaBase) -> { + EclipseModel eclipseModel = project.getExtensions().getByType(EclipseModel.class); + eclipseModel.classpath(this::configureClasspath); + })); } private void configureClasspath(EclipseClasspath classpath) {