You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
4.7 KiB
124 lines
4.7 KiB
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar |
|
|
|
description = "Spring Core" |
|
|
|
apply plugin: "kotlin" |
|
|
|
// spring-core includes asm, javapoet and repackages cglib, inlining all into the |
|
// spring-core jar. cglib itself depends on asm and is therefore further transformed by |
|
// the ShadowJar task to depend on org.springframework.asm; this avoids including two |
|
// different copies of asm. |
|
def cglibVersion = "3.3.0" |
|
def javapoetVersion = "1.13.0" |
|
def objenesisVersion = "3.2" |
|
|
|
configurations { |
|
cglib |
|
javapoet |
|
objenesis |
|
graalvm |
|
} |
|
|
|
task cglibRepackJar(type: ShadowJar) { |
|
archiveBaseName.set('spring-cglib-repack') |
|
archiveVersion.set(cglibVersion) |
|
configurations = [project.configurations.cglib] |
|
relocate 'net.sf.cglib', 'org.springframework.cglib' |
|
relocate 'org.objectweb.asm', 'org.springframework.asm' |
|
} |
|
|
|
task javapoetRepackJar(type: ShadowJar) { |
|
archiveBaseName.set('spring-javapoet-repack') |
|
archiveVersion.set(javapoetVersion) |
|
configurations = [project.configurations.javapoet] |
|
relocate 'com.squareup.javapoet', 'org.springframework.javapoet' |
|
} |
|
|
|
task objenesisRepackJar(type: ShadowJar) { |
|
archiveBaseName.set('spring-objenesis-repack') |
|
archiveVersion.set(objenesisVersion) |
|
configurations = [project.configurations.objenesis] |
|
relocate 'org.objenesis', 'org.springframework.objenesis' |
|
} |
|
|
|
dependencies { |
|
cglib("cglib:cglib:${cglibVersion}@jar") |
|
javapoet("com.squareup:javapoet:${javapoetVersion}@jar") |
|
objenesis("org.objenesis:objenesis:${objenesisVersion}@jar") |
|
graalvm(project(path: ":spring-core-graalvm", configuration: 'classesOnlyElements')) |
|
api(files(cglibRepackJar)) |
|
api(files(javapoetRepackJar)) |
|
api(files(objenesisRepackJar)) |
|
api(project(":spring-jcl")) |
|
compileOnly("io.projectreactor.tools:blockhound") |
|
optional("net.sf.jopt-simple:jopt-simple") |
|
optional("org.aspectj:aspectjweaver") |
|
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") |
|
optional("io.projectreactor:reactor-core") |
|
optional("io.reactivex.rxjava3:rxjava") |
|
optional("io.smallrye.reactive:mutiny") |
|
optional("io.netty:netty-buffer") |
|
testImplementation("jakarta.annotation:jakarta.annotation-api") |
|
testImplementation("jakarta.xml.bind:jakarta.xml.bind-api") |
|
testImplementation("com.google.code.findbugs:jsr305") |
|
testImplementation("com.fasterxml.woodstox:woodstox-core") |
|
testImplementation("org.xmlunit:xmlunit-assertj") |
|
testImplementation("org.xmlunit:xmlunit-matchers") |
|
testImplementation("io.projectreactor:reactor-test") |
|
testImplementation("io.projectreactor.tools:blockhound") |
|
testImplementation("org.skyscreamer:jsonassert") |
|
testFixturesImplementation("com.google.code.findbugs:jsr305") |
|
testFixturesImplementation("org.junit.platform:junit-platform-launcher") |
|
testFixturesImplementation("org.junit.jupiter:junit-jupiter-api") |
|
testFixturesImplementation("org.junit.jupiter:junit-jupiter-params") |
|
testFixturesImplementation("org.assertj:assertj-core") |
|
testFixturesImplementation("org.xmlunit:xmlunit-assertj") |
|
testFixturesImplementation("io.projectreactor:reactor-test") |
|
} |
|
|
|
jar { |
|
reproducibleFileOrder = true |
|
preserveFileTimestamps = false // maybe not necessary here, but good for reproducibility |
|
manifest.attributes["Dependencies"] = "jdk.unsupported" // for WildFly (-> Objenesis 3.2) |
|
|
|
// Inline repackaged cglib classes directly into spring-core jar |
|
dependsOn cglibRepackJar |
|
from(zipTree(cglibRepackJar.archivePath)) { |
|
include "org/springframework/cglib/**" |
|
exclude "org/springframework/cglib/beans/**" |
|
exclude "org/springframework/cglib/core/AbstractClassGenerator*.class" |
|
exclude "org/springframework/cglib/core/AsmApi*.class" |
|
exclude "org/springframework/cglib/core/KeyFactory.class" |
|
exclude "org/springframework/cglib/core/KeyFactory\$*.class" |
|
exclude "org/springframework/cglib/core/ReflectUtils*.class" |
|
exclude "org/springframework/cglib/proxy/Enhancer*.class" |
|
exclude "org/springframework/cglib/proxy/MethodProxy*.class" |
|
} |
|
|
|
dependsOn javapoetRepackJar |
|
from(zipTree(javapoetRepackJar.archivePath)) { |
|
include "org/springframework/javapoet/**" |
|
} |
|
|
|
dependsOn objenesisRepackJar |
|
from(zipTree(objenesisRepackJar.archivePath)) { |
|
include "org/springframework/objenesis/**" |
|
} |
|
|
|
from configurations.graalvm |
|
} |
|
|
|
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" |
|
] |
|
}
|
|
|