
Prior to this commit, the published Maven POMs would not pass the Maven Central mandatory checks. This commit adds the missing project name and description metadata for most artifacts. The Spring Boot Gradle plugin artifact was also missing this information and this is now added in the plugin metadata itself. This is also updating the project page URL which is now hosted directly on spring.io. Fixes gh-21457
320 lines
12 KiB
Groovy
320 lines
12 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"
|
|
}
|
|
|
|
description = "Spring Boot Docs"
|
|
|
|
configurations {
|
|
actuatorApiDocumentation
|
|
asciidoctorExtensions
|
|
autoConfiguration
|
|
configurationProperties
|
|
gradlePluginDocumentation
|
|
mavenPluginDocumentation
|
|
testSlices
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
url "https://repo.spring.io/release"
|
|
mavenContent {
|
|
includeGroup "io.spring.asciidoctor"
|
|
}
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
main
|
|
}
|
|
|
|
plugins.withType(EclipsePlugin) {
|
|
extensions.getByType(org.gradle.plugins.ide.eclipse.model.EclipseModel).classpath { classpath ->
|
|
classpath.plusConfigurations.add(configurations.getByName(sourceSets.main.runtimeClasspathConfigurationName))
|
|
}
|
|
}
|
|
|
|
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"))
|
|
|
|
implementation(project(path: ":spring-boot-project:spring-boot-actuator"))
|
|
implementation(project(path: ":spring-boot-project:spring-boot-autoconfigure"))
|
|
implementation(project(path: ":spring-boot-project:spring-boot-test"))
|
|
implementation(project(path: ":spring-boot-project:spring-boot-test-autoconfigure"))
|
|
implementation("com.zaxxer:HikariCP")
|
|
implementation("io.micrometer:micrometer-core")
|
|
implementation("io.projectreactor.netty:reactor-netty")
|
|
implementation("jakarta.servlet:jakarta.servlet-api")
|
|
implementation("org.apache.commons:commons-dbcp2")
|
|
implementation("org.apache.kafka:kafka-streams")
|
|
implementation("org.apache.tomcat.embed:tomcat-embed-core")
|
|
implementation("org.assertj:assertj-core")
|
|
implementation("org.glassfish.jersey.core:jersey-server")
|
|
implementation("org.hibernate:hibernate-jcache")
|
|
implementation("org.springframework:spring-test")
|
|
implementation("org.springframework:spring-web")
|
|
implementation("org.springframework:spring-webflux")
|
|
implementation("org.springframework.data:spring-data-redis")
|
|
implementation("org.springframework.data:spring-data-r2dbc")
|
|
implementation("org.springframework.kafka:spring-kafka")
|
|
implementation("org.springframework.restdocs:spring-restdocs-restassured")
|
|
implementation("org.springframework.restdocs:spring-restdocs-webtestclient")
|
|
implementation("org.springframework.security:spring-security-config")
|
|
implementation("org.springframework.security:spring-security-web")
|
|
implementation("org.junit.jupiter:junit-jupiter")
|
|
|
|
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<String> excludedProjects = ['spring-boot-antlib', 'spring-boot-configuration-metadata', 'spring-boot-configuration-processor',
|
|
'spring-boot-gradle-plugin', 'spring-boot-jarmode-layertools', 'spring-boot-maven-plugin']
|
|
Set<Project> publishedProjects = rootProject.subprojects.findAll { it != project}
|
|
.findAll { it.plugins.hasPlugin(JavaPlugin) && it.plugins.hasPlugin(MavenPublishPlugin) }
|
|
.findAll { !excludedProjects.contains(it.name) }
|
|
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-r2dbc-version": versionConstraints["org.springframework.data:spring-data-r2dbc"],
|
|
"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 "*.singleadoc"
|
|
}
|
|
}
|
|
|
|
asciidoctorPdf {
|
|
sources {
|
|
include "*.singleadoc"
|
|
}
|
|
}
|
|
|
|
task asciidoctorMultipage(type: org.asciidoctor.gradle.jvm.AsciidoctorTask) {
|
|
sources {
|
|
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"
|
|
include "index.pdf"
|
|
rename { "spring-boot-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
|
|
}
|
|
}
|
|
}
|