Browse Source

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
pull/46604/head
Phillip Webb 5 months ago
parent
commit
1ed1757ba3
  1. 11
      buildSrc/src/main/java/org/springframework/boot/build/EclipseConventions.java

11
buildSrc/src/main/java/org/springframework/boot/build/EclipseConventions.java

@ -17,6 +17,7 @@ @@ -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; @@ -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) {

Loading…
Cancel
Save