|
|
|
@ -20,6 +20,8 @@ import java.io.File; |
|
|
|
|
|
|
|
|
|
|
|
import org.gradle.api.Plugin; |
|
|
|
import org.gradle.api.Plugin; |
|
|
|
import org.gradle.api.Project; |
|
|
|
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.JavaPlugin; |
|
|
|
import org.gradle.api.plugins.JavaPluginExtension; |
|
|
|
import org.gradle.api.plugins.JavaPluginExtension; |
|
|
|
import org.gradle.api.provider.Provider; |
|
|
|
import org.gradle.api.provider.Provider; |
|
|
|
@ -38,6 +40,8 @@ import org.gradle.language.jvm.tasks.ProcessResources; |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class ConfigurationMetadataPlugin implements Plugin<Project> { |
|
|
|
public class ConfigurationMetadataPlugin implements Plugin<Project> { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME = "configurationPropertiesMetadata"; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Name of the {@link CheckAdditionalSpringConfigurationMetadata} task. |
|
|
|
* Name of the {@link CheckAdditionalSpringConfigurationMetadata} task. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -52,25 +56,38 @@ public class ConfigurationMetadataPlugin implements Plugin<Project> { |
|
|
|
TaskProvider<CheckManualSpringConfigurationMetadata> checkConfigurationMetadata = project.getTasks() |
|
|
|
TaskProvider<CheckManualSpringConfigurationMetadata> checkConfigurationMetadata = project.getTasks() |
|
|
|
.register(CHECK_MANUAL_SPRING_CONFIGURATION_METADATA_TASK_NAME, |
|
|
|
.register(CHECK_MANUAL_SPRING_CONFIGURATION_METADATA_TASK_NAME, |
|
|
|
CheckManualSpringConfigurationMetadata.class); |
|
|
|
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) -> { |
|
|
|
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.getMetadataLocation().set(manualMetadataLocation); |
|
|
|
check.getReportLocation() |
|
|
|
check.getReportLocation() |
|
|
|
.set(project.getLayout() |
|
|
|
.set(project.getLayout() |
|
|
|
.getBuildDirectory() |
|
|
|
.getBuildDirectory() |
|
|
|
.file("reports/manual-spring-configuration-metadata/check.txt")); |
|
|
|
.file("reports/manual-spring-configuration-metadata/check.txt")); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
addMetadataArtifact(project, manualMetadataLocation); |
|
|
|
project.getTasks() |
|
|
|
project.getTasks() |
|
|
|
.named(LifecycleBasePlugin.CHECK_TASK_NAME) |
|
|
|
.named(LifecycleBasePlugin.CHECK_TASK_NAME) |
|
|
|
.configure((check) -> check.dependsOn(checkConfigurationMetadata)); |
|
|
|
.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); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|