Browse Source

Include in the appendix properties described using only manual metadata

Closes gh-48073
pull/47980/head
Andy Wilkinson 1 month ago
parent
commit
adbeb7a03d
  1. 35
      buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationMetadataPlugin.java

35
buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationMetadataPlugin.java

@ -20,6 +20,8 @@ import java.io.File; @@ -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; @@ -38,6 +40,8 @@ import org.gradle.language.jvm.tasks.ProcessResources;
*/
public class ConfigurationMetadataPlugin implements Plugin<Project> {
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<Project> { @@ -52,25 +56,38 @@ public class ConfigurationMetadataPlugin implements Plugin<Project> {
TaskProvider<CheckManualSpringConfigurationMetadata> 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<File> 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<File> 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<File> 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);
}
}

Loading…
Cancel
Save