This commit removes the JBoss Application Server external javadoc link, which covers too many packages and can thus problematically take precedence for said packages and lead to dead links. It is replaced by Hibernate javadocs for `org.hibernate.*` packages, JakartaEE and jsr305 for annotations. We lose a limited number of links around org.xnio classes and Hibernate-and-JTA-related classes, as a trade-off. See gh-30455 See gh-30428
175 lines
6.6 KiB
Groovy
175 lines
6.6 KiB
Groovy
plugins {
|
|
id 'io.spring.nohttp' version '0.0.11'
|
|
id 'io.freefair.aspectj' version '8.0.1' apply false
|
|
// kotlinVersion is managed in gradle.properties
|
|
id 'org.jetbrains.kotlin.plugin.serialization' version "${kotlinVersion}" apply false
|
|
id 'org.jetbrains.dokka' version '1.8.10'
|
|
id 'org.asciidoctor.jvm.convert' version '3.3.2' apply false
|
|
id 'org.asciidoctor.jvm.pdf' version '3.3.2' apply false
|
|
id 'org.unbroken-dome.xjc' version '2.0.0' apply false
|
|
id 'com.github.ben-manes.versions' version '0.46.0'
|
|
id 'com.github.johnrengelman.shadow' version '8.1.1' apply false
|
|
id 'de.undercouch.download' version '5.4.0'
|
|
id 'me.champeau.jmh' version '0.7.0' apply false
|
|
}
|
|
|
|
ext {
|
|
moduleProjects = subprojects.findAll { it.name.startsWith("spring-") }
|
|
javaProjects = subprojects - project(":framework-bom") - project(":framework-platform")
|
|
}
|
|
|
|
configure(allprojects) { project ->
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
url "https://repo.spring.io/milestone"
|
|
content {
|
|
// Netty 5 optional support
|
|
includeGroup 'io.projectreactor.netty'
|
|
}
|
|
}
|
|
maven { url "https://repo.spring.io/libs-spring-framework-build" }
|
|
if (version.contains('-')) {
|
|
maven { url "https://repo.spring.io/milestone" }
|
|
}
|
|
if (version.endsWith('-SNAPSHOT')) {
|
|
maven { url "https://repo.spring.io/snapshot" }
|
|
}
|
|
}
|
|
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.conventions'
|
|
apply from: "${rootDir}/gradle/toolchains.gradle"
|
|
apply from: "${rootDir}/gradle/ide.gradle"
|
|
|
|
configurations {
|
|
dependencyManagement {
|
|
canBeConsumed = false
|
|
canBeResolved = false
|
|
visible = false
|
|
}
|
|
matching { it.name.endsWith("Classpath") }.all { it.extendsFrom(dependencyManagement) }
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
include(["**/*Tests.class", "**/*Test.class"])
|
|
systemProperty("java.awt.headless", "true")
|
|
systemProperty("testGroups", project.properties.get("testGroups"))
|
|
systemProperty("io.netty.leakDetection.level", "paranoid")
|
|
systemProperty("io.netty5.leakDetectionLevel", "paranoid")
|
|
systemProperty("io.netty5.leakDetection.targetRecords", "32")
|
|
systemProperty("io.netty5.buffer.lifecycleTracingEnabled", "true")
|
|
systemProperty("io.netty5.buffer.leakDetectionEnabled", "true")
|
|
jvmArgs(["--add-opens=java.base/java.lang=ALL-UNNAMED",
|
|
"--add-opens=java.base/java.util=ALL-UNNAMED"])
|
|
}
|
|
|
|
checkstyle {
|
|
toolVersion = "10.10.0"
|
|
configDirectory.set(rootProject.file("src/checkstyle"))
|
|
}
|
|
|
|
tasks.named("checkstyleMain").configure {
|
|
maxHeapSize = "1g"
|
|
}
|
|
|
|
tasks.named("checkstyleTest").configure {
|
|
maxHeapSize = "1g"
|
|
}
|
|
|
|
dependencies {
|
|
dependencyManagement(enforcedPlatform(dependencies.project(path: ":framework-platform")))
|
|
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-slf4j2-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.38")
|
|
}
|
|
|
|
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 and weblogic.* packages
|
|
"https://www.ibm.com/docs/api/v1/content/SSEQTP_8.5.5/com.ibm.websphere.javadoc.doc/web/apidocs/", // com.ibm.*
|
|
"https://docs.jboss.org/jbossas/javadoc/4.0.5/connector/", // org.jboss.resource.*
|
|
"https://docs.jboss.org/hibernate/orm/5.6/javadocs/",
|
|
"https://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
|
|
"https://www.quartz-scheduler.org/api/2.3.0/",
|
|
"https://www.javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/2.14.1/",
|
|
"https://www.javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/2.14.1/",
|
|
"https://www.javadoc.io/doc/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.14.1/",
|
|
"https://hc.apache.org/httpcomponents-client-5.2.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 execute Gradle with Java 18+.
|
|
// See https://github.com/spring-projects/spring-framework/issues/27497
|
|
//
|
|
// "https://junit.org/junit5/docs/5.9.3/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/1.0.0.RELEASE/api/",
|
|
// Previously there could be a split-package issue between JSR250 and JSR305 javax.annotation packages,
|
|
// but since 6.0 JSR 250 annotations such as @Resource and @PostConstruct have been replaced by their
|
|
// JakartaEE equivalents in the jakarta.annotation package.
|
|
"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: "io.spring.nohttp"
|
|
apply plugin: 'org.springframework.build.api-diff'
|
|
|
|
nohttp {
|
|
source.exclude "**/test-output/**"
|
|
source.exclude "**/.gradle/**"
|
|
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" }
|
|
}
|
|
}
|
|
|
|
tasks.named("checkstyleNohttp").configure {
|
|
maxHeapSize = "1g"
|
|
}
|
|
|
|
}
|