As of GraalVM 23, a new and simplified reachability metadata format is available. Metadata now consists of a single "reachability-metadata.json" file that contains all the information previously spread in multiple files. The new format does not include some introspection flags, as they're now automatically included when a hint is registered against a type. Also, "typeReachable" has been renamed as "typeReached" to highlight the fact that the event considered is the static initialization of the type, not when the static analysis performed during native compilation is reaching the type. This new format ships with a JSON schema, which this commit is tested against. See gh-33847
164 lines
5.3 KiB
Groovy
164 lines
5.3 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.4"
|
|
|
|
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("com.networknt:json-schema-validator");
|
|
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)
|