From adbeb7a03d1e67ae3322d184f089bc82d4b232d6 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 12 Nov 2025 14:55:06 +0000 Subject: [PATCH] Include in the appendix properties described using only manual metadata Closes gh-48073 --- .../ConfigurationMetadataPlugin.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationMetadataPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationMetadataPlugin.java index ab56b285b02..568423032cf 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationMetadataPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationMetadataPlugin.java @@ -20,6 +20,8 @@ import java.io.File; import org.gradle.api.Plugin; import org.gradle.api.Project; +import org.gradle.api.attributes.Category; +import org.gradle.api.attributes.Usage; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.provider.Provider; @@ -38,6 +40,8 @@ import org.gradle.language.jvm.tasks.ProcessResources; */ public class ConfigurationMetadataPlugin implements Plugin { + private static final String CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME = "configurationPropertiesMetadata"; + /** * Name of the {@link CheckAdditionalSpringConfigurationMetadata} task. */ @@ -52,25 +56,38 @@ public class ConfigurationMetadataPlugin implements Plugin { TaskProvider checkConfigurationMetadata = project.getTasks() .register(CHECK_MANUAL_SPRING_CONFIGURATION_METADATA_TASK_NAME, CheckManualSpringConfigurationMetadata.class); + SourceSet mainSourceSet = project.getExtensions() + .getByType(JavaPluginExtension.class) + .getSourceSets() + .getByName(SourceSet.MAIN_SOURCE_SET_NAME); + Provider manualMetadataLocation = project.getTasks() + .named(mainSourceSet.getProcessResourcesTaskName(), ProcessResources.class) + .map((processResources) -> new File(processResources.getDestinationDir(), + "META-INF/spring-configuration-metadata.json")); checkConfigurationMetadata.configure((check) -> { - SourceSet mainSourceSet = project.getExtensions() - .getByType(JavaPluginExtension.class) - .getSourceSets() - .getByName(SourceSet.MAIN_SOURCE_SET_NAME); - - Provider manualMetadataLocation = project.getTasks() - .named(mainSourceSet.getProcessResourcesTaskName(), ProcessResources.class) - .map((processResources) -> new File(processResources.getDestinationDir(), - "META-INF/spring-configuration-metadata.json")); check.getMetadataLocation().set(manualMetadataLocation); check.getReportLocation() .set(project.getLayout() .getBuildDirectory() .file("reports/manual-spring-configuration-metadata/check.txt")); }); + addMetadataArtifact(project, manualMetadataLocation); project.getTasks() .named(LifecycleBasePlugin.CHECK_TASK_NAME) .configure((check) -> check.dependsOn(checkConfigurationMetadata)); } + private void addMetadataArtifact(Project project, Provider metadataLocation) { + project.getConfigurations() + .consumable(CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME, (configuration) -> { + configuration.attributes((attributes) -> { + attributes.attribute(Category.CATEGORY_ATTRIBUTE, + project.getObjects().named(Category.class, Category.DOCUMENTATION)); + attributes.attribute(Usage.USAGE_ATTRIBUTE, + project.getObjects().named(Usage.class, "configuration-properties-metadata")); + }); + }); + project.getArtifacts().add(CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME, metadataLocation); + } + }