From 7edc9ebc2875a7fedf43ab69bf04590eb17daee7 Mon Sep 17 00:00:00 2001 From: Fouad Almalki Date: Tue, 12 Sep 2023 06:40:59 +0300 Subject: [PATCH] Lazily query attributes when copying from base configuration See gh-37343 --- .../boot/gradle/plugin/SpringBootAotPlugin.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java index 00ba721849..3c55e245c0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java @@ -35,6 +35,7 @@ import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.plugins.PluginContainer; import org.gradle.api.provider.Provider; +import org.gradle.api.provider.ProviderFactory; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskProvider; @@ -152,6 +153,7 @@ public class SpringBootAotPlugin implements Plugin { @SuppressWarnings("unchecked") private Configuration createAotProcessingClasspath(Project project, String taskName, SourceSet inputSourceSet) { + ProviderFactory providers = project.getProviders(); Configuration base = project.getConfigurations() .getByName(inputSourceSet.getRuntimeClasspathConfigurationName()); Configuration aotClasspath = project.getConfigurations().create(taskName + "Classpath", (classpath) -> { @@ -162,7 +164,8 @@ public class SpringBootAotPlugin implements Plugin { classpath.attributes((attributes) -> { AttributeContainer baseAttributes = base.getAttributes(); for (Attribute attribute : baseAttributes.keySet()) { - attributes.attribute((Attribute) attribute, baseAttributes.getAttribute(attribute)); + Attribute attr = (Attribute) attribute; + attributes.attributeProvider(attr, providers.provider(() -> baseAttributes.getAttribute(attr))); } }); });