-
Notifications
You must be signed in to change notification settings - Fork 40.2k
/
generateConfigurationPropertyTables.groovy
77 lines (70 loc) · 3.42 KB
/
generateConfigurationPropertyTables.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import org.springframework.boot.configurationdocs.ConfigurationMetadataDocumentWriter
import org.springframework.boot.configurationdocs.DocumentOptions
import org.springframework.core.io.UrlResource
import java.nio.file.Path
import java.nio.file.Paths
def getConfigMetadataInputStreams() {
return getClass().getClassLoader().getResources("META-INF/spring-configuration-metadata.json")
.collect { new UrlResource(it).getInputStream() }
}
def generateConfigMetadataDocumentation() {
def streams = getConfigMetadataInputStreams()
try {
Path outputPath = Paths.get(project.build.directory, 'generated-resources', 'config-docs')
def builder = DocumentOptions.builder();
builder
.addSection("core")
.withKeyPrefixes("debug", "trace", "logging", "spring.aop", "spring.application",
"spring.autoconfigure", "spring.banner", "spring.beaninfo", "spring.codec", "spring.config",
"spring.info", "spring.jmx", "spring.main", "spring.messages", "spring.pid",
"spring.profiles", "spring.quartz", "spring.reactor", "spring.task",
"spring.mandatory-file-encoding", "info", "spring.output.ansi.enabled")
.addSection("mail")
.withKeyPrefixes("spring.mail", "spring.sendgrid")
.addSection("cache")
.withKeyPrefixes("spring.cache")
.addSection("server")
.withKeyPrefixes("server")
.addSection("web")
.withKeyPrefixes("spring.hateoas",
"spring.http", "spring.servlet", "spring.jersey",
"spring.mvc", "spring.resources", "spring.session", "spring.webflux")
.addSection("json")
.withKeyPrefixes("spring.jackson", "spring.gson")
.addSection("rsocket")
.withKeyPrefixes("spring.rsocket")
.addSection("templating")
.withKeyPrefixes("spring.freemarker", "spring.groovy", "spring.mustache", "spring.thymeleaf")
.addOverride("spring.groovy.template.configuration", "See GroovyMarkupConfigurer")
.addSection("security")
.withKeyPrefixes("spring.security")
.addSection("data-migration")
.withKeyPrefixes("spring.flyway", "spring.liquibase")
.addSection("data")
.withKeyPrefixes("spring.couchbase", "spring.elasticsearch", "spring.h2",
"spring.influx", "spring.ldap", "spring.mongodb", "spring.redis",
"spring.dao", "spring.data", "spring.datasource", "spring.jooq",
"spring.jdbc", "spring.jpa")
.addOverride("spring.datasource.dbcp2", "Commons DBCP2 specific settings bound to an instance of DBCP2's BasicDataSource")
.addOverride("spring.datasource.tomcat", "Tomcat datasource specific settings bound to an instance of Tomcat JDBC's DataSource")
.addOverride("spring.datasource.hikari", "Hikari specific settings bound to an instance of Hikari's HikariDataSource")
.addSection("transaction")
.withKeyPrefixes("spring.jta", "spring.transaction")
.addSection("integration")
.withKeyPrefixes("spring.activemq", "spring.artemis", "spring.batch",
"spring.integration", "spring.jms", "spring.kafka", "spring.rabbitmq", "spring.hazelcast",
"spring.webservices")
.addSection("actuator")
.withKeyPrefixes("management")
.addSection("devtools")
.withKeyPrefixes("spring.devtools")
.addSection("testing")
.withKeyPrefixes("spring.test");
ConfigurationMetadataDocumentWriter writer = new ConfigurationMetadataDocumentWriter();
writer.writeDocument(outputPath, builder.build(), streams.toArray(new InputStream[0]));
}
finally {
streams.each { it.close() }
}
}
generateConfigMetadataDocumentation()