Lazily query attributes when copying from base configuration

See gh-37343
This commit is contained in:
Fouad Almalki 2023-09-12 06:40:59 +03:00 committed by Andy Wilkinson
parent 3eb89343d0
commit 7edc9ebc28

View File

@ -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<Project> {
@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<Project> {
classpath.attributes((attributes) -> {
AttributeContainer baseAttributes = base.getAttributes();
for (Attribute<?> attribute : baseAttributes.keySet()) {
attributes.attribute((Attribute<Object>) attribute, baseAttributes.getAttribute(attribute));
Attribute<Object> attr = (Attribute<Object>) attribute;
attributes.attributeProvider(attr, providers.provider(() -> baseAttributes.getAttribute(attr)));
}
});
});