2020
2121import org .gradle .api .Plugin ;
2222import org .gradle .api .Project ;
23+ import org .gradle .api .attributes .Category ;
24+ import org .gradle .api .attributes .Usage ;
2325import org .gradle .api .plugins .JavaPlugin ;
2426import org .gradle .api .plugins .JavaPluginExtension ;
2527import org .gradle .api .provider .Provider ;
3840 */
3941public class ConfigurationMetadataPlugin implements Plugin <Project > {
4042
43+ private static final String CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME = "configurationPropertiesMetadata" ;
44+
4145/**
4246 * Name of the {@link CheckAdditionalSpringConfigurationMetadata} task.
4347 */
@@ -52,25 +56,38 @@ private void registerCheckAdditionalMetadataTask(Project project) {
5256TaskProvider <CheckManualSpringConfigurationMetadata > checkConfigurationMetadata = project .getTasks ()
5357.register (CHECK_MANUAL_SPRING_CONFIGURATION_METADATA_TASK_NAME ,
5458CheckManualSpringConfigurationMetadata .class );
59+ SourceSet mainSourceSet = project .getExtensions ()
60+ .getByType (JavaPluginExtension .class )
61+ .getSourceSets ()
62+ .getByName (SourceSet .MAIN_SOURCE_SET_NAME );
63+ Provider <File > manualMetadataLocation = project .getTasks ()
64+ .named (mainSourceSet .getProcessResourcesTaskName (), ProcessResources .class )
65+ .map ((processResources ) -> new File (processResources .getDestinationDir (),
66+ "META-INF/spring-configuration-metadata.json" ));
5567checkConfigurationMetadata .configure ((check ) -> {
56- SourceSet mainSourceSet = project .getExtensions ()
57- .getByType (JavaPluginExtension .class )
58- .getSourceSets ()
59- .getByName (SourceSet .MAIN_SOURCE_SET_NAME );
60-
61- Provider <File > manualMetadataLocation = project .getTasks ()
62- .named (mainSourceSet .getProcessResourcesTaskName (), ProcessResources .class )
63- .map ((processResources ) -> new File (processResources .getDestinationDir (),
64- "META-INF/spring-configuration-metadata.json" ));
6568check .getMetadataLocation ().set (manualMetadataLocation );
6669check .getReportLocation ()
6770.set (project .getLayout ()
6871.getBuildDirectory ()
6972.file ("reports/manual-spring-configuration-metadata/check.txt" ));
7073});
74+ addMetadataArtifact (project , manualMetadataLocation );
7175project .getTasks ()
7276.named (LifecycleBasePlugin .CHECK_TASK_NAME )
7377.configure ((check ) -> check .dependsOn (checkConfigurationMetadata ));
7478}
7579
80+ private void addMetadataArtifact (Project project , Provider <File > metadataLocation ) {
81+ project .getConfigurations ()
82+ .consumable (CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME , (configuration ) -> {
83+ configuration .attributes ((attributes ) -> {
84+ attributes .attribute (Category .CATEGORY_ATTRIBUTE ,
85+ project .getObjects ().named (Category .class , Category .DOCUMENTATION ));
86+ attributes .attribute (Usage .USAGE_ATTRIBUTE ,
87+ project .getObjects ().named (Usage .class , "configuration-properties-metadata" ));
88+ });
89+ });
90+ project .getArtifacts ().add (CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME , metadataLocation );
91+ }
92+
7693}
0 commit comments