Prior to this commit, the asciidoctor Gradle task was configured to generate both the HTML5 and PDF backends. Unfortunately, this resulted in resources such as HTML, JavaScript, CSS, and images being published alongside the generated PDF documents. This commit addresses this issue by introducing the use of a dedicated asciidoctorPdf Gradle task. The existing asciidoctor Gradle task has been modified to only generate HTML5 output. Both of these tasks now share common configuration supplied by the updated asciidoctorj Gradle task. In addition, the asciidoctor task now depends on the asciidoctorPdf task. Thus, invoking `./gradlew asciidoctor` will still generate both the HTML5 and PDF outputs; whereas, `./gradlew asciidoctorPdf` will generate only the PDF outputs. We may later decide to rework the tasks to introduce a dedicated asciidoctorHtml task so that we can generate the HTML outputs without having to generate the PDF outputs (which are more time consuming). See gh-25783
426 lines
15 KiB
Groovy
426 lines
15 KiB
Groovy
plugins {
|
|
id 'io.spring.dependency-management' version '1.0.9.RELEASE' apply false
|
|
id 'io.spring.nohttp' version '0.0.5.RELEASE'
|
|
id 'org.jetbrains.kotlin.jvm' version '1.4.10' apply false
|
|
id 'org.jetbrains.dokka' version '0.10.1' apply false
|
|
id 'org.asciidoctor.jvm.convert' version '2.4.0'
|
|
id 'org.asciidoctor.jvm.pdf' version '2.4.0'
|
|
id 'de.undercouch.download' version '4.1.1'
|
|
id "io.freefair.aspectj" version '5.1.1' apply false
|
|
id "com.github.ben-manes.versions" version '0.28.0'
|
|
id "me.champeau.gradle.jmh" version "0.5.0" apply false
|
|
id "org.jetbrains.kotlin.plugin.serialization" version "1.4.10" apply false
|
|
}
|
|
|
|
ext {
|
|
moduleProjects = subprojects.findAll { it.name.startsWith("spring-") }
|
|
javaProjects = subprojects - project(":framework-bom")
|
|
withoutJclOverSlf4j = {
|
|
exclude group: "org.slf4j", name: "jcl-over-slf4j"
|
|
}
|
|
}
|
|
|
|
configure(allprojects) { project ->
|
|
apply plugin: "io.spring.dependency-management"
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom "com.fasterxml.jackson:jackson-bom:2.11.2"
|
|
mavenBom "io.netty:netty-bom:4.1.52.Final"
|
|
mavenBom "io.projectreactor:reactor-bom:2020.0.0-RC1"
|
|
mavenBom "io.r2dbc:r2dbc-bom:Arabba-SR7"
|
|
mavenBom "io.rsocket:rsocket-bom:1.1.0-M2"
|
|
mavenBom "org.eclipse.jetty:jetty-bom:9.4.31.v20200723"
|
|
mavenBom "org.jetbrains.kotlin:kotlin-bom:1.4.10"
|
|
mavenBom "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.3.9"
|
|
mavenBom "org.junit:junit-bom:5.7.0"
|
|
}
|
|
dependencies {
|
|
dependencySet(group: 'org.apache.logging.log4j', version: '2.13.3') {
|
|
entry 'log4j-api'
|
|
entry 'log4j-core'
|
|
entry 'log4j-slf4j-impl'
|
|
entry 'log4j-jul'
|
|
}
|
|
dependency "org.slf4j:slf4j-api:1.7.30"
|
|
dependency("com.google.code.findbugs:findbugs:3.0.1") {
|
|
exclude group: "dom4j", name: "dom4j"
|
|
}
|
|
dependency "com.google.code.findbugs:jsr305:3.0.2"
|
|
|
|
dependencySet(group: 'org.aspectj', version: '1.9.6') {
|
|
entry 'aspectjrt'
|
|
entry 'aspectjtools'
|
|
entry 'aspectjweaver'
|
|
}
|
|
dependencySet(group: 'org.codehaus.groovy', version: '3.0.5') {
|
|
entry 'groovy'
|
|
entry 'groovy-jsr223'
|
|
entry 'groovy-templates' // requires findbugs for warning-free compilation
|
|
entry 'groovy-test'
|
|
entry 'groovy-xml'
|
|
}
|
|
|
|
dependency "io.reactivex:rxjava:1.3.8"
|
|
dependency "io.reactivex:rxjava-reactive-streams:1.2.1"
|
|
dependency "io.reactivex.rxjava2:rxjava:2.2.19"
|
|
dependency "io.reactivex.rxjava3:rxjava:3.0.6"
|
|
dependency "io.projectreactor.tools:blockhound:1.0.2.RELEASE"
|
|
|
|
dependency "com.caucho:hessian:4.0.63"
|
|
dependency "com.fasterxml:aalto-xml:1.2.2"
|
|
dependency("com.fasterxml.woodstox:woodstox-core:6.2.1") {
|
|
exclude group: "stax", name: "stax-api"
|
|
}
|
|
dependency "com.google.code.gson:gson:2.8.6"
|
|
dependency "com.google.protobuf:protobuf-java-util:3.13.0"
|
|
dependency "com.googlecode.protobuf-java-format:protobuf-java-format:1.4"
|
|
dependency("com.thoughtworks.xstream:xstream:1.4.13") {
|
|
exclude group: "xpp3", name: "xpp3_min"
|
|
exclude group: "xmlpull", name: "xmlpull"
|
|
}
|
|
dependency "org.apache.johnzon:johnzon-jsonb:1.2.8"
|
|
dependency("org.codehaus.jettison:jettison:1.3.8") {
|
|
exclude group: "stax", name: "stax-api"
|
|
}
|
|
dependencySet(group: 'org.jibx', version: '1.3.3') {
|
|
entry 'jibx-bind'
|
|
entry 'jibx-run'
|
|
}
|
|
dependency "org.ogce:xpp3:1.1.6"
|
|
dependency "org.yaml:snakeyaml:1.26"
|
|
dependencySet(group: 'org.jetbrains.kotlinx', version: '1.0.0-RC') {
|
|
entry 'kotlinx-serialization-core'
|
|
}
|
|
|
|
dependency "com.h2database:h2:1.4.200"
|
|
dependency "com.github.ben-manes.caffeine:caffeine:2.8.5"
|
|
dependency "com.github.librepdf:openpdf:1.3.20"
|
|
dependency "com.rometools:rome:1.15.0"
|
|
dependency "commons-io:commons-io:2.5"
|
|
dependency "io.vavr:vavr:0.10.3"
|
|
dependency "net.sf.jopt-simple:jopt-simple:5.0.4"
|
|
dependencySet(group: 'org.apache.activemq', version: '5.16.0') {
|
|
entry 'activemq-broker'
|
|
entry('activemq-kahadb-store') {
|
|
exclude group: "org.springframework", name: "spring-context"
|
|
}
|
|
entry 'activemq-stomp'
|
|
}
|
|
dependency "org.apache.bcel:bcel:6.0"
|
|
dependency "org.apache.commons:commons-pool2:2.8.0"
|
|
dependencySet(group: 'org.apache.derby', version: '10.14.2.0') {
|
|
entry 'derby'
|
|
entry 'derbyclient'
|
|
}
|
|
dependency "org.apache.poi:poi-ooxml:4.1.2"
|
|
dependency "org.apache-extras.beanshell:bsh:2.0b6"
|
|
dependency "org.freemarker:freemarker:2.3.30"
|
|
dependency "org.hsqldb:hsqldb:2.5.1"
|
|
dependency "org.quartz-scheduler:quartz:2.3.2"
|
|
dependency "org.codehaus.fabric3.api:commonj:1.1.0"
|
|
dependency "net.sf.ehcache:ehcache:2.10.6"
|
|
dependency "org.ehcache:jcache:1.0.1"
|
|
dependency "org.ehcache:ehcache:3.4.0"
|
|
dependency "org.hibernate:hibernate-core:5.4.21.Final"
|
|
dependency "org.hibernate:hibernate-validator:6.1.5.Final"
|
|
dependency "org.webjars:webjars-locator-core:0.45"
|
|
dependency "org.webjars:underscorejs:1.8.3"
|
|
|
|
dependencySet(group: 'org.apache.tomcat', version: '9.0.38') {
|
|
entry 'tomcat-util'
|
|
entry('tomcat-websocket') {
|
|
exclude group: "org.apache.tomcat", name: "tomcat-websocket-api"
|
|
exclude group: "org.apache.tomcat", name: "tomcat-servlet-api"
|
|
}
|
|
}
|
|
dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.38') {
|
|
entry 'tomcat-embed-core'
|
|
entry 'tomcat-embed-websocket'
|
|
}
|
|
dependencySet(group: 'io.undertow', version: '2.2.0.Final') {
|
|
entry 'undertow-core'
|
|
entry('undertow-websockets-jsr') {
|
|
exclude group: "org.jboss.spec.javax.websocket", name: "jboss-websocket-api_1.1_spec"
|
|
}
|
|
entry('undertow-servlet') {
|
|
exclude group: "org.jboss.spec.javax.servlet", name: "jboss-servlet-api_3.1_spec"
|
|
exclude group: "org.jboss.spec.javax.annotation", name: "jboss-annotations-api_1.2_spec"
|
|
}
|
|
}
|
|
|
|
dependencySet(group: 'com.squareup.okhttp3', version: '3.14.9') {
|
|
entry 'okhttp'
|
|
entry 'mockwebserver'
|
|
}
|
|
dependency("org.apache.httpcomponents:httpclient:4.5.12") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency("org.apache.httpcomponents:httpasyncclient:4.1.4") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency 'org.apache.httpcomponents.client5:httpclient5:5.0.1'
|
|
dependency 'org.apache.httpcomponents.core5:httpcore5-reactive:5.0.1'
|
|
dependency "org.eclipse.jetty:jetty-reactive-httpclient:1.1.4"
|
|
|
|
dependency "org.jruby:jruby:9.2.13.0"
|
|
dependency "org.python:jython-standalone:2.7.1"
|
|
dependency "org.mozilla:rhino:1.7.11"
|
|
|
|
dependency "commons-fileupload:commons-fileupload:1.4"
|
|
dependency "org.synchronoss.cloud:nio-multipart-parser:1.1.0"
|
|
|
|
dependency("org.dom4j:dom4j:2.1.3") {
|
|
exclude group: "jaxen", name: "jaxen"
|
|
exclude group: "net.java.dev.msv", name: "xsdlib"
|
|
exclude group: "pull-parser", name: "pull-parser"
|
|
exclude group: "xpp3", name: "xpp3"
|
|
}
|
|
dependency("jaxen:jaxen:1.2.0") {
|
|
exclude group: "dom4j", name: "dom4j"
|
|
}
|
|
|
|
dependency("junit:junit:4.13") {
|
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
|
}
|
|
dependency("de.bechte.junit:junit-hierarchicalcontextrunner:4.12.1") {
|
|
exclude group: "junit", name: "junit"
|
|
}
|
|
dependency "org.testng:testng:7.3.0"
|
|
dependency "org.hamcrest:hamcrest:2.1"
|
|
dependency "org.awaitility:awaitility:3.1.6"
|
|
dependency "org.assertj:assertj-core:3.17.2"
|
|
dependencySet(group: 'org.xmlunit', version: '2.6.2') {
|
|
entry 'xmlunit-assertj'
|
|
entry('xmlunit-matchers') {
|
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
|
}
|
|
}
|
|
dependencySet(group: 'org.mockito', version: '3.5.11') {
|
|
entry('mockito-core') {
|
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
|
}
|
|
entry 'mockito-junit-jupiter'
|
|
}
|
|
dependency "io.mockk:mockk:1.10.0"
|
|
|
|
dependency("net.sourceforge.htmlunit:htmlunit:2.43.0") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency("org.seleniumhq.selenium:htmlunit-driver:2.43.1") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency("org.seleniumhq.selenium:selenium-java:3.141.59") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
exclude group: "io.netty", name: "netty"
|
|
}
|
|
dependency "org.skyscreamer:jsonassert:1.5.0"
|
|
dependency "com.jayway.jsonpath:json-path:2.4.0"
|
|
dependency "org.bouncycastle:bcpkix-jdk15on:1.66"
|
|
|
|
dependencySet(group: 'org.apache.tiles', version: '3.0.8') {
|
|
entry 'tiles-api'
|
|
entry('tiles-core', withoutJclOverSlf4j)
|
|
entry('tiles-servlet', withoutJclOverSlf4j)
|
|
entry('tiles-jsp', withoutJclOverSlf4j)
|
|
entry('tiles-el', withoutJclOverSlf4j)
|
|
entry('tiles-extras') {
|
|
exclude group: "org.springframework", name: "spring-web"
|
|
exclude group: "org.slf4j", name: "jcl-over-slf4j"
|
|
}
|
|
}
|
|
dependency("org.apache.taglibs:taglibs-standard-jstlel:1.2.5") {
|
|
exclude group: "org.apache.taglibs", name: "taglibs-standard-spec"
|
|
}
|
|
|
|
dependency "com.ibm.websphere:uow:6.0.2.17"
|
|
dependency "com.jamonapi:jamon:2.82"
|
|
dependency "joda-time:joda-time:2.10.6"
|
|
dependency "org.eclipse.persistence:org.eclipse.persistence.jpa:2.7.7"
|
|
dependency "org.javamoney:moneta:1.3"
|
|
|
|
dependency "com.sun.activation:javax.activation:1.2.0"
|
|
dependency "com.sun.mail:javax.mail:1.6.2"
|
|
dependencySet(group: 'com.sun.xml.bind', version: '2.3.0.1') {
|
|
entry 'jaxb-core'
|
|
entry 'jaxb-impl'
|
|
entry 'jaxb-xjc'
|
|
}
|
|
|
|
dependency "javax.activation:javax.activation-api:1.2.0"
|
|
dependency "javax.annotation:javax.annotation-api:1.3.2"
|
|
dependency "javax.cache:cache-api:1.1.0"
|
|
dependency "javax.ejb:javax.ejb-api:3.2"
|
|
dependency "javax.el:javax.el-api:3.0.1-b04"
|
|
dependency "javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0"
|
|
dependency "javax.faces:javax.faces-api:2.2"
|
|
dependency "javax.inject:javax.inject:1"
|
|
dependency "javax.inject:javax.inject-tck:1"
|
|
dependency "javax.interceptor:javax.interceptor-api:1.2.2"
|
|
dependency "javax.jms:javax.jms-api:2.0.1"
|
|
dependency "javax.json:javax.json-api:1.1.4"
|
|
dependency "javax.json.bind:javax.json.bind-api:1.0"
|
|
dependency "javax.mail:javax.mail-api:1.6.2"
|
|
dependency "javax.money:money-api:1.0.3"
|
|
dependency "javax.resource:javax.resource-api:1.7.1"
|
|
dependency "javax.servlet:javax.servlet-api:4.0.1"
|
|
dependency "javax.servlet.jsp:javax.servlet.jsp-api:2.3.2-b02"
|
|
dependency "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1"
|
|
dependency "javax.transaction:javax.transaction-api:1.3"
|
|
dependency "javax.validation:validation-api:2.0.1.Final"
|
|
dependency "javax.websocket:javax.websocket-api:1.1"
|
|
dependency "javax.xml.bind:jaxb-api:2.3.1"
|
|
dependency "javax.xml.ws:jaxws-api:2.3.1"
|
|
|
|
dependency "org.eclipse.persistence:javax.persistence:2.2.0"
|
|
|
|
// Substitute for "javax.management:jmxremote_optional:1.0.1_04" which
|
|
// is not available on Maven Central
|
|
dependency "org.glassfish.external:opendmk_jmxremote_optional_jar:1.0-b01-ea"
|
|
dependency "org.glassfish:javax.el:3.0.1-b08"
|
|
dependency "org.glassfish.main:javax.jws:4.0-b33"
|
|
dependency "org.glassfish.tyrus:tyrus-container-servlet:1.13.1"
|
|
}
|
|
generatedPomCustomization {
|
|
enabled = false
|
|
}
|
|
resolutionStrategy {
|
|
cacheChangingModulesFor 0, "seconds"
|
|
}
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url "https://repo.spring.io/libs-spring-framework-build" }
|
|
maven { url "https://repo.spring.io/milestone" } // Reactor
|
|
}
|
|
}
|
|
configurations.all {
|
|
resolutionStrategy {
|
|
cacheChangingModulesFor 0, "seconds"
|
|
cacheDynamicVersionsFor 0, "seconds"
|
|
}
|
|
}
|
|
}
|
|
|
|
configure([rootProject] + javaProjects) { project ->
|
|
group = "org.springframework"
|
|
|
|
apply plugin: "java"
|
|
apply plugin: "java-test-fixtures"
|
|
apply plugin: "checkstyle"
|
|
apply plugin: 'org.springframework.build.compile'
|
|
apply from: "${rootDir}/gradle/custom-java-home.gradle"
|
|
apply from: "${rootDir}/gradle/ide.gradle"
|
|
|
|
pluginManager.withPlugin("kotlin") {
|
|
apply plugin: "org.jetbrains.dokka"
|
|
compileKotlin {
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
languageVersion = "1.3"
|
|
apiVersion = "1.3"
|
|
freeCompilerArgs = ["-Xjsr305=strict"]
|
|
allWarningsAsErrors = true
|
|
}
|
|
}
|
|
compileTestKotlin {
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
freeCompilerArgs = ["-Xjsr305=strict"]
|
|
}
|
|
}
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
include(["**/*Tests.class", "**/*Test.class"])
|
|
systemProperty("java.awt.headless", "true")
|
|
systemProperty("testGroups", project.properties.get("testGroups"))
|
|
systemProperty("io.netty.leakDetection.level", "paranoid")
|
|
}
|
|
|
|
checkstyle {
|
|
toolVersion = "8.36.1"
|
|
configDirectory.set(rootProject.file("src/checkstyle"))
|
|
}
|
|
|
|
dependencies {
|
|
testCompile("org.junit.jupiter:junit-jupiter-api")
|
|
testCompile("org.junit.jupiter:junit-jupiter-params")
|
|
testCompile("org.mockito:mockito-core")
|
|
testCompile("org.mockito:mockito-junit-jupiter")
|
|
testCompile("io.mockk:mockk")
|
|
testCompile("org.assertj:assertj-core")
|
|
// Pull in the latest JUnit 5 Launcher API to ensure proper support in IDEs.
|
|
testRuntime("org.junit.platform:junit-platform-launcher")
|
|
testRuntime("org.junit.jupiter:junit-jupiter-engine")
|
|
testRuntime("org.apache.logging.log4j:log4j-core")
|
|
testRuntime("org.apache.logging.log4j:log4j-slf4j-impl")
|
|
testRuntime("org.apache.logging.log4j:log4j-jul")
|
|
// JSR-305 only used for non-required meta-annotations
|
|
compileOnly("com.google.code.findbugs:jsr305")
|
|
testCompileOnly("com.google.code.findbugs:jsr305")
|
|
checkstyle("io.spring.javaformat:spring-javaformat-checkstyle:0.0.15")
|
|
}
|
|
|
|
ext.javadocLinks = [
|
|
"https://docs.oracle.com/javase/8/docs/api/",
|
|
"https://docs.oracle.com/javaee/7/api/",
|
|
"https://docs.oracle.com/cd/E13222_01/wls/docs90/javadocs/", // CommonJ
|
|
"https://www.ibm.com/support/knowledgecenter/SS7JFU_8.5.5/com.ibm.websphere.javadoc.doc/web/apidocs/",
|
|
"https://glassfish.java.net/nonav/docs/v3/api/",
|
|
"https://docs.jboss.org/jbossas/javadoc/4.0.5/connector/",
|
|
"https://docs.jboss.org/jbossas/javadoc/7.1.2.Final/",
|
|
"https://tiles.apache.org/tiles-request/apidocs/",
|
|
"https://tiles.apache.org/framework/apidocs/",
|
|
"https://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
|
|
"https://www.ehcache.org/apidocs/2.10.4/",
|
|
"https://www.quartz-scheduler.org/api/2.3.0/",
|
|
"https://fasterxml.github.io/jackson-core/javadoc/2.10/",
|
|
"https://fasterxml.github.io/jackson-databind/javadoc/2.10/",
|
|
"https://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.10/",
|
|
"https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/",
|
|
"https://junit.org/junit4/javadoc/4.13/",
|
|
"https://junit.org/junit5/docs/5.7.0/api/"
|
|
] as String[]
|
|
}
|
|
|
|
configure(moduleProjects) { project ->
|
|
apply from: "${rootDir}/gradle/spring-module.gradle"
|
|
}
|
|
|
|
configure(rootProject) {
|
|
description = "Spring Framework"
|
|
|
|
apply plugin: "groovy"
|
|
apply plugin: "kotlin"
|
|
apply plugin: "io.spring.nohttp"
|
|
apply plugin: 'org.springframework.build.api-diff'
|
|
apply from: "${rootDir}/gradle/publications.gradle"
|
|
apply from: "${rootDir}/gradle/docs.gradle"
|
|
|
|
nohttp {
|
|
source.exclude "**/test-output/**"
|
|
allowlistFile = project.file("src/nohttp/allowlist.lines")
|
|
def rootPath = file(rootDir).toPath()
|
|
def projectDirs = allprojects.collect { it.projectDir } + "${rootDir}/buildSrc"
|
|
projectDirs.forEach { dir ->
|
|
[ 'bin', 'build', 'out', '.settings' ]
|
|
.collect { rootPath.relativize(new File(dir, it).toPath()) }
|
|
.forEach { source.exclude "$it/**" }
|
|
[ '.classpath', '.project' ]
|
|
.collect { rootPath.relativize(new File(dir, it).toPath()) }
|
|
.forEach { source.exclude "$it" }
|
|
}
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
mavenJava(MavenPublication) {
|
|
artifact docsZip
|
|
artifact schemaZip
|
|
artifact distZip
|
|
}
|
|
}
|
|
}
|
|
}
|