mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
a3781a45d6
Adopt to R2DBC Parameter type, deprecate our own one in favor of the R2DBC type. Add support for extensible transaction definitions and support to consume Readable and result segments. Return Long instead of Integer in DatabaseClient update in preparation for R2DBC 1.0 changes.
397 lines
15 KiB
Groovy
397 lines
15 KiB
Groovy
plugins {
|
|
id 'io.spring.dependency-management' version '1.0.11.RELEASE' apply false
|
|
id 'io.spring.nohttp' version '0.0.10'
|
|
id "io.freefair.aspectj" version '6.4.0' apply false
|
|
id 'org.jetbrains.dokka' version '1.6.10' apply false
|
|
id 'org.jetbrains.kotlin.jvm' version '1.6.20-RC' apply false
|
|
id "org.jetbrains.kotlin.plugin.serialization" version '1.6.20-RC' apply false
|
|
id 'org.asciidoctor.jvm.convert' version '3.3.2'
|
|
id 'org.asciidoctor.jvm.pdf' version '3.3.2'
|
|
id "org.unbroken-dome.xjc" version '2.0.0' apply false
|
|
id "com.github.ben-manes.versions" version '0.39.0'
|
|
id "com.github.johnrengelman.shadow" version '7.0.0' apply false
|
|
id 'de.undercouch.download' version '4.1.2'
|
|
id "me.champeau.jmh" version "0.6.6" 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.13.1"
|
|
mavenBom "io.netty:netty-bom:4.1.75.Final"
|
|
mavenBom "io.projectreactor:reactor-bom:2020.0.17"
|
|
mavenBom "io.r2dbc:r2dbc-bom:Borca-RELEASE"
|
|
mavenBom "io.rsocket:rsocket-bom:1.1.1"
|
|
mavenBom "org.eclipse.jetty:jetty-bom:11.0.8"
|
|
mavenBom "org.jetbrains.kotlin:kotlin-bom:1.6.20-RC"
|
|
mavenBom "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.0"
|
|
mavenBom "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.3.2"
|
|
mavenBom "org.junit:junit-bom:5.8.2"
|
|
}
|
|
dependencies {
|
|
dependencySet(group: 'org.apache.logging.log4j', version: '2.17.2') {
|
|
entry 'log4j-api'
|
|
entry 'log4j-core'
|
|
entry 'log4j-jul'
|
|
entry 'log4j-slf4j-impl'
|
|
}
|
|
dependency "org.slf4j:slf4j-api:1.7.36"
|
|
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.8') {
|
|
entry 'aspectjrt'
|
|
entry 'aspectjtools'
|
|
entry 'aspectjweaver'
|
|
}
|
|
dependencySet(group: 'org.apache.groovy', version: '4.0.1') {
|
|
entry 'groovy'
|
|
entry 'groovy-jsr223'
|
|
entry 'groovy-templates' // requires findbugs for warning-free compilation
|
|
entry 'groovy-xml'
|
|
}
|
|
|
|
dependency "io.reactivex.rxjava3:rxjava:3.1.3"
|
|
dependency "io.smallrye.reactive:mutiny:1.4.0"
|
|
dependency "io.projectreactor.tools:blockhound:1.0.6.RELEASE"
|
|
|
|
dependency "com.fasterxml:aalto-xml:1.3.1"
|
|
dependency("com.fasterxml.woodstox:woodstox-core:6.2.8") {
|
|
exclude group: "stax", name: "stax-api"
|
|
}
|
|
dependency "com.google.code.gson:gson:2.8.9"
|
|
dependency "com.google.protobuf:protobuf-java-util:3.19.3"
|
|
dependency "com.googlecode.protobuf-java-format:protobuf-java-format:1.4"
|
|
dependency "com.thoughtworks.qdox:qdox:2.0.1"
|
|
dependency("com.thoughtworks.xstream:xstream:1.4.18") {
|
|
exclude group: "xpp3", name: "xpp3_min"
|
|
exclude group: "xmlpull", name: "xmlpull"
|
|
}
|
|
dependency "org.eclipse:yasson:2.0.4"
|
|
dependency("org.codehaus.jettison:jettison:1.3.8") {
|
|
exclude group: "stax", name: "stax-api"
|
|
}
|
|
dependency "org.ogce:xpp3:1.1.6"
|
|
dependency "org.yaml:snakeyaml:1.30"
|
|
|
|
dependency "com.h2database:h2:2.1.210"
|
|
dependency "com.github.ben-manes.caffeine:caffeine:3.0.5"
|
|
dependency "com.github.librepdf:openpdf:1.3.26"
|
|
dependency "com.rometools:rome:1.18.0"
|
|
dependency "commons-io:commons-io:2.11.0"
|
|
dependency "io.vavr:vavr:0.10.4"
|
|
dependency "net.sf.jopt-simple:jopt-simple:5.0.4"
|
|
dependencySet(group: 'org.apache.activemq', version: '5.16.2') {
|
|
entry 'activemq-broker'
|
|
entry('activemq-kahadb-store') {
|
|
exclude group: "org.springframework", name: "spring-context"
|
|
}
|
|
entry 'activemq-stomp'
|
|
}
|
|
dependency "org.apache.commons:commons-pool2:2.9.0"
|
|
dependencySet(group: 'org.apache.derby', version: '10.14.2.0') {
|
|
entry 'derby'
|
|
entry 'derbyclient'
|
|
}
|
|
dependency "org.apache.poi:poi-ooxml:5.2.0"
|
|
dependency "org.apache-extras.beanshell:bsh:2.0b6"
|
|
dependency "org.freemarker:freemarker:2.3.31"
|
|
dependency "org.hsqldb:hsqldb:2.5.2"
|
|
dependency "org.quartz-scheduler:quartz:2.3.2"
|
|
dependency "org.ehcache:jcache:1.0.1"
|
|
dependency "org.ehcache:ehcache:3.4.0"
|
|
dependency "org.hibernate:hibernate-core-jakarta:5.6.6.Final"
|
|
dependency "org.hibernate:hibernate-validator:7.0.4.Final"
|
|
dependency "org.webjars:webjars-locator-core:0.48"
|
|
dependency "org.webjars:underscorejs:1.8.3"
|
|
|
|
dependencySet(group: 'org.apache.tomcat', version: '10.0.14') {
|
|
entry 'tomcat-util'
|
|
entry('tomcat-websocket') {
|
|
exclude group: "org.apache.tomcat", name: "tomcat-servlet-api"
|
|
exclude group: "org.apache.tomcat", name: "tomcat-websocket-api"
|
|
}
|
|
}
|
|
dependencySet(group: 'org.apache.tomcat.embed', version: '10.0.14') {
|
|
entry 'tomcat-embed-core'
|
|
entry 'tomcat-embed-websocket'
|
|
}
|
|
dependencySet(group: 'io.undertow', version: '2.2.16.Final') {
|
|
entry 'undertow-core'
|
|
entry 'undertow-servlet-jakarta'
|
|
entry 'undertow-websockets-jsr-jakarta'
|
|
}
|
|
|
|
dependency "org.eclipse.jetty:jetty-reactive-httpclient:3.0.5"
|
|
dependency 'org.apache.httpcomponents.client5:httpclient5:5.1.3'
|
|
dependency 'org.apache.httpcomponents.core5:httpcore5-reactive:5.1.3'
|
|
dependency("org.apache.httpcomponents:httpclient:4.5.13") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependencySet(group: 'com.squareup.okhttp3', version: '3.14.9') {
|
|
entry 'okhttp'
|
|
entry 'mockwebserver'
|
|
}
|
|
|
|
dependency "org.jruby:jruby:9.3.3.0"
|
|
dependency "org.python:jython-standalone:2.7.1"
|
|
dependency "org.mozilla:rhino:1.7.11"
|
|
|
|
dependency("org.dom4j:dom4j:2.1.3") {
|
|
exclude group: 'javax.xml.bind', name: "jaxb-api"
|
|
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.2") {
|
|
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.4.0"
|
|
dependency "org.junit.support:testng-engine:1.0.1"
|
|
dependency "org.hamcrest:hamcrest:2.1"
|
|
dependency "org.awaitility:awaitility:3.1.6"
|
|
dependency "org.assertj:assertj-core:3.22.0"
|
|
dependencySet(group: 'org.xmlunit', version: '2.9.0') {
|
|
entry 'xmlunit-assertj'
|
|
entry('xmlunit-matchers') {
|
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
|
}
|
|
}
|
|
dependencySet(group: 'org.mockito', version: '4.4.0') {
|
|
entry('mockito-core') {
|
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
|
}
|
|
entry 'mockito-junit-jupiter'
|
|
}
|
|
dependency "io.mockk:mockk:1.12.1"
|
|
|
|
dependency("net.sourceforge.htmlunit:htmlunit:2.59.0") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency("org.seleniumhq.selenium:htmlunit-driver:2.59.0") {
|
|
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.6.0"
|
|
dependency "org.bouncycastle:bcpkix-jdk15on:1.66"
|
|
|
|
dependency "javax.cache:cache-api:1.1.1"
|
|
dependency "javax.money:money-api:1.1"
|
|
dependency "org.javamoney:moneta:1.4.2"
|
|
|
|
dependency "jakarta.activation:jakarta.activation-api:2.0.1"
|
|
dependency "jakarta.annotation:jakarta.annotation-api:2.0.0"
|
|
dependency "jakarta.ejb:jakarta.ejb-api:4.0.0"
|
|
dependency "jakarta.el:jakarta.el-api:4.0.0"
|
|
dependency "jakarta.enterprise.concurrent:jakarta.enterprise.concurrent-api:2.0.0"
|
|
dependency "jakarta.faces:jakarta.faces-api:3.0.0"
|
|
dependency "jakarta.inject:jakarta.inject-api:2.0.0"
|
|
dependency "jakarta.inject:jakarta.inject-tck:2.0.1"
|
|
dependency "jakarta.interceptor:jakarta.interceptor-api:2.0.0"
|
|
dependency "jakarta.jms:jakarta.jms-api:3.0.0"
|
|
dependency "jakarta.json:jakarta.json-api:2.0.1"
|
|
dependency "jakarta.json.bind:jakarta.json.bind-api:2.0.0"
|
|
dependency "jakarta.mail:jakarta.mail-api:2.0.1"
|
|
dependency "jakarta.persistence:jakarta.persistence-api:3.0.0"
|
|
dependency "jakarta.resource:jakarta.resource-api:2.0.0"
|
|
dependency "jakarta.servlet:jakarta.servlet-api:5.0.0"
|
|
dependency "jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.0.0"
|
|
dependency "jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:2.0.0"
|
|
dependency "jakarta.transaction:jakarta.transaction-api:2.0.0"
|
|
dependency "jakarta.validation:jakarta.validation-api:3.0.0"
|
|
dependency "jakarta.websocket:jakarta.websocket-api:2.0.0"
|
|
dependency "jakarta.xml.bind:jakarta.xml.bind-api:3.0.1"
|
|
|
|
dependency "com.sun.activation:jakarta.activation:2.0.1"
|
|
dependency "com.sun.mail:jakarta.mail:2.0.1"
|
|
dependencySet(group: 'com.sun.xml.bind', version: '3.0.2') {
|
|
entry 'jaxb-core'
|
|
entry 'jaxb-impl'
|
|
entry 'jaxb-xjc'
|
|
}
|
|
|
|
// 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:jakarta.el:4.0.2"
|
|
dependency "org.glassfish.tyrus:tyrus-container-servlet:2.0.1"
|
|
dependency "org.eclipse.persistence:org.eclipse.persistence.jpa:3.0.2"
|
|
}
|
|
generatedPomCustomization {
|
|
enabled = false
|
|
}
|
|
resolutionStrategy {
|
|
cacheChangingModulesFor 0, "seconds"
|
|
}
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url "https://repo.spring.io/libs-spring-framework-build" }
|
|
}
|
|
}
|
|
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/toolchains.gradle"
|
|
apply from: "${rootDir}/gradle/ide.gradle"
|
|
|
|
pluginManager.withPlugin("kotlin") {
|
|
apply plugin: "org.jetbrains.dokka"
|
|
apply from: "${rootDir}/gradle/docs-dokka.gradle"
|
|
|
|
compileKotlin {
|
|
kotlinOptions {
|
|
languageVersion = "1.6"
|
|
apiVersion = "1.6"
|
|
freeCompilerArgs = ["-Xjsr305=strict", "-Xsuppress-version-warnings", "-opt-in=kotlin.RequiresOptIn"]
|
|
allWarningsAsErrors = true
|
|
}
|
|
}
|
|
compileTestKotlin {
|
|
kotlinOptions {
|
|
freeCompilerArgs = ["-Xjsr305=strict", "-opt-in=kotlin.RequiresOptIn"]
|
|
}
|
|
}
|
|
}
|
|
|
|
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 = "9.3"
|
|
configDirectory.set(rootProject.file("src/checkstyle"))
|
|
}
|
|
|
|
dependencies {
|
|
testImplementation("org.junit.jupiter:junit-jupiter-api")
|
|
testImplementation("org.junit.jupiter:junit-jupiter-params")
|
|
testImplementation("org.junit.platform:junit-platform-suite-api")
|
|
testImplementation("org.mockito:mockito-core")
|
|
testImplementation("org.mockito:mockito-junit-jupiter")
|
|
testImplementation("io.mockk:mockk")
|
|
testImplementation("org.assertj:assertj-core")
|
|
// Pull in the latest JUnit 5 Launcher API to ensure proper support in IDEs.
|
|
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
|
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
|
testRuntimeOnly("org.junit.platform:junit-platform-suite-engine")
|
|
testRuntimeOnly("org.apache.logging.log4j:log4j-core")
|
|
testRuntimeOnly("org.apache.logging.log4j:log4j-jul")
|
|
testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl")
|
|
// 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.31")
|
|
}
|
|
|
|
ext.javadocLinks = [
|
|
"https://docs.oracle.com/en/java/javase/17/docs/api/",
|
|
"https://jakarta.ee/specifications/platform/9/apidocs/",
|
|
"https://docs.oracle.com/cd/E13222_01/wls/docs90/javadocs/", // CommonJ
|
|
"https://www.ibm.com/docs/api/v1/content/SSEQTP_8.5.5/com.ibm.websphere.javadoc.doc/web/apidocs/",
|
|
"https://docs.jboss.org/jbossas/javadoc/4.0.5/connector/",
|
|
"https://docs.jboss.org/jbossas/javadoc/7.1.2.Final/",
|
|
"https://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
|
|
"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-5.1.x/current/httpclient5/apidocs/",
|
|
"https://projectreactor.io/docs/test/release/api/",
|
|
"https://junit.org/junit4/javadoc/4.13.2/",
|
|
// TODO Uncomment link to JUnit 5 docs once we have sorted out
|
|
// the following warning in the build.
|
|
//
|
|
// warning: The code being documented uses packages in the unnamed module, but the packages defined in https://junit.org/junit5/docs/5.8.1/api/ are in named modules.
|
|
//
|
|
// "https://junit.org/junit5/docs/5.8.2/api/",
|
|
"https://www.reactive-streams.org/reactive-streams-1.0.3-javadoc/",
|
|
"https://javadoc.io/static/io.rsocket/rsocket-core/1.1.1/",
|
|
"https://r2dbc.io/spec/0.9.1.RELEASE/api/",
|
|
// The external Javadoc link for JSR 305 must come last to ensure that types from
|
|
// JSR 250 (such as @PostConstruct) are still supported. This is due to the fact
|
|
// that JSR 250 and JSR 305 both define types in javax.annotation, which results
|
|
// in a split package, and the javadoc tool does not support split packages
|
|
// across multiple external Javadoc sites.
|
|
"https://www.javadoc.io/doc/com.google.code.findbugs/jsr305/3.0.2/"
|
|
] as String[]
|
|
}
|
|
|
|
configure(moduleProjects) { project ->
|
|
apply from: "${rootDir}/gradle/spring-module.gradle"
|
|
}
|
|
|
|
configure(rootProject) {
|
|
description = "Spring Framework"
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|