Skip to content

Commit

Permalink
Move modules to independent build files
Browse files Browse the repository at this point in the history
The main `build.gradle` file contains now only the common build
infrastructure; all module-specific build configurations have
been moved to their own build file.

Issue: SPR-15885
  • Loading branch information
bclozel committed Aug 21, 2017
1 parent 41cbc46 commit 2eeb428
Show file tree
Hide file tree
Showing 23 changed files with 747 additions and 814 deletions.
814 changes: 0 additions & 814 deletions build.gradle

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions buildSrc/spring-build-src.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description = "Exposes gradle buildSrc for IDE support"

apply plugin: "groovy"

dependencies {
compile gradleApi()
compile localGroovy()
}

configurations.archives.artifacts.clear()
9 changes: 9 additions & 0 deletions spring-aop/spring-aop.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
description = "Spring AOP"

dependencies {
compile(project(":spring-beans"))
compile(project(':spring-core'))
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
optional("org.apache.commons:commons-pool2:2.4.2")
optional("com.jamonapi:jamon:2.81")
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
description = "Spring Aspects"

// redefine the compileJava and compileTestJava tasks in order to
// compile sources with ajc instead of javac

Expand Down Expand Up @@ -81,3 +83,27 @@ compileTestJava {
}
}
}


dependencies {
aspects(project(":spring-orm"))
ajc("org.aspectj:aspectjtools:${aspectjVersion}")
rt("org.aspectj:aspectjrt:${aspectjVersion}")
compile("org.aspectj:aspectjweaver:${aspectjVersion}")
optional(project(":spring-aop")) // for @Async support
optional(project(":spring-beans")) // for @Configurable support
optional(project(":spring-context")) // for @Enable* support
optional(project(":spring-context-support")) // for JavaMail and JSR-107 support
optional(project(":spring-orm")) // for JPA exception translation support
optional(project(":spring-tx")) // for JPA, @Transactional support
optional("javax.cache:cache-api:1.0.0") // for JCache aspect
optional("javax.transaction:javax.transaction-api:1.2") // for @javax.transaction.Transactional support
testCompile(project(":spring-core")) // for CodeStyleAspect
testCompile(project(":spring-test"))
testCompile("javax.mail:javax.mail-api:${javamailVersion}")
}

eclipse.project {
natures += "org.eclipse.ajdt.ui.ajnature"
buildCommands = [new org.gradle.plugins.ide.eclipse.model.BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
}
8 changes: 8 additions & 0 deletions spring-context-indexer/spring-context-indexer.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
description = "Spring Context Indexer"

dependencies {
testCompile(project(":spring-context"))
testCompile("javax.inject:javax.inject:1")
testCompile("javax.annotation:javax.annotation-api:1.3")
testCompile("org.eclipse.persistence:javax.persistence:2.1.1")
}
26 changes: 26 additions & 0 deletions spring-context-support/spring-context-support.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
description = "Spring Context Support"

dependencies {
compile(project(":spring-beans"))
compile(project(":spring-context"))
compile(project(":spring-core"))
optional(project(":spring-jdbc")) // for Quartz support
optional(project(":spring-tx")) // for Quartz support
optional("javax.activation:activation:${activationVersion}")
optional("javax.mail:javax.mail-api:${javamailVersion}")
optional("javax.cache:cache-api:1.0.0")
optional("com.github.ben-manes.caffeine:caffeine:2.5.5")
optional("net.sf.ehcache:ehcache:2.10.4")
optional("org.quartz-scheduler:quartz:2.3.0")
optional("org.codehaus.fabric3.api:commonj:1.1.0")
optional("org.freemarker:freemarker:${freemarkerVersion}")
testCompile(project(":spring-context"))
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
testCompile("org.hibernate:hibernate-validator:6.0.1.Final")
testRuntime("org.ehcache:jcache:1.0.1")
testRuntime("org.ehcache:ehcache:3.3.1")
testRuntime("org.glassfish:javax.el:3.0.1-b08")
testRuntime("javax.annotation:javax.annotation-api:1.3")
testRuntime("com.sun.mail:javax.mail:${javamailVersion}")
}
32 changes: 32 additions & 0 deletions spring-context/spring-context.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
description = "Spring Context"

apply plugin: "groovy"

dependencies {
compile(project(":spring-aop"))
compile(project(":spring-beans"))
compile(project(":spring-expression"))
compile(project(':spring-core'))
optional(project(":spring-instrument"))
optional("javax.inject:javax.inject:1")
optional("javax.annotation:javax.annotation-api:1.3")
optional("javax.xml.ws:jaxws-api:${jaxwsVersion}")
optional("javax.ejb:javax.ejb-api:3.2")
optional("javax.interceptor:javax.interceptor-api:1.2")
optional("javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0")
optional("javax.money:money-api:1.0.1")
optional("javax.validation:validation-api:1.1.0.Final")
optional("org.hibernate:hibernate-validator:5.4.1.Final")
optional("joda-time:joda-time:2.9.9")
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
optional("org.beanshell:bsh:2.0b5")
optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
optional("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")
testCompile("org.apache.commons:commons-pool2:2.4.2")
testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
testCompile("javax.inject:javax.inject-tck:1")
testRuntime("javax.xml.bind:jaxb-api:${jaxbVersion}")
testRuntime("org.glassfish:javax.el:3.0.1-b08")
testRuntime("org.javamoney:moneta:1.1")
}
94 changes: 94 additions & 0 deletions spring-core/spring-core.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
description = "Spring Core"

// 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.5"
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.3")
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("javax.xml.bind:jaxb-api:${jaxbVersion}")
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
testCompile("com.fasterxml.woodstox:woodstox-core:5.0.3") {
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/**"
}

dependsOn objenesisRepackJar
from(zipTree(objenesisRepackJar.archivePath)) {
include "org/springframework/objenesis/**"
}
}
6 changes: 6 additions & 0 deletions spring-expression/spring-expression.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
description = "Spring Expression Language (SpEL)"

dependencies {
compile(project(":spring-jcl"))
compile(project(":spring-core"))
}
21 changes: 21 additions & 0 deletions spring-framework-bom/spring-framework-bom.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
description = "Spring Framework (Bill of Materials)"

dependencyManagement {
generatedPomCustomization {
enabled = false
}
}

configurations.archives.artifacts.clear()
artifacts {
// work around GRADLE-2406 by attaching text artifact
archives(file("spring-framework-bom.txt"))
}

install {
repositories.mavenInstaller {
pom.whenConfigured {
packaging = "pom"
}
}
}
11 changes: 11 additions & 0 deletions spring-instrument/spring-instrument.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description = "Spring Instrument"

jar {
manifest.attributes["Premain-Class"] =
"org.springframework.instrument.InstrumentationSavingAgent"
manifest.attributes["Agent-Class"] =
"org.springframework.instrument.InstrumentationSavingAgent"
manifest.attributes["Can-Redefine-Classes"] = "true"
manifest.attributes["Can-Retransform-Classes"] = "true"
manifest.attributes["Can-Set-Native-Method-Prefix"] = "false"
}
6 changes: 6 additions & 0 deletions spring-jcl/spring-jcl.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
description = "Spring Commons Logging Bridge"

dependencies {
optional("org.apache.logging.log4j:log4j-api:${log4jVersion}")
optional("org.slf4j:slf4j-api:${slf4jVersion}")
}
15 changes: 15 additions & 0 deletions spring-jdbc/spring-jdbc.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description = "Spring JDBC"

dependencies {
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-tx"))
optional(project(":spring-context")) // for JndiDataSourceLookup
optional("javax.transaction:javax.transaction-api:1.2")
optional("org.hsqldb:hsqldb:${hsqldbVersion}")
optional("com.h2database:h2:1.4.196")
optional("org.apache.derby:derby:10.13.1.1")
optional("org.apache.derby:derbyclient:10.13.1.1")
optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
optional("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")
}
15 changes: 15 additions & 0 deletions spring-jms/spring-jms.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description = "Spring JMS"

dependencies {
provided("javax.jms:javax.jms-api:2.0.1")
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-messaging"))
compile(project(":spring-tx"))
optional(project(":spring-aop"))
optional(project(":spring-context"))
optional(project(":spring-oxm"))
optional("javax.resource:javax.resource-api:1.7")
optional("javax.transaction:javax.transaction-api:1.2")
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
}
34 changes: 34 additions & 0 deletions spring-messaging/spring-messaging.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
description = "Spring Messaging"

dependencies {
compile(project(":spring-beans"))
compile(project(":spring-core"))
optional(project(":spring-context"))
optional(project(":spring-oxm"))
optional("io.projectreactor.ipc:reactor-netty")
optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
exclude group: "javax.servlet", module: "javax.servlet-api"
}
optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
optional("javax.xml.bind:jaxb-api:${jaxbVersion}")
testCompile("javax.inject:javax.inject-tck:1")
testCompile("javax.servlet:javax.servlet-api:3.1.0")
testCompile("javax.validation:validation-api:1.1.0.Final")
testCompile("com.thoughtworks.xstream:xstream:1.4.10")
testCompile("org.apache.activemq:activemq-broker:5.8.0")
testCompile("org.apache.activemq:activemq-kahadb-store:5.8.0") {
exclude group: "org.springframework", module: "spring-context"
}
testCompile("org.apache.activemq:activemq-stomp:5.8.0")
testCompile("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
exclude group: "javax.servlet", module: "javax.servlet-api"
}
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
testCompile("org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}")
testCompile("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
testCompile("org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion}")
testRuntime("com.sun.xml.bind:jaxb-core:${jaxbVersion}")
testRuntime("com.sun.xml.bind:jaxb-impl:${jaxbVersion}")
testRuntime("javax.activation:activation:${activationVersion}")
}
17 changes: 17 additions & 0 deletions spring-orm/spring-orm.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
description = "Spring Object/Relational Mapping"

dependencies {
compile(project(":spring-beans"))
compile(project(":spring-core"))
compile(project(":spring-jdbc"))
compile(project(":spring-tx"))
optional(project(":spring-aop"))
optional(project(":spring-context"))
optional(project(":spring-web"))
optional("org.eclipse.persistence:org.eclipse.persistence.jpa:2.7.0-RC3")
optional("org.hibernate:hibernate-core:5.2.10.Final")
optional("javax.servlet:javax.servlet-api:3.1.0")
testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
testRuntime("javax.xml.bind:jaxb-api:${jaxbVersion}")
}
Loading

0 comments on commit 2eeb428

Please sign in to comment.