Previously, the remote build cache was only enabled if the GRADLE_ENTERPRISE_URL environment variable was configured. This meant that contributors would not benefit from the build time improvements of the caching without some additional setup. This commit updates the buildCache configuration so that reading from the remote build cache at https://ge.spring.io is enabled for all. Pushing to the cache continues to be disabled unless the required credentials are provided. Build scan configuration has also been updated in line with this change. While the server URL is now hardcoded, publishing is still opt-in via an environment variable. The exact mechanism by which someone can opt in will change in the future once some server-side changes have been made. At this point, only a change to publishAlwaysIf should be necessary. Closes gh-24105
429 lines
15 KiB
Groovy
429 lines
15 KiB
Groovy
buildscript {
|
|
dependencies {
|
|
classpath 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.16'
|
|
classpath 'io.spring.asciidoctor:spring-asciidoctor-extensions:0.1.3.RELEASE'
|
|
}
|
|
}
|
|
|
|
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.convert' version '1.5.8'
|
|
id 'io.spring.nohttp' version '0.0.3.RELEASE'
|
|
id 'de.undercouch.download' version '4.0.0'
|
|
id 'com.gradle.build-scan' version '2.4.2'
|
|
id "com.jfrog.artifactory" version '4.11.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'} }
|
|
}
|
|
publishAlwaysIf(System.getenv('GRADLE_ENTERPRISE_URL') != null)
|
|
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.1"
|
|
mavenBom "io.netty:netty-bom:4.1.43.Final"
|
|
mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR2"
|
|
mavenBom "io.rsocket:rsocket-bom:1.0.0-RC5"
|
|
mavenBom "org.eclipse.jetty:jetty-bom:9.4.24.v20191120"
|
|
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.12.1') {
|
|
entry 'log4j-api'
|
|
entry 'log4j-core'
|
|
entry 'log4j-slf4j-impl'
|
|
entry 'log4j-jul'
|
|
}
|
|
dependency "org.slf4j:slf4j-api:1.7.29"
|
|
|
|
dependency "com.google.code.findbugs:jsr305:3.0.2"
|
|
|
|
dependencySet(group: 'org.aspectj', version: '1.9.4') {
|
|
entry 'aspectjrt'
|
|
entry 'aspectjtools'
|
|
entry 'aspectjweaver'
|
|
}
|
|
dependencySet(group: 'org.codehaus.groovy', version: '2.5.8') {
|
|
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.15"
|
|
|
|
dependency "com.caucho:hessian:4.0.62"
|
|
dependency "com.fasterxml:aalto-xml:1.2.2"
|
|
dependency("com.fasterxml.woodstox:woodstox-core:6.0.2") {
|
|
exclude group: "stax", name: "stax-api"
|
|
}
|
|
dependency "com.google.code.gson:gson:2.8.6"
|
|
dependency "com.google.protobuf:protobuf-java-util:3.10.0"
|
|
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.1"
|
|
dependency("org.codehaus.jettison:jettison:1.3.8") {
|
|
exclude group: "stax", name: "stax-api"
|
|
}
|
|
dependencySet(group: 'org.jibx', version: '1.3.1') {
|
|
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.0"
|
|
dependency "com.github.librepdf:openpdf:1.3.11"
|
|
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.6.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.9.Final"
|
|
dependency "org.hibernate:hibernate-validator:6.1.0.Final"
|
|
dependency "org.webjars:webjars-locator-core:0.43"
|
|
dependency "org.webjars:underscorejs:1.8.3"
|
|
|
|
dependencySet(group: 'org.apache.tomcat', version: '9.0.29') {
|
|
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.29') {
|
|
entry 'tomcat-embed-core'
|
|
entry 'tomcat-embed-websocket'
|
|
}
|
|
dependencySet(group: 'io.undertow', version: '2.0.28.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.4') {
|
|
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.0.3"
|
|
|
|
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.1.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.4"
|
|
dependency "org.eclipse.persistence:org.eclipse.persistence.jpa:2.7.5"
|
|
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: "checkstyle"
|
|
apply plugin: 'org.springframework.build.compile'
|
|
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.26"
|
|
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" }
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
asciidoctor("io.spring.asciidoctor:spring-asciidoctor-extensions:0.1.3.RELEASE")
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
mavenJava(MavenPublication) {
|
|
artifact docsZip
|
|
artifact schemaZip
|
|
artifact distZip
|
|
}
|
|
}
|
|
}
|
|
}
|