diff --git a/spring-boot-docs/pom.xml b/spring-boot-docs/pom.xml
index 6e2e506ad7..19fca150e4 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 caebf6355b..c8163aef5e 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 0000000000..0d23d95413
--- /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