Files
spring-framework/spring-core/spring-core.gradle
T
gregw 0a60c622cc Implement Eclipse Jetty core HTTP handler adapter
This provides an implementation of an HTTP Handler Adapter that is coded
directly to the Eclipse Jetty core API, bypassing any servlet
implementation.

This includes a Jetty implementation of the spring `WebSocketClient`
interface, `JettyWebSocketClient`, using an explicit dependency to the
jetty-websocket-api.

Closes gh-32097

Co-authored-by: Lachlan Roberts <lachlan@webtide.com>
Co-authored-by: Arjen Poutsma <arjen.poutsma@broadcom.com>
2024-07-08 18:36:46 +02:00

163 lines
5.2 KiB
Groovy

import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.springframework.build.shadow.ShadowSource
plugins {
id 'me.champeau.mrjar'
}
description = "Spring Core"
apply plugin: "kotlin"
apply plugin: "kotlinx-serialization"
multiRelease {
targetVersions 17, 21
}
def javapoetVersion = "1.13.0"
def objenesisVersion = "3.3"
configurations {
java21Api.extendsFrom(api)
java21Implementation.extendsFrom(implementation)
javapoet
objenesis
graalvm
}
task javapoetRepackJar(type: ShadowJar) {
archiveBaseName = 'spring-javapoet-repack'
archiveVersion = javapoetVersion
configurations = [project.configurations.javapoet]
relocate('com.squareup.javapoet', 'org.springframework.javapoet')
}
task javapoetSource(type: ShadowSource) {
configurations = [project.configurations.javapoet]
relocate('com.squareup.javapoet', 'org.springframework.javapoet')
outputDirectory = file("build/shadow-source/javapoet")
}
task javapoetSourceJar(type: Jar) {
archiveBaseName = 'spring-javapoet-repack'
archiveVersion = javapoetVersion
archiveClassifier = 'sources'
from javapoetSource
}
task objenesisRepackJar(type: ShadowJar) {
archiveBaseName = 'spring-objenesis-repack'
archiveVersion = objenesisVersion
configurations = [project.configurations.objenesis]
relocate('org.objenesis', 'org.springframework.objenesis')
}
task objenesisSource(type: ShadowSource) {
configurations = [project.configurations.objenesis]
relocate('org.objenesis', 'org.springframework.objenesis')
outputDirectory = file("build/shadow-source/objenesis")
}
task objenesisSourceJar(type: Jar) {
archiveBaseName = 'spring-objenesis-repack'
archiveVersion = objenesisVersion
archiveClassifier = 'sources'
from objenesisSource
}
dependencies {
javapoet("com.squareup:javapoet:${javapoetVersion}@jar")
objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
api(files(javapoetRepackJar))
api(files(objenesisRepackJar))
api(project(":spring-jcl"))
compileOnly("io.projectreactor.tools:blockhound")
compileOnly("org.graalvm.sdk:graal-sdk")
optional("io.micrometer:context-propagation")
optional("io.netty:netty-buffer")
optional("io.netty:netty5-buffer")
optional("io.projectreactor:reactor-core")
optional("io.reactivex.rxjava3:rxjava")
optional("io.smallrye.reactive:mutiny")
optional("net.sf.jopt-simple:jopt-simple")
optional("org.aspectj:aspectjweaver")
optional("org.eclipse.jetty:jetty-io")
optional("org.jetbrains.kotlin:kotlin-reflect")
optional("org.jetbrains.kotlin:kotlin-stdlib")
optional("org.jetbrains.kotlinx:kotlinx-coroutines-core")
optional("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
testFixturesImplementation("com.google.code.findbugs:jsr305")
testFixturesImplementation("io.projectreactor:reactor-test")
testFixturesImplementation("org.assertj:assertj-core")
testFixturesImplementation("org.junit.platform:junit-platform-launcher")
testFixturesImplementation("org.junit.jupiter:junit-jupiter-api")
testFixturesImplementation("org.junit.jupiter:junit-jupiter-params")
testFixturesImplementation("org.xmlunit:xmlunit-assertj")
testImplementation("com.fasterxml.jackson.core:jackson-databind")
testImplementation("com.fasterxml.woodstox:woodstox-core")
testImplementation("com.google.code.findbugs:jsr305")
testImplementation("com.squareup.okhttp3:mockwebserver")
testImplementation("io.projectreactor:reactor-test")
testImplementation("io.projectreactor.tools:blockhound")
testImplementation("jakarta.annotation:jakarta.annotation-api")
testImplementation("jakarta.xml.bind:jakarta.xml.bind-api")
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
testImplementation("org.mockito:mockito-core")
testImplementation("org.skyscreamer:jsonassert")
testImplementation("org.xmlunit:xmlunit-assertj")
testImplementation("org.xmlunit:xmlunit-matchers")
}
jar {
manifest.attributes["Dependencies"] = "jdk.unsupported,org.jboss.vfs" // for WildFly (Objenesis and VfsUtils)
dependsOn javapoetRepackJar
from(zipTree(javapoetRepackJar.archiveFile)) {
include "org/springframework/javapoet/**"
}
dependsOn objenesisRepackJar
from(zipTree(objenesisRepackJar.archiveFile)) {
include "org/springframework/objenesis/**"
}
}
test {
// Make sure the classes dir is used on the test classpath (required by ResourceTests).
// When test fixtures are involved, the JAR is used by default.
classpath = sourceSets.main.output.classesDirs + files(sourceSets.main.output.resourcesDir) + classpath - files(jar.archiveFile)
// Ensure that BlockHound tests run on JDK 13+. For details, see:
// https://github.com/reactor/BlockHound/issues/33
jvmArgs += [
"-XX:+AllowRedefinitionToAddDeleteMethods"
]
}
sourcesJar {
dependsOn javapoetSourceJar
dependsOn objenesisSourceJar
from javapoetSource
from objenesisSource
}
eclipse {
synchronizationTasks javapoetSourceJar, objenesisSourceJar
classpath {
file {
whenMerged {
def pattern = ~/\/spring-\w+-repack-/
entries.forEach {
if (pattern.matcher(it.path).find()) {
def sourcesJar = it.path.replace('.jar', '-sources.jar')
it.sourcePath = fileReference(file(sourcesJar))
}
}
}
}
}
}
tasks['eclipse'].dependsOn(javapoetRepackJar, javapoetSourceJar, objenesisRepackJar, objenesisSourceJar)