@ -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 ) ;
}
}