mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
8f02e1088d
This commit adds support for the following two JVM system properties that control the Gradle build for alternative JDKs (i.e., a JDK other than the one used to launch the Gradle process). - customJavaHome: absolute path to the alternate JDK installation to use to compile Java code and execute tests. Setting this system property causes Groovy 3.0 RC3 to be used instead of 2.5.x. This system property is also used in spring-oxm.gradle to determine whether JiBX is supported. - customJavaSourceVersion: Java version supplied to the `--release` command line flag to control the Java source and target compatibility version. Supported versions include 9 or higher. Do not set this system property if Java 8 should be used. Examples: ./gradlew -DcustomJavaHome=/opt/java/jdk-14 test ./gradlew --no-build-cache -DcustomJavaHome=/opt/java/jdk-14 test ./gradlew -DcustomJavaHome=/opt/java/jdk-14 -DcustomJavaSourceVersion=14 test See gh-24474
422 lines
15 KiB
Groovy
422 lines
15 KiB
Groovy
plugins {
|
|
id 'io.spring.dependency-management' version '1.0.8.RELEASE' apply false
|
|
id 'org.jetbrains.kotlin.jvm' version '1.3.61' apply false
|
|
id 'org.jetbrains.dokka' version '0.9.18' apply false
|
|
id 'org.asciidoctor.jvm.convert' version '2.4.0'
|
|
id 'io.spring.nohttp' version '0.0.4.RELEASE'
|
|
id 'de.undercouch.download' version '4.0.0'
|
|
id 'com.gradle.build-scan' version '3.1.1'
|
|
id "com.jfrog.artifactory" version '4.12.0' apply false
|
|
id "io.freefair.aspectj" version "4.1.1" apply false
|
|
id "com.github.ben-manes.versions" version "0.24.0"
|
|
}
|
|
|
|
apply from: "$rootDir/gradle/build-scan-user-data.gradle"
|
|
buildScan {
|
|
captureTaskInputFiles = true
|
|
obfuscation {
|
|
ipAddresses { addresses -> addresses.collect { address -> '0.0.0.0'} }
|
|
}
|
|
publishAlways()
|
|
publishIfAuthenticated()
|
|
server = 'https://ge.spring.io'
|
|
}
|
|
|
|
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.10.2"
|
|
mavenBom "io.netty:netty-bom:4.1.45.Final"
|
|
mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR4"
|
|
mavenBom "io.rsocket:rsocket-bom:1.0.0-RC6"
|
|
mavenBom "org.eclipse.jetty:jetty-bom:9.4.26.v20200117"
|
|
mavenBom "org.jetbrains.kotlin:kotlin-bom:1.3.61"
|
|
mavenBom "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.3.2"
|
|
mavenBom "org.junit:junit-bom:5.5.2"
|
|
}
|
|
dependencies {
|
|
dependencySet(group: 'org.apache.logging.log4j', version: '2.13.0') {
|
|
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:jsr305:3.0.2"
|
|
|
|
dependencySet(group: 'org.aspectj', version: '1.9.5') {
|
|
entry 'aspectjrt'
|
|
entry 'aspectjtools'
|
|
entry 'aspectjweaver'
|
|
}
|
|
// If customJavaHome has been set, we assume we need Groovy 3.0 for testing purposes.
|
|
dependencySet(group: 'org.codehaus.groovy', version: System.getProperty("customJavaHome") ? '3.0.0-rc-3' : '2.5.9') {
|
|
entry 'groovy'
|
|
entry 'groovy-jsr223'
|
|
entry 'groovy-templates'
|
|
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.17"
|
|
|
|
dependency "com.caucho:hessian:4.0.62"
|
|
dependency "com.fasterxml:aalto-xml:1.2.2"
|
|
dependency("com.fasterxml.woodstox:woodstox-core:6.0.3") {
|
|
exclude group: "stax", name: "stax-api"
|
|
}
|
|
dependency "com.google.code.gson:gson:2.8.6"
|
|
dependency "com.google.protobuf:protobuf-java-util:3.11.1"
|
|
dependency "com.googlecode.protobuf-java-format:protobuf-java-format:1.4"
|
|
dependency("com.thoughtworks.xstream:xstream:1.4.11.1") {
|
|
exclude group: "xpp3", name: "xpp3_min"
|
|
exclude group: "xmlpull", name: "xmlpull"
|
|
}
|
|
dependency "org.apache.johnzon:johnzon-jsonb:1.2.3"
|
|
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.25"
|
|
|
|
dependency "com.h2database:h2:1.4.200"
|
|
dependency "com.github.ben-manes.caffeine:caffeine:2.8.1"
|
|
dependency "com.github.librepdf:openpdf:1.3.13"
|
|
dependency "com.rometools:rome:1.12.2"
|
|
dependency "commons-io:commons-io:2.5"
|
|
dependency "io.vavr:vavr:0.10.0"
|
|
dependency "net.sf.jopt-simple:jopt-simple:5.0.4"
|
|
dependencySet(group: 'org.apache.activemq', version: '5.8.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.7.0"
|
|
dependencySet(group: 'org.apache.derby', version: '10.14.2.0') {
|
|
entry 'derby'
|
|
entry 'derbyclient'
|
|
}
|
|
dependency "org.apache.poi:poi-ooxml:4.1.1"
|
|
dependency "org.beanshell:bsh:2.0b5"
|
|
dependency "org.freemarker:freemarker:2.3.29"
|
|
dependency "org.hsqldb:hsqldb:2.5.0"
|
|
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.10.Final"
|
|
dependency "org.hibernate:hibernate-validator:6.1.2.Final"
|
|
dependency "org.webjars:webjars-locator-core:0.43"
|
|
dependency "org.webjars:underscorejs:1.8.3"
|
|
|
|
dependencySet(group: 'org.apache.tomcat', version: '9.0.30') {
|
|
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.30') {
|
|
entry 'tomcat-embed-core'
|
|
entry 'tomcat-embed-websocket'
|
|
}
|
|
dependencySet(group: 'io.undertow', version: '2.0.29.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.6') {
|
|
entry 'okhttp'
|
|
entry 'mockwebserver'
|
|
}
|
|
dependency("org.apache.httpcomponents:httpclient:4.5.10") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency("org.apache.httpcomponents:httpasyncclient:4.1.4") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency "org.eclipse.jetty:jetty-reactive-httpclient:1.1.1"
|
|
|
|
dependency "org.jruby:jruby:9.2.9.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("dom4j:dom4j:1.6.1") {
|
|
exclude group: "xml-apis", name: "xml-apis"
|
|
}
|
|
dependency("jaxen:jaxen:1.1.1") {
|
|
exclude group: "xml-apis", name: "xml-apis"
|
|
exclude group: "xom", name: "xom"
|
|
exclude group: "xerces", name: "xercesImpl"
|
|
}
|
|
|
|
dependency("junit:junit:4.12") {
|
|
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:6.14.3"
|
|
dependency "org.hamcrest:hamcrest:2.1"
|
|
dependency "org.awaitility:awaitility:3.1.6"
|
|
dependency "org.assertj:assertj-core:3.14.0"
|
|
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.2.0') {
|
|
entry('mockito-core') {
|
|
exclude group: "org.hamcrest", name: "hamcrest-core"
|
|
}
|
|
entry 'mockito-junit-jupiter'
|
|
}
|
|
dependency "io.mockk:mockk:1.9.3"
|
|
|
|
dependency("net.sourceforge.htmlunit:htmlunit:2.36.0") {
|
|
exclude group: "commons-logging", name: "commons-logging"
|
|
}
|
|
dependency("org.seleniumhq.selenium:htmlunit-driver:2.36.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.4.0"
|
|
|
|
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.81"
|
|
dependency "joda-time:joda-time:2.10.5"
|
|
dependency "org.eclipse.persistence:org.eclipse.persistence.jpa:2.7.6"
|
|
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" }
|
|
}
|
|
}
|
|
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"
|
|
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.29"
|
|
configDir = 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.12/",
|
|
"https://junit.org/junit5/docs/5.5.2/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/**"
|
|
whitelistFile = project.file("src/nohttp/whitelist.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
|
|
}
|
|
}
|
|
}
|
|
}
|