diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 4a22620ef4f..1ef3cefeafe 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -84,6 +84,10 @@ configurations.all { gradlePlugin { plugins { + aggregatorPlugin { + id = "org.springframework.boot.aggregator" + implementationClass = "org.springframework.boot.build.aggregation.AggregatorPlugin" + } annotationProcessorPlugin { id = "org.springframework.boot.annotation-processor" implementationClass = "org.springframework.boot.build.processors.AnnotationProcessorPlugin" diff --git a/buildSrc/src/main/java/org/springframework/boot/build/aggregation/Aggregate.java b/buildSrc/src/main/java/org/springframework/boot/build/aggregation/Aggregate.java new file mode 100644 index 00000000000..69962c3df18 --- /dev/null +++ b/buildSrc/src/main/java/org/springframework/boot/build/aggregation/Aggregate.java @@ -0,0 +1,50 @@ +/* + * Copyright 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.build.aggregation; + +import org.gradle.api.Named; +import org.gradle.api.attributes.Category; +import org.gradle.api.attributes.Usage; +import org.gradle.api.file.ConfigurableFileCollection; +import org.gradle.api.provider.Property; + +/** + * An aggregate. + * + * @author Andy Wilkinson + */ +public interface Aggregate extends Named { + + /** + * The {@link Category} used to select the variant that's included in the aggregate. + * @return the category + */ + Property getCategory(); + + /** + * The {@link Usage} used to select the variant that's included in the aggregate. + * @return the usage + */ + Property getUsage(); + + /** + * The aggregated files. + * @return the aggregated files + */ + ConfigurableFileCollection getFiles(); + +} diff --git a/buildSrc/src/main/java/org/springframework/boot/build/aggregation/AggregatorPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/aggregation/AggregatorPlugin.java new file mode 100644 index 00000000000..13d7e33b501 --- /dev/null +++ b/buildSrc/src/main/java/org/springframework/boot/build/aggregation/AggregatorPlugin.java @@ -0,0 +1,69 @@ +/* + * Copyright 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.build.aggregation; + +import org.gradle.api.NamedDomainObjectContainer; +import org.gradle.api.NamedDomainObjectProvider; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; +import org.gradle.api.artifacts.DependencyScopeConfiguration; +import org.gradle.api.artifacts.ResolvableConfiguration; +import org.gradle.api.attributes.Category; +import org.gradle.api.attributes.Usage; +import org.gradle.api.model.ObjectFactory; + +/** + * {@link Plugin} for aggregating the output of other projects. + * + * @author Andy Wilkinson + */ +public class AggregatorPlugin implements Plugin { + + @Override + public void apply(Project target) { + NamedDomainObjectContainer aggregates = target.getObjects().domainObjectContainer(Aggregate.class); + target.getExtensions().add("aggregates", aggregates); + aggregates.all((aggregate) -> { + NamedDomainObjectProvider dependencies = target.getConfigurations() + .dependencyScope(aggregate.getName() + "Dependencies", + (configuration) -> configureAttributes(configuration, aggregate, target.getObjects())); + NamedDomainObjectProvider aggregated = target.getConfigurations() + .resolvable(aggregate.getName(), (configuration) -> { + configuration.extendsFrom(dependencies.get()); + configureAttributes(configuration, aggregate, target.getObjects()); + }); + target.getRootProject() + .allprojects((project) -> target.getDependencies().add(dependencies.getName(), project)); + aggregate.getFiles() + .convention(aggregated.map((configuration) -> configuration.getIncoming() + .artifactView((view) -> view.setLenient(true)) + .getFiles())); + }); + } + + private void configureAttributes(Configuration configuration, Aggregate aggregate, ObjectFactory objects) { + configuration.attributes((attributes) -> { + attributes.attributeProvider(Category.CATEGORY_ATTRIBUTE, + aggregate.getCategory().map((category) -> objects.named(Category.class, category))); + attributes.attributeProvider(Usage.USAGE_ATTRIBUTE, + aggregate.getUsage().map((usage) -> objects.named(Usage.class, usage))); + }); + + } + +} diff --git a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java index c10803623fd..1cc07cda996 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationMetadata.java @@ -61,8 +61,6 @@ public abstract class AutoConfigurationMetadata extends DefaultTask { private FileCollection classesDirectories; public AutoConfigurationMetadata() { - getProject().getConfigurations() - .maybeCreate(AutoConfigurationPlugin.AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME); this.moduleName = getProject().getName(); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java index c11f84d60df..91278d51b0e 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/AutoConfigurationPlugin.java @@ -26,6 +26,8 @@ import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.artifacts.Dependency; +import org.gradle.api.attributes.Category; +import org.gradle.api.attributes.Usage; import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; @@ -53,11 +55,7 @@ import org.springframework.boot.build.optional.OptionalDependenciesPlugin; */ public class AutoConfigurationPlugin implements Plugin { - /** - * Name of the {@link Configuration} that holds the auto-configuration metadata - * artifact. - */ - public static final String AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME = "autoConfigurationMetadata"; + private static final String AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME = "autoConfigurationMetadata"; @Override public void apply(Project project) { @@ -83,6 +81,14 @@ public class AutoConfigurationPlugin implements Plugin { addAnnotationProcessorsDependencies(); TaskContainer tasks = this.project.getTasks(); ConfigurationContainer configurations = this.project.getConfigurations(); + configurations.consumable(AUTO_CONFIGURATION_METADATA_CONFIGURATION_NAME, (configuration) -> { + configuration.attributes((attributes) -> { + attributes.attribute(Category.CATEGORY_ATTRIBUTE, + this.project.getObjects().named(Category.class, Category.DOCUMENTATION)); + attributes.attribute(Usage.USAGE_ATTRIBUTE, + this.project.getObjects().named(Usage.class, "auto-configuration-metadata")); + }); + }); tasks.register("autoConfigurationMetadata", AutoConfigurationMetadata.class, this::configureAutoConfigurationMetadata); TaskProvider checkAutoConfigurationImports = tasks.register( diff --git a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/DocumentAutoConfigurationClasses.java b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/DocumentAutoConfigurationClasses.java index 96a0b75c568..48d57627c99 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/DocumentAutoConfigurationClasses.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/autoconfigure/DocumentAutoConfigurationClasses.java @@ -36,6 +36,8 @@ import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.FileCollection; import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.OutputDirectory; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; import org.springframework.util.StringUtils; @@ -50,6 +52,7 @@ public abstract class DocumentAutoConfigurationClasses extends DefaultTask { private FileCollection autoConfiguration; @InputFiles + @PathSensitive(PathSensitivity.RELATIVE) public FileCollection getAutoConfiguration() { return this.autoConfiguration; } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java index 97bc4ccb900..dbb78974fa6 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/context/properties/ConfigurationPropertiesPlugin.java @@ -22,6 +22,8 @@ import java.util.stream.Collectors; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; +import org.gradle.api.attributes.Category; +import org.gradle.api.attributes.Usage; import org.gradle.api.file.RegularFile; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; @@ -55,11 +57,7 @@ import org.springframework.util.StringUtils; */ public class ConfigurationPropertiesPlugin implements Plugin { - /** - * Name of the {@link Configuration} that holds the configuration property metadata - * artifact. - */ - public static final String CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME = "configurationPropertiesMetadata"; + private static final String CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME = "configurationPropertiesMetadata"; /** * Name of the {@link CheckAdditionalSpringConfigurationMetadata} task. @@ -106,7 +104,15 @@ public class ConfigurationPropertiesPlugin implements Plugin { .getByType(JavaPluginExtension.class) .getSourceSets() .getByName(SourceSet.MAIN_SOURCE_SET_NAME); - project.getConfigurations().maybeCreate(CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME); + 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.afterEvaluate((evaluatedProject) -> evaluatedProject.getArtifacts() .add(CONFIGURATION_PROPERTIES_METADATA_CONFIGURATION_NAME, mainSourceSet.getJava() diff --git a/documentation/spring-boot-docs/build.gradle b/documentation/spring-boot-docs/build.gradle index 16540375333..73b07f4ee33 100644 --- a/documentation/spring-boot-docs/build.gradle +++ b/documentation/spring-boot-docs/build.gradle @@ -21,17 +21,16 @@ plugins { id "dev.adamko.dokkatoo-html" id "java" id "org.antora" + id "org.jetbrains.kotlin.jvm" + id "org.springframework.boot.aggregator" id "org.springframework.boot.antora-contributor" id "org.springframework.boot.antora-dependencies" id "org.springframework.boot.deployed" - id 'org.jetbrains.kotlin.jvm' } description = "Spring Boot Docs" configurations { - autoConfiguration - configurationProperties remoteSpringApplicationExample resolvedBom springApplicationExample @@ -75,187 +74,6 @@ plugins.withType(EclipsePlugin) { } dependencies { - autoConfiguration(project(path: ":core:spring-boot-autoconfigure", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":core:spring-boot-testcontainers", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-activemq", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-actuator-autoconfigure", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-amqp", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-artemis", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-batch", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-cache", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-cassandra", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-cloudfoundry", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-couchbase", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-cassandra", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-commons", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-couchbase", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-elasticsearch", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-jdbc", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-jpa", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-ldap", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-mongodb", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-neo4j", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-r2dbc", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-redis", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-data-rest", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-devtools", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-elasticsearch", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-flyway", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-freemarker", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-graphql", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-groovy-templates", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-gson", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-h2console", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-hateoas", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-hazelcast", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-health", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-hibernate", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-http-client", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-http-codec", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-http-converter", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-integration", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-jackson", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-jdbc", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-jersey", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-jetty", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-jms", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-jooq", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-jsonb", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-kafka", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-ldap", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-liquibase", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-mail", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-metrics", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-mongodb", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-mustache", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-neo4j", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-netty", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-observation", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-opentelemetry", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-pulsar", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-quartz", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-r2dbc", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-reactor", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-reactor-netty", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-restclient", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-rsocket", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-security", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-security-oauth2-authorization-server", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-security-oauth2-client", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-security-oauth2-resource-server", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-security-saml2", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-sendgrid", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-servlet", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-session", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-session-data-mongodb", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-session-data-redis", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-session-hazelcast", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-session-jdbc", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-thymeleaf", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-tomcat", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-tracing", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-tx", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-undertow", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-validation", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-webclient", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-webflux", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-webmvc", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-webservices", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-websocket", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":module:spring-boot-zipkin", configuration: "autoConfigurationMetadata")) - - configurationProperties(project(path: ":core:spring-boot", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":core:spring-boot-autoconfigure", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":core:spring-boot-docker-compose", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":core:spring-boot-testcontainers", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-activemq", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-actuator", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-actuator-autoconfigure", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-amqp", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-artemis", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-batch", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-cache", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-cassandra", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-couchbase", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-cassandra", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-commons", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-couchbase", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-elasticsearch", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-jdbc", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-jpa", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-mongodb", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-ldap", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-neo4j", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-r2dbc", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-redis", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-data-rest", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-devtools", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-elasticsearch", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-flyway", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-freemarker", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-graphql", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-groovy-templates", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-gson", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-h2console", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-hateoas", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-hazelcast", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-hibernate", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-http-client", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-http-codec", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-http-converter", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-integration", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-jackson", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-jdbc", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-jersey", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-jetty", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-jms", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-jooq", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-jpa", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-kafka", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-ldap", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-liquibase", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-mail", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-metrics", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-mongodb", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-mustache", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-neo4j", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-netty", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-observation", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-opentelemetry", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-pulsar", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-quartz", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-r2dbc", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-reactor", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-reactor-netty", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-restclient", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-rsocket", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-security", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-security-oauth2-authorization-server", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-security-oauth2-client", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-security-oauth2-resource-server", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-security-saml2", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-sendgrid", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-servlet", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-session", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-session-data-mongodb", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-session-data-redis", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-session-hazelcast", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-session-jdbc", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-sql", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-test-autoconfigure", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-thymeleaf", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-tomcat", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-tracing", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-tx", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-undertow", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-validation", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-web-server", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-webclient", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-webflux", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-webmvc", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-webservices", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":module:spring-boot-zipkin", configuration: "configurationPropertiesMetadata")) - implementation(project(path: ":cli:spring-boot-cli")) implementation(project(path: ":core:spring-boot-docker-compose")) implementation(project(path: ":core:spring-boot-test")) @@ -443,8 +261,13 @@ tasks.register("documentStarters", org.springframework.boot.build.starters.Docum outputDir = layout.buildDirectory.dir("generated/docs/using/starters/") } +def autoConfigurationMetadataAggregate = aggregates.create("autoConfigurationMetadata") { + category = Category.DOCUMENTATION + usage = "auto-configuration-metadata" +} + tasks.register("documentAutoConfigurationClasses", org.springframework.boot.build.autoconfigure.DocumentAutoConfigurationClasses) { - autoConfiguration = configurations.autoConfiguration + autoConfiguration = autoConfigurationMetadataAggregate.files outputDir = layout.buildDirectory.dir("generated/docs/auto-configuration-classes/documented-auto-configuration-classes/") } @@ -458,8 +281,13 @@ tasks.register("documentDependencyVersionProperties", org.springframework.boot.b resolvedBoms = configurations.resolvedBom } +def configurationPropertiesMetadataAggregate = aggregates.create("configurationPropertiesMetadata") { + category = Category.DOCUMENTATION + usage = "configuration-properties-metadata" +} + tasks.register("documentConfigurationProperties", org.springframework.boot.build.context.properties.DocumentConfigurationProperties) { - configurationPropertyMetadata = configurations.configurationProperties + configurationPropertyMetadata = configurationPropertiesMetadataAggregate.files outputDir = layout.buildDirectory.dir("generated/docs/application-properties") } @@ -535,7 +363,7 @@ antoraContributions { from("src/main") { into "modules/ROOT/examples" } - from(project.configurations.configurationProperties) { + from(configurationPropertiesMetadataAggregate.files) { eachFile { it.path = rootProject .projectDir