mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-05-02 20:09:31 +01:00
417354da8a
Prior to this commit, the generated POMs for Spring Framework modules would contain unneeded/harmful information from the Spring Framework build: 1. The BOM imports applied to each module by the dependency management plugin, for example for Netty or Reactor Netty. Spring should not export that opinion to its POMs. 2. The exclusion of "org.slf4:jcl-over-slf4j" from *all* dependencies, which made the POMs much larger than necessary and suggested to developers that they should exclude it as well when using all those listed dependencies. In fact, only Apache Tiles currently brings that transitively. This commit removes that information from the POMs. The dependencyManagement Gradle plugin is disabled for POM generation and we manually resolve the dependency versions during the generation phase. The Gradle build is streamlined to exclude "org.slf4:jcl-over-slf4j" only when necessary. Issue: SPR-16893
109 lines
3.8 KiB
Groovy
109 lines
3.8 KiB
Groovy
description = "Spring Core"
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom "io.projectreactor:reactor-bom:${reactorVersion}"
|
|
mavenBom "io.netty:netty-bom:${nettyVersion}"
|
|
}
|
|
}
|
|
|
|
// As of Spring 4.0.3, spring-core includes asm 5.x and repackages cglib 3.2, inlining
|
|
// both into the spring-core jar. cglib 3.2 itself depends on asm 5.x and is therefore
|
|
// further transformed by the JarJar task to depend on org.springframework.asm; this
|
|
// avoids including two different copies of asm unnecessarily.
|
|
def cglibVersion = "3.2.6"
|
|
def objenesisVersion = "2.6"
|
|
|
|
configurations {
|
|
jarjar
|
|
cglib
|
|
objenesis
|
|
}
|
|
|
|
task cglibRepackJar(type: Jar) { repackJar ->
|
|
repackJar.baseName = "spring-cglib-repack"
|
|
repackJar.version = cglibVersion
|
|
|
|
doLast() {
|
|
project.ant {
|
|
taskdef name: "jarjar", classname: "com.tonicsystems.jarjar.JarJarTask",
|
|
classpath: configurations.jarjar.asPath
|
|
jarjar(destfile: repackJar.archivePath) {
|
|
configurations.cglib.each { originalJar ->
|
|
zipfileset(src: originalJar)
|
|
}
|
|
// Repackage net.sf.cglib => org.springframework.cglib
|
|
rule(pattern: "net.sf.cglib.**", result: "org.springframework.cglib.@1")
|
|
// As mentioned above, transform cglib's internal asm dependencies from
|
|
// org.objectweb.asm => org.springframework.asm. Doing this counts on the
|
|
// the fact that Spring and cglib depend on the same version of asm!
|
|
rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task objenesisRepackJar(type: Jar) { repackJar ->
|
|
repackJar.baseName = "spring-objenesis-repack"
|
|
repackJar.version = objenesisVersion
|
|
|
|
doLast() {
|
|
project.ant {
|
|
taskdef name: "jarjar", classname: "com.tonicsystems.jarjar.JarJarTask",
|
|
classpath: configurations.jarjar.asPath
|
|
jarjar(destfile: repackJar.archivePath) {
|
|
configurations.objenesis.each { originalJar ->
|
|
zipfileset(src: originalJar)
|
|
}
|
|
// Repackage org.objenesis => org.springframework.objenesis
|
|
rule(pattern: "org.objenesis.**", result: "org.springframework.objenesis.@1")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
cglib("cglib:cglib:${cglibVersion}@jar")
|
|
objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
|
|
jarjar("com.googlecode.jarjar:jarjar:1.3")
|
|
|
|
compile(files(cglibRepackJar))
|
|
compile(files(objenesisRepackJar))
|
|
compile(project(":spring-jcl"))
|
|
optional("net.sf.jopt-simple:jopt-simple:5.0.4")
|
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
|
|
optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
|
|
optional("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")
|
|
optional("io.projectreactor:reactor-core")
|
|
optional("io.reactivex:rxjava:${rxjavaVersion}")
|
|
optional("io.reactivex:rxjava-reactive-streams:${rxjavaAdapterVersion}")
|
|
optional("io.reactivex.rxjava2:rxjava:${rxjava2Version}")
|
|
optional("io.netty:netty-buffer")
|
|
testCompile("io.projectreactor:reactor-test")
|
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
|
|
testCompile("org.xmlunit:xmlunit-matchers:2.6.0")
|
|
testCompile("javax.xml.bind:jaxb-api:2.3.0")
|
|
testCompile("com.fasterxml.woodstox:woodstox-core:5.1.0") {
|
|
exclude group: "stax", module: "stax-api"
|
|
}
|
|
}
|
|
|
|
jar {
|
|
// Inline repackaged cglib classes directly into spring-core jar
|
|
dependsOn cglibRepackJar
|
|
from(zipTree(cglibRepackJar.archivePath)) {
|
|
include "org/springframework/cglib/**"
|
|
exclude "org/springframework/cglib/core/AbstractClassGenerator*.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 objenesisRepackJar
|
|
from(zipTree(objenesisRepackJar.archivePath)) {
|
|
include "org/springframework/objenesis/**"
|
|
}
|
|
}
|