mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Previously, the configprop macro was being used in the source but the extension that implements the macro was not available to Asciidoctor. This led to the references not being checked at build time and the macro being left as-is in the rendered documentation. This commit updates the dependencies that are available to Asciidoctor to include the extension and the projects which define the configuration properties referenced in the documentation. Closes gh-20149
278 lines
10 KiB
Groovy
278 lines
10 KiB
Groovy
plugins {
|
|
id "java-base"
|
|
id "org.asciidoctor.jvm.convert"
|
|
id "org.asciidoctor.jvm.pdf"
|
|
id "org.springframework.boot.conventions"
|
|
id "org.springframework.boot.deployed"
|
|
}
|
|
|
|
configurations {
|
|
actuatorApiDocumentation
|
|
asciidoctorExtensions
|
|
autoConfiguration
|
|
configurationProperties
|
|
gradlePluginDocumentation
|
|
mavenPluginDocumentation
|
|
testSlices
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
url "https://repo.spring.io/release"
|
|
mavenContent {
|
|
includeGroup "io.spring.asciidoctor"
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
actuatorApiDocumentation(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "documentation"))
|
|
|
|
asciidoctorExtensions(platform(project(":spring-boot-project:spring-boot-parent")))
|
|
asciidoctorExtensions("io.spring.asciidoctor:spring-asciidoctor-extensions-spring-boot")
|
|
asciidoctorExtensions(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure"))
|
|
asciidoctorExtensions(project(path: ":spring-boot-project:spring-boot-autoconfigure"))
|
|
asciidoctorExtensions(project(path: ":spring-boot-project:spring-boot-devtools"))
|
|
|
|
autoConfiguration(project(path: ":spring-boot-project:spring-boot-autoconfigure", configuration: "autoConfigurationMetadata"))
|
|
autoConfiguration(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "autoConfigurationMetadata"))
|
|
autoConfiguration(project(path: ":spring-boot-project:spring-boot-devtools", configuration: "autoConfigurationMetadata"))
|
|
|
|
configurationProperties(project(path: ":spring-boot-project:spring-boot", configuration: "configurationPropertiesMetadata"))
|
|
configurationProperties(project(path: ":spring-boot-project:spring-boot-actuator", configuration: "configurationPropertiesMetadata"))
|
|
configurationProperties(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "configurationPropertiesMetadata"))
|
|
configurationProperties(project(path: ":spring-boot-project:spring-boot-autoconfigure", configuration: "configurationPropertiesMetadata"))
|
|
configurationProperties(project(path: ":spring-boot-project:spring-boot-devtools", configuration: "configurationPropertiesMetadata"))
|
|
|
|
gradlePluginDocumentation(project(path: ":spring-boot-project:spring-boot-tools:spring-boot-gradle-plugin", configuration: "documentation"))
|
|
|
|
mavenPluginDocumentation(project(path: ":spring-boot-project:spring-boot-tools:spring-boot-maven-plugin", configuration: "documentation"))
|
|
|
|
testSlices(project(path: ":spring-boot-project:spring-boot-test-autoconfigure", configuration: "testSliceMetadata"))
|
|
}
|
|
|
|
task dependencyVersions(type: org.springframework.boot.build.constraints.ExtractVersionConstraints) {
|
|
enforcedPlatform(":spring-boot-project:spring-boot-dependencies")
|
|
}
|
|
|
|
task javadoc(type: Javadoc) {
|
|
dependsOn dependencyVersions
|
|
project.rootProject.gradle.projectsEvaluated {
|
|
Set<Project> publishedProjects = rootProject.subprojects.findAll { it != project}
|
|
.findAll { it.plugins.hasPlugin(JavaPlugin) && it.plugins.hasPlugin(MavenPublishPlugin) }
|
|
.findAll { it.name != "spring-boot-maven-plugin" && it.name != "spring-boot-gradle-plugin" }
|
|
dependsOn publishedProjects.javadoc
|
|
source publishedProjects.javadoc.source
|
|
classpath = project.files(publishedProjects.javadoc.classpath)
|
|
destinationDir = project.file "${buildDir}/docs/javadoc"
|
|
options {
|
|
author = true
|
|
docTitle = "Spring Boot ${project.version} API"
|
|
encoding = "UTF-8"
|
|
memberLevel = "protected"
|
|
outputLevel = "quiet"
|
|
source = "1.8"
|
|
splitIndex = true
|
|
stylesheetFile = file("src/main/javadoc/spring-javadoc.css")
|
|
use = true
|
|
windowTitle = "Spring Boot ${project.version} API"
|
|
}
|
|
doFirst {
|
|
def versionConstraints = dependencyVersions.versionConstraints
|
|
def tomcatVersion = "${versionConstraints["org.apache.tomcat:tomcat-annotations-api"]}"
|
|
def tomcatDocsVersion = tomcatVersion.substring(0, tomcatVersion.lastIndexOf("."));
|
|
options.links = [
|
|
"https://docs.oracle.com/javase/8/docs/api/",
|
|
"https://docs.oracle.com/javaee/7/api/",
|
|
"https://docs.spring.io/spring-framework/docs/${versionConstraints["org.springframework:spring-core"]}/javadoc-api/",
|
|
"https://docs.spring.io/spring-security/site/docs/${versionConstraints["org.springframework.security:spring-security-core"]}/api/",
|
|
"https://tomcat.apache.org/tomcat-${tomcatDocsVersion}-doc/api/",
|
|
"https://www.eclipse.org/jetty/javadoc/${versionConstraints["org.eclipse.jetty:jetty-server"]}/",
|
|
"https://www.thymeleaf.org/apidocs/thymeleaf/${versionConstraints["org.thymeleaf:thymeleaf"]}/"
|
|
] as String[]
|
|
}
|
|
}
|
|
}
|
|
|
|
task documentTestSlices(type: org.springframework.boot.build.test.autoconfigure.DocumentTestSlices) {
|
|
testSlices = configurations.testSlices
|
|
outputFile = file("${buildDir}/docs/generated/test-slice-auto-configuration.adoc")
|
|
}
|
|
|
|
task documentStarters(type: org.springframework.boot.build.starters.DocumentStarters) {
|
|
outputDir = file("${buildDir}/docs/generated/starters/")
|
|
}
|
|
|
|
task documentAutoConfigurationClasses(type: org.springframework.boot.build.autoconfigure.DocumentAutoConfigurationClasses) {
|
|
autoConfiguration = configurations.autoConfiguration
|
|
outputDir = file("${buildDir}/docs/generated/auto-configuration-classes/")
|
|
}
|
|
|
|
task documentDependencyVersions(type: org.springframework.boot.build.constraints.DocumentConstrainedVersions) {
|
|
dependsOn dependencyVersions
|
|
constrainedVersions.set(providers.provider { dependencyVersions.constrainedVersions })
|
|
outputFile = file("${buildDir}/docs/generated/dependency-versions.adoc")
|
|
}
|
|
|
|
task documentVersionProperties(type: org.springframework.boot.build.constraints.DocumentVersionProperties) {
|
|
dependsOn dependencyVersions
|
|
versionProperties.set(providers.provider { dependencyVersions.versionProperties})
|
|
outputFile = file("${buildDir}/docs/generated/version-properties.adoc")
|
|
}
|
|
|
|
task documentConfigurationProperties(type: org.springframework.boot.build.context.properties.DocumentConfigurationProperties) {
|
|
configurationPropertyMetadata = configurations.configurationProperties
|
|
outputDir = file("${buildDir}/docs/generated/config-docs/")
|
|
}
|
|
|
|
tasks.withType(org.asciidoctor.gradle.jvm.AbstractAsciidoctorTask) {
|
|
dependsOn dependencyVersions
|
|
configurations "asciidoctorExtensions"
|
|
baseDirFollowsSourceDir()
|
|
asciidoctorj {
|
|
fatalWarnings = ['^((?!successfully validated).)*$']
|
|
}
|
|
doFirst {
|
|
def versionConstraints = dependencyVersions.versionConstraints
|
|
attributes "jetty-version": versionConstraints["org.eclipse.jetty:jetty-server"],
|
|
"jooq-version": versionConstraints["org.jooq:jooq"],
|
|
"spring-amqp-version": versionConstraints["org.springframework.amqp:spring-amqp"],
|
|
"spring-batch-version": versionConstraints["org.springframework.batch:spring-batch-core"],
|
|
"spring-boot-version": project.version,
|
|
"spring-data-commons-version": versionConstraints["org.springframework.data:spring-data-commons"],
|
|
"spring-data-couchbase-version": versionConstraints["org.springframework.data:spring-data-couchbase"],
|
|
"spring-data-jdbc-version": versionConstraints["org.springframework.data:spring-data-jdbc"],
|
|
"spring-data-jpa-version": versionConstraints["org.springframework.data:spring-data-jpa"],
|
|
"spring-data-mongodb-version": versionConstraints["org.springframework.data:spring-data-mongodb"],
|
|
"spring-data-neo4j-version": versionConstraints["org.springframework.data:spring-data-neo4j"],
|
|
"spring-data-rest-version": versionConstraints["org.springframework.data:spring-data-rest-core"],
|
|
"spring-data-solr-version": versionConstraints["org.springframework.data:spring-data-solr"],
|
|
"spring-framework-version": versionConstraints["org.springframework:spring-core"],
|
|
"spring-integration-version": versionConstraints["org.springframework.integration:spring-integration-core"],
|
|
"spring-security-version": versionConstraints["org.springframework.security:spring-security-core"],
|
|
"spring-webservices-version": versionConstraints["org.springframework.ws:spring-ws-core"]
|
|
}
|
|
}
|
|
|
|
asciidoctor {
|
|
sources {
|
|
include "*.htmlsingleadoc"
|
|
}
|
|
}
|
|
|
|
asciidoctorPdf {
|
|
sources {
|
|
include "*.pdfadoc"
|
|
}
|
|
}
|
|
|
|
task asciidoctorMultipage(type: org.asciidoctor.gradle.jvm.AsciidoctorTask) {
|
|
sources {
|
|
include "*.htmladoc"
|
|
include "*.adoc"
|
|
}
|
|
}
|
|
|
|
syncDocumentationSourceForAsciidoctor {
|
|
dependsOn documentTestSlices
|
|
dependsOn documentStarters
|
|
dependsOn documentAutoConfigurationClasses
|
|
dependsOn documentDependencyVersions
|
|
dependsOn documentVersionProperties
|
|
dependsOn documentConfigurationProperties
|
|
from("${buildDir}/docs/generated") {
|
|
into "asciidoc"
|
|
}
|
|
from("src/main/java") {
|
|
into "main/java"
|
|
}
|
|
from("src/test/java") {
|
|
into "test/java"
|
|
}
|
|
}
|
|
|
|
syncDocumentationSourceForAsciidoctorMultipage {
|
|
dependsOn documentTestSlices
|
|
dependsOn documentStarters
|
|
dependsOn documentAutoConfigurationClasses
|
|
dependsOn documentDependencyVersions
|
|
dependsOn documentVersionProperties
|
|
dependsOn documentConfigurationProperties
|
|
from("${buildDir}/docs/generated") {
|
|
into "asciidoc"
|
|
}
|
|
from("src/main/java") {
|
|
into "main/java"
|
|
}
|
|
from("src/test/java") {
|
|
into "test/java"
|
|
}
|
|
}
|
|
|
|
syncDocumentationSourceForAsciidoctorPdf {
|
|
dependsOn documentTestSlices
|
|
dependsOn documentStarters
|
|
dependsOn documentAutoConfigurationClasses
|
|
dependsOn documentDependencyVersions
|
|
dependsOn documentVersionProperties
|
|
dependsOn documentConfigurationProperties
|
|
from("${buildDir}/docs/generated") {
|
|
into "asciidoc"
|
|
}
|
|
from("src/main/java") {
|
|
into "main/java"
|
|
}
|
|
from("src/test/java") {
|
|
into "test/java"
|
|
}
|
|
}
|
|
|
|
task zip(type: Zip) {
|
|
dependsOn asciidoctor,
|
|
asciidoctorMultipage,
|
|
asciidoctorPdf,
|
|
configurations.gradlePluginDocumentation,
|
|
configurations.actuatorApiDocumentation,
|
|
configurations.mavenPluginDocumentation
|
|
duplicatesStrategy "fail"
|
|
from(asciidoctor.outputDir) {
|
|
into "reference/htmlsingle"
|
|
}
|
|
from(asciidoctorPdf.outputDir) {
|
|
into "reference/pdf"
|
|
}
|
|
from(asciidoctorMultipage.outputDir) {
|
|
into "reference/html"
|
|
}
|
|
from(javadoc) {
|
|
into "api"
|
|
}
|
|
into("gradle-plugin") {
|
|
from {
|
|
zipTree(configurations.gradlePluginDocumentation.singleFile)
|
|
}
|
|
}
|
|
into("actuator-api") {
|
|
from {
|
|
zipTree(configurations.actuatorApiDocumentation.singleFile)
|
|
}
|
|
}
|
|
into("maven-plugin") {
|
|
from {
|
|
zipTree(configurations.mavenPluginDocumentation.singleFile)
|
|
}
|
|
}
|
|
}
|
|
|
|
artifacts {
|
|
archives zip
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
deployment(MavenPublication) {
|
|
artifact zip
|
|
}
|
|
}
|
|
}
|