From 65008606abf9abf701fff6da4631ec180947ea68 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 5 Jun 2014 15:37:32 +0100 Subject: [PATCH] Auto-generate auto configuration classes tables --- spring-boot-docs/pom.xml | 54 +++++ .../appendix-auto-configuration-classes.adoc | 193 +----------------- ...enerateAutoConfigurationClassTables.groovy | 41 ++++ 3 files changed, 97 insertions(+), 191 deletions(-) create mode 100644 spring-boot-docs/src/main/groovy/generateAutoConfigurationClassTables.groovy diff --git a/spring-boot-docs/pom.xml b/spring-boot-docs/pom.xml index 6e2e506ad7d..19fca150e4e 100644 --- a/spring-boot-docs/pom.xml +++ b/spring-boot-docs/pom.xml @@ -116,6 +116,35 @@ + + unpack-spring-factories + generate-resources + + unpack + + + + + org.springframework.boot + spring-boot-autoconfigure + ${project.version} + + ${project.build.directory}/auto-config/spring-boot-autoconfigure + + META-INF/spring.factories + + + org.springframework.boot + spring-boot-actuator + ${project.version} + + ${project.build.directory}/auto-config/spring-boot-actuator + + META-INF/spring.factories + + + + @@ -144,6 +173,31 @@ + + org.codehaus.gmavenplus + gmavenplus-plugin + 1.2 + + + + execute + + generate-resources + + + + + + + + + + org.codehaus.groovy + groovy-all + ${groovy.version} + + + org.asciidoctor asciidoctor-maven-plugin diff --git a/spring-boot-docs/src/main/asciidoc/appendix-auto-configuration-classes.adoc b/spring-boot-docs/src/main/asciidoc/appendix-auto-configuration-classes.adoc index caebf6355be..c8163aef5e1 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-auto-configuration-classes.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-auto-configuration-classes.adoc @@ -13,154 +13,7 @@ application for more details of which features are switched on. === From the ``spring-boot-autoconfigure'' module The following auto-configuration classes are from the `spring-boot-autoconfigure` module: -[cols="4,1"] -|=== -|Configuration Class | Links - -|{sc-spring-boot-autoconfigure}/jms/activemq/ActiveMQAutoConfiguration.{sc-ext}[ActiveMQAutoConfiguration] -|{dc-spring-boot-autoconfigure}/jms/activemq/ActiveMQAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/aop/AopAutoConfiguration.{sc-ext}[AopAutoConfiguration] -|{dc-spring-boot-autoconfigure}/aop/AopAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/batch/BatchAutoConfiguration.{sc-ext}[BatchAutoConfiguration] -|{dc-spring-boot-autoconfigure}/batch/BatchAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/jdbc/DataSourceAutoConfiguration.{sc-ext}[DataSourceAutoConfiguration] -|{dc-spring-boot-autoconfigure}/jdbc/DataSourceAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/jdbc/DataSourceTransactionManagerAutoConfiguration.{sc-ext}[DataSourceTransactionManagerAutoConfiguration] -|{dc-spring-boot-autoconfigure}/jdbc/DataSourceTransactionManagerAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/mobile/DeviceResolverAutoConfiguration.{sc-ext}[DeviceResolverAutoConfiguration] -|{dc-spring-boot-autoconfigure}/mobile/DeviceResolverAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/web/DispatcherServletAutoConfiguration.{sc-ext}[DispatcherServletAutoConfiguration] -|{dc-spring-boot-autoconfigure}/web/DispatcherServletAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/elasticsearch/ElasticsearchAutoConfiguration.{sc-ext}[ElasticsearchAutoConfiguration] -|{dc-spring-boot-autoconfigure}/elasticsearch/ElasticsearchAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/elasticsearch/ElasticsearchDataAutoConfiguration.{sc-ext}[ElasticsearchDataAutoConfiguration] -|{dc-spring-boot-autoconfigure}/elasticsearch/ElasticsearchDataAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/data/ElasticsearchRepositoriesAutoConfiguration.{sc-ext}[ElasticsearchRepositoriesAutoConfiguration] -|{dc-spring-boot-autoconfigure}/data/ElasticsearchRepositoriesAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/web/EmbeddedServletContainerAutoConfiguration.{sc-ext}[EmbeddedServletContainerAutoConfiguration] -|{dc-spring-boot-autoconfigure}/web/EmbeddedServletContainerAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/web/ErrorMvcAutoConfiguration.{sc-ext}[ErrorMvcAutoConfiguration] -|{dc-spring-boot-autoconfigure}/web/ErrorMvcAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/social/FacebookAutoConfiguration.{sc-ext}[FacebookAutoConfiguration] -|{dc-spring-boot-autoconfigure}/social/FacebookAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/security/FallbackWebSecurityAutoConfiguration.{sc-ext}[FallbackWebSecurityAutoConfiguration] -|{dc-spring-boot-autoconfigure}/security/FallbackWebSecurityAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/flyway/FlywayAutoConfiguration.{sc-ext}[FlywayAutoConfiguration] -|{dc-spring-boot-autoconfigure}/flyway/FlywayAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/freemarker/FreeMarkerAutoConfiguration.{sc-ext}[FreeMarkerAutoConfiguration] -|{dc-spring-boot-autoconfigure}/freemarker/FreeMarkerAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/groovy/templates/GroovyTemplateAutoConfiguration.{sc-ext}[GroovyTemplateAutoConfiguration] -|{dc-spring-boot-autoconfigure}/groovy/templates/GroovyTemplateAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/orm/jpa/HibernateJpaAutoConfiguration.{sc-ext}[HibernateJpaAutoConfiguration] -|{dc-spring-boot-autoconfigure}/orm/jpa/HibernateJpaAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/jms/hornetq/HornetQAutoConfiguration.{sc-ext}[HornetQAutoConfiguration] -|{dc-spring-boot-autoconfigure}/jms/hornetq/HornetQAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/web/HttpMessageConvertersAutoConfiguration.{sc-ext}[HttpMessageConvertersAutoConfiguration] -|{dc-spring-boot-autoconfigure}/web/HttpMessageConvertersAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/hateoas/HypermediaAutoConfiguration.{sc-ext}[HypermediaAutoConfiguration] -|{dc-spring-boot-autoconfigure}/hateoas/HypermediaAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/integration/IntegrationAutoConfiguration.{sc-ext}[IntegrationAutoConfiguration] -|{dc-spring-boot-autoconfigure}/integration/IntegrationAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/jms/JmsAutoConfiguration.{sc-ext}[JmsAutoConfiguration] -|{dc-spring-boot-autoconfigure}/jms/JmsAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/jmx/JmxAutoConfiguration.{sc-ext}[JmxAutoConfiguration] -|{dc-spring-boot-autoconfigure}/jmx/JmxAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/data/JpaRepositoriesAutoConfiguration.{sc-ext}[JpaRepositoriesAutoConfiguration] -|{dc-spring-boot-autoconfigure}/data/JpaRepositoriesAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/social/LinkedInAutoConfiguration.{sc-ext}[LinkedInAutoConfiguration] -|{dc-spring-boot-autoconfigure}/social/LinkedInAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/liquibase/LiquibaseAutoConfiguration.{sc-ext}[LiquibaseAutoConfiguration] -|{dc-spring-boot-autoconfigure}/liquibase/LiquibaseAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/MessageSourceAutoConfiguration.{sc-ext}[MessageSourceAutoConfiguration] -|{dc-spring-boot-autoconfigure}/MessageSourceAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/mongo/MongoAutoConfiguration.{sc-ext}[MongoAutoConfiguration] -|{dc-spring-boot-autoconfigure}/mongo/MongoAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/mongo/MongoDataAutoConfiguration.{sc-ext}[MongoDataAutoConfiguration] -|{dc-spring-boot-autoconfigure}/mongo/MongoDataAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/data/MongoRepositoriesAutoConfiguration.{sc-ext}[MongoRepositoriesAutoConfiguration] -|{dc-spring-boot-autoconfigure}/data/MongoRepositoriesAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/web/MultipartAutoConfiguration.{sc-ext}[MultipartAutoConfiguration] -|{dc-spring-boot-autoconfigure}/web/MultipartAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/PropertyPlaceholderAutoConfiguration.{sc-ext}[PropertyPlaceholderAutoConfiguration] -|{dc-spring-boot-autoconfigure}/PropertyPlaceholderAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/amqp/RabbitAutoConfiguration.{sc-ext}[RabbitAutoConfiguration] -|{dc-spring-boot-autoconfigure}/amqp/RabbitAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/reactor/ReactorAutoConfiguration.{sc-ext}[ReactorAutoConfiguration] -|{dc-spring-boot-autoconfigure}/reactor/ReactorAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/redis/RedisAutoConfiguration.{sc-ext}[RedisAutoConfiguration] -|{dc-spring-boot-autoconfigure}/redis/RedisAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/data/rest/RepositoryRestMvcAutoConfiguration.{sc-ext}[RepositoryRestMvcAutoConfiguration] -|{dc-spring-boot-autoconfigure}/data/rest/RepositoryRestMvcAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/security/SecurityAutoConfiguration.{sc-ext}[SecurityAutoConfiguration] -|{dc-spring-boot-autoconfigure}/security/SecurityAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/web/ServerPropertiesAutoConfiguration.{sc-ext}[ServerPropertiesAutoConfiguration] -|{dc-spring-boot-autoconfigure}/web/ServerPropertiesAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/mobile/SitePreferenceAutoConfiguration.{sc-ext}[SitePreferenceAutoConfiguration] -|{dc-spring-boot-autoconfigure}/mobile/SitePreferenceAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/social/SocialWebAutoConfiguration.{sc-ext}[SocialWebAutoConfiguration] -|{dc-spring-boot-autoconfigure}/social/SocialWebAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/solr/SolrAutoConfiguration.{sc-ext}[SolrAutoConfiguration] -|{dc-spring-boot-autoconfigure}/solr/SolrAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/data/SolrRepositoriesAutoConfiguration.{sc-ext}[SolrRepositoriesAutoConfiguration] -|{dc-spring-boot-autoconfigure}/data/SolrRepositoriesAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/thymeleaf/ThymeleafAutoConfiguration.{sc-ext}[ThymeleafAutoConfiguration] -|{dc-spring-boot-autoconfigure}/thymeleaf/ThymeleafAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/social/TwitterAutoConfiguration.{sc-ext}[TwitterAutoConfiguration] -|{dc-spring-boot-autoconfigure}/social/TwitterAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/velocity/VelocityAutoConfiguration.{sc-ext}[VelocityAutoConfiguration] -|{dc-spring-boot-autoconfigure}/velocity/VelocityAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/web/WebMvcAutoConfiguration.{sc-ext}[WebMvcAutoConfiguration] -|{dc-spring-boot-autoconfigure}/web/WebMvcAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-autoconfigure}/websocket/WebSocketAutoConfiguration.{sc-ext}[WebSocketAutoConfiguration] -|{dc-spring-boot-autoconfigure}/websocket/WebSocketAutoConfiguration.{dc-ext}[javadoc] -|=== +include::../../../target/generated-resources/auto-configuration-classes-spring-boot-autoconfigure.adoc[] @@ -168,46 +21,4 @@ The following auto-configuration classes are from the `spring-boot-autoconfigure === From the ``spring-boot-actuator'' module The following auto-configuration classes are from the `spring-boot-actuator` module: -[cols="4,1"] -|=== -|Configuration Class |Links - -|{sc-spring-boot-actuator}/autoconfigure/AuditAutoConfiguration.{sc-ext}[AuditAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/AuditAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/CrshAutoConfiguration.{sc-ext}[CrshAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/CrshAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/EndpointAutoConfiguration.{sc-ext}[EndpointAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/EndpointAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/EndpointMBeanExportAutoConfiguration.{sc-ext}[EndpointMBeanExportAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/EndpointMBeanExportAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/EndpointWebMvcAutoConfiguration.{sc-ext}[EndpointWebMvcAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/EndpointWebMvcAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/HealthIndicatorAutoConfiguration.{sc-ext}[HealthIndicatorAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/HealthIndicatorAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/JolokiaAutoConfiguration.{sc-ext}[JolokiaAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/JolokiaAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/ManagementSecurityAutoConfiguration.{sc-ext}[ManagementSecurityAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/ManagementSecurityAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/ManagementServerPropertiesAutoConfiguration.{sc-ext}[ManagementServerPropertiesAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/ManagementServerPropertiesAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/MetricFilterAutoConfiguration.{sc-ext}[MetricFilterAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/MetricFilterAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/MetricRepositoryAutoConfiguration.{sc-ext}[MetricRepositoryAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/MetricRepositoryAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/TraceRepositoryAutoConfiguration.{sc-ext}[TraceRepositoryAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/TraceRepositoryAutoConfiguration.{dc-ext}[javadoc] - -|{sc-spring-boot-actuator}/autoconfigure/TraceWebFilterAutoConfiguration.{sc-ext}[TraceWebFilterAutoConfiguration] -|{dc-spring-boot-actuator}/autoconfigure/TraceWebFilterAutoConfiguration.{dc-ext}[javadoc] -|=== +include::../../../target/generated-resources/auto-configuration-classes-spring-boot-actuator.adoc[] diff --git a/spring-boot-docs/src/main/groovy/generateAutoConfigurationClassTables.groovy b/spring-boot-docs/src/main/groovy/generateAutoConfigurationClassTables.groovy new file mode 100644 index 00000000000..0d23d95413a --- /dev/null +++ b/spring-boot-docs/src/main/groovy/generateAutoConfigurationClassTables.groovy @@ -0,0 +1,41 @@ +def processModule(File moduleDir, File generatedResourcesDir) { + def moduleName = moduleDir.name + def factoriesFile = new File(moduleDir, 'META-INF/spring.factories') + new File(generatedResourcesDir, "auto-configuration-classes-${moduleName}.adoc") + .withPrintWriter { + generateAutoConfigurationClassTable(moduleName, factoriesFile, it) + } +} + +def generateAutoConfigurationClassTable(String module, File factories, PrintWriter writer) { + writer.println '[cols="4,1"]' + writer.println '|===' + writer.println '|Configuration Class | Links' + + getAutoConfigurationClasses(factories).each { + writer.println '' + writer.println "|{github-code}/$module/src/main/java/$it.path.{sc-ext}[$it.name]" + writer.println "|{dc-root}/$it.path.{dc-ext}[javadoc]" + } + + writer.println '|===' +} + +def getAutoConfigurationClasses(File factories) { + factories.withInputStream { + def properties = new Properties() + properties.load(it) + properties.get('org.springframework.boot.autoconfigure.EnableAutoConfiguration') + .split(',') + .collect { + def path = it.replace('.', '/') + def name = it.substring(it.lastIndexOf('.') + 1) + [ 'path': path, 'name': name] + } + .sort {a, b -> a.name.compareTo(b.name)} + } +} + +def autoConfigDir = new File(project.build.directory, 'auto-config') +def generatedResourcesDir = new File(project.build.directory, 'generated-resources') +autoConfigDir.eachDir { processModule(it, generatedResourcesDir) } \ No newline at end of file