build.gradle 31.5 KB
Newer Older
1 2
buildscript {
    repositories {
3
        maven { url 'http://repo.springsource.org/plugins-release' }
4 5
    }
    dependencies {
6
        classpath 'org.springframework.build.gradle:docbook-reference-plugin:0.1.6'
7 8 9
    }
}

C
Chris Beams 已提交
10
configure(allprojects) {
C
Chris Beams 已提交
11 12 13 14
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'

15 16
    group = 'org.springframework'

C
Chris Beams 已提交
17 18 19
    sourceCompatibility=1.5
    targetCompatibility=1.5

20
    ext.aspectjVersion = '1.6.12'
21
    ext.hsqldbVersion='1.8.0.10'
22 23
    ext.junitVersion = '4.11.20120805.1225' // temporary use of snapshot; spring-test
                                            // still builds against on 4.10
C
Chris Beams 已提交
24 25 26 27 28 29 30 31

    [compileJava, compileTestJava]*.options*.compilerArgs = ['-Xlint:none']

    sourceSets.test.resources.srcDirs = ['src/test/resources', 'src/test/java']

    test.systemProperty("java.awt.headless", "true")

    repositories {
32 33
        maven { url "http://repo.springsource.org/libs-release" }
        maven { url "http://repo.springsource.org/ebr-maven-external" }
C
Chris Beams 已提交
34 35 36
    }

    dependencies {
P
Phillip Webb 已提交
37
        testCompile "org.hamcrest:hamcrest-all:1.3"
38
        testCompile "org.easymock:easymock:2.5.1"
C
Chris Beams 已提交
39 40 41 42 43 44 45 46
    }

    // servlet-api (2.5) and tomcat-servlet-api (3.0) classpath entries should not be
    // exported to dependent projects in Eclipse to avoid false compilation errors due
    // to changing APIs across these versions
    eclipse.classpath.file.whenMerged { classpath ->
        classpath.entries.findAll { entry -> entry.path.contains('servlet-api') }*.exported = false
    }
C
Chris Beams 已提交
47 48
}

49 50 51 52 53 54 55 56
configure(subprojects - project(":spring-test")) {
    dependencies {
        testCompile ("junit:junit-dep:${junitVersion}") {
            exclude group: 'org.hamcrest', module: 'hamcrest-core'
        }
    }
}

57 58
configure(subprojects) { subproject ->
    apply from: "${rootProject.projectDir}/publish-maven.gradle"
59 60

    jar {
61 62
        manifest.attributes['Created-By'] =
            "${System.getProperty('java.version')} (${System.getProperty('java.specification.vendor')})"
63 64 65
        manifest.attributes['Implementation-Title'] = subproject.name
        manifest.attributes['Implementation-Version'] = subproject.version

66 67 68 69 70 71 72
        from("${rootProject.projectDir}/src/dist") {
            include "license.txt"
            include "notice.txt"
            into "META-INF"
            expand(copyright: new Date().format('yyyy'), version: project.version)
        }
    }
C
Chris Beams 已提交
73

74 75 76 77 78 79
    javadoc {
        options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
        options.author = true
        options.header = project.name
        //options.overview = "${projectDir}/src/main/java/overview.html"
    }
C
Chris Beams 已提交
80 81 82

    task sourcesJar(type: Jar, dependsOn:classes) {
        classifier = 'sources'
83 84
        from sourceSets.main.allJava.srcDirs
        include '**/*.java', '**/*.aj'
85 86 87 88 89
    }

    task javadocJar(type: Jar) {
        classifier = 'javadoc'
        from javadoc
C
Chris Beams 已提交
90 91 92 93
    }

    artifacts {
        archives sourcesJar
94
        archives javadocJar
C
Chris Beams 已提交
95 96 97 98
    }
}


99 100 101
project('spring-core') {
    description = 'Spring Core'

102 103 104 105 106 107
    // As of Spring 3.2 spring-core repackages both asm 4.0 and cglib 3.0 and inlines both
    // into the spring-core jar. cglib 3.0 itself depends on asm 4.0, and is therefore
    // further transformed by the JarJar task to depend on org.springframework.asm; this
    // avoids including two different copies of asm unnecessarily. If however future cglib
    // versions drift from the version of asm used by Spring internally, this duplication
    // will become necessary.
108
    def asmVersion = '4.0'
109
    def cglibVersion = '3.0'
110 111 112

    configurations {
        jarjar
113
        asm
114
        cglib
115 116
    }

117 118 119
    task asmRepackJar(type: Jar) { repackJar ->
        repackJar.baseName = "spring-asm-repack"
        repackJar.version = asmVersion
120 121 122 123 124

        doLast() {
            project.ant {
                taskdef name: "jarjar", classname: "com.tonicsystems.jarjar.JarJarTask",
                    classpath: configurations.jarjar.asPath
125 126 127
                jarjar(destfile: repackJar.archivePath) {
                    configurations.asm.each { originalJar ->
                        zipfileset(src: originalJar)
128 129 130 131 132 133 134
                    }
                    rule(pattern: 'org.objectweb.asm.**', result: 'org.springframework.asm.@1')
                }
            }
        }
    }

135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
    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')
                }
            }
        }
    }

C
Chris Beams 已提交
158
    dependencies {
159
        asm "org.ow2.asm:asm:${asmVersion}@jar", "org.ow2.asm:asm-commons:${asmVersion}@jar"
160
        cglib "cglib:cglib:${cglibVersion}@jar"
161 162 163
        jarjar 'com.googlecode.jarjar:jarjar:1.3'

        compile files(asmRepackJar)
C
Chris Beams 已提交
164
        compile "commons-logging:commons-logging:1.1.1"
165
        compile("org.aspectj:aspectjweaver:${aspectjVersion}", optional)
166 167
        compile("net.sf.jopt-simple:jopt-simple:3.0") { dep ->
            optional dep
C
Chris Beams 已提交
168 169
            exclude group: 'org.apache.ant', module: 'ant'
        }
170 171
        compile("log4j:log4j:1.2.15") { dep ->
            optional dep
C
Chris Beams 已提交
172 173 174 175 176 177 178 179
            exclude group: 'javax.mail', module: 'mail'
            exclude group: 'javax.jms', module: 'jms'
            exclude group: 'com.sun.jdmk', module: 'jmxtools'
            exclude group: 'com.sun.jmx', module: 'jmxri'
        }
        testCompile "xmlunit:xmlunit:1.2"
        testCompile "org.codehaus.woodstox:wstx-asl:3.2.7"
    }
180 181

    jar {
182
        // inline all repackaged asm and cglib classes directly into the spring-core jar
183 184 185
        dependsOn asmRepackJar
        from(zipTree(asmRepackJar.archivePath)) {
            include 'org/springframework/asm/**'
186
        }
187 188 189
        dependsOn cglibRepackJar
        from(zipTree(cglibRepackJar.archivePath)) {
            include 'org/springframework/cglib/**'
190
        }
191
    }
C
Chris Beams 已提交
192 193 194 195 196 197
}

project('spring-beans') {
    description = 'Spring Beans'
    dependencies {
        compile project(":spring-core")
198
        compile files(project(":spring-core").cglibRepackJar)
199 200
        compile("javax.el:el-api:1.0", provided)
        compile("javax.inject:javax.inject:1", provided)
C
Chris Beams 已提交
201 202 203 204 205 206
    }
}

project('spring-aop') {
    description = 'Spring AOP'
    dependencies {
207
        compile project(":spring-core")
208
        compile files(project(":spring-core").cglibRepackJar)
C
Chris Beams 已提交
209
        compile project(":spring-beans")
210
        compile("aopalliance:aopalliance:1.0")
211 212
        compile("com.jamonapi:jamon:2.4", optional)
        compile("commons-pool:commons-pool:1.5.3", optional)
213
        compile("org.aspectj:aspectjweaver:${aspectjVersion}", optional)
C
Chris Beams 已提交
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
    }
}

project('spring-expression') {
    description = 'Spring Expression Language (SpEL)'
    dependencies {
        compile project(":spring-core")
    }
}

project('spring-instrument') {
    description = 'Spring Instrument'
    dependencies {
        compile project(":spring-core")
    }
229 230 231 232
    jar {
        manifest.attributes['Premain-Class'] =
            'org.springframework.instrument.InstrumentationSavingAgent'
    }
C
Chris Beams 已提交
233 234 235 236 237
}

project('spring-instrument-tomcat') {
    description = 'Spring Instrument Tomcat'
    dependencies {
238
        compile("org.apache.tomcat:catalina:6.0.16", provided)
C
Chris Beams 已提交
239 240 241 242 243 244
    }
}

project('spring-context') {
    description = 'Spring Context'
    dependencies {
245
        compile(project(":spring-instrument"), optional)
C
Chris Beams 已提交
246
        compile project(":spring-aop")
247
        compile project(":spring-beans")
C
Chris Beams 已提交
248
        compile project(":spring-expression")
249
        compile project(":spring-core")
250
        compile files(project(":spring-core").cglibRepackJar)
251 252 253 254 255 256 257 258 259 260
        compile("backport-util-concurrent:backport-util-concurrent:3.0", optional)
        compile("javax.annotation:jsr250-api:1.0", optional)
        compile("javax.ejb:ejb-api:3.0", optional)
        compile("javax.inject:javax.inject:1", optional)
        compile("org.apache.geronimo.specs:geronimo-jms_1.1_spec:1.1", optional)
        compile("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1", optional)
        compile("javax.persistence:persistence-api:1.0", optional)
        compile("javax.validation:validation-api:1.0.0.GA", optional)
        compile("javax.xml.ws:jaxws-api:2.1-1") { dep ->
            optional dep
C
Chris Beams 已提交
261 262
            exclude group: 'javax.jws', module: 'jsr181'
        }
263 264
        compile("org.beanshell:bsh:2.0b4", optional)
        compile("org.codehaus.groovy:groovy-all:1.6.3", optional)
265 266 267 268
        compile("org.hibernate:hibernate-validator:4.2.0.Final") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'slf4j-api'
        }
269
        compile("joda-time:joda-time:1.6", optional)
P
Phillip Webb 已提交
270
        compile("org.jruby:jruby:1.4.0", optional)
271
        compile("javax.cache:cache-api:0.5", optional)
272
        compile("net.sf.ehcache:ehcache-core:2.0.0", optional)
273
        compile("org.slf4j:slf4j-api:1.6.1", optional)
274
        compile("org.codehaus.jsr166-mirror:jsr166:1.7.0", provided)
275
        compile("org.aspectj:aspectjweaver:${aspectjVersion}", optional)
C
Chris Beams 已提交
276
        testCompile "commons-dbcp:commons-dbcp:1.2.2"
277
        testCompile("javax.xml:jaxrpc-api:1.1")
C
Chris Beams 已提交
278 279
        testCompile("javax.inject:com.springsource.org.atinject.tck:1.0.0")
    }
280 281 282 283

    test {
        jvmArgs = ['-disableassertions:org.aspectj.weaver.UnresolvedType'] // SPR-7989
    }
C
Chris Beams 已提交
284 285 286 287 288
}

project('spring-tx') {
    description = 'Spring Transaction'
    dependencies {
289 290 291 292
        compile(project(":spring-context"), optional) // for JCA, @EnableTransactionManagement
        compile(project(":spring-aop"), optional)
        compile project(":spring-beans")
        compile project(":spring-core")
293
        compile("aopalliance:aopalliance:1.0")
294 295
        compile("com.ibm.websphere:uow:6.0.2.17", provided)
        compile("javax.resource:connector-api:1.5", optional)
296
        compile("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1", optional)
C
Chris Beams 已提交
297 298 299 300 301 302
        testCompile "org.easymock:easymockclassextension:2.3"
    }
}

project('spring-oxm') {
    description = 'Spring Object/XML Marshalling'
303
    apply from: 'oxm.gradle'
C
Chris Beams 已提交
304
    dependencies {
305 306 307
        compile project(":spring-beans")
        compile project(":spring-core")
        compile(project(":spring-context"), optional) // for Jaxb2Marshaller
C
Chris Beams 已提交
308
        compile "commons-lang:commons-lang:2.5"
309 310
        compile("com.thoughtworks.xstream:xstream:1.3.1", optional)
        compile("com.sun.xml.bind:jaxb-impl:2.1.7", optional)
311
        compile("org.jibx:jibx-run:1.2.3", optional)
312 313
        compile("org.apache.xmlbeans:xmlbeans:2.4.0", optional)
        compile("org.codehaus.castor:castor-xml:1.3.2", optional)
C
Chris Beams 已提交
314 315 316
        testCompile "org.codehaus.jettison:jettison:1.0.1"
        testCompile "xmlunit:xmlunit:1.2"
        testCompile "xmlpull:xmlpull:1.1.3.4a"
317 318 319
        testCompile(files(genCastor.classesDir).builtBy(genCastor))
        testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
        testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
C
Chris Beams 已提交
320 321 322 323 324 325
    }
}

project('spring-jms') {
    description = 'Spring JMS'
    dependencies {
326 327 328 329
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-aop")
        compile project(":spring-context")
C
Chris Beams 已提交
330
        compile project(":spring-tx")
331
        compile(project(":spring-oxm"), optional)
332
        compile("aopalliance:aopalliance:1.0")
333
        compile("org.codehaus.jackson:jackson-mapper-asl:1.4.2", optional)
C
Chris Beams 已提交
334 335 336 337 338 339
    }
}

project('spring-jdbc') {
    description = 'Spring JDBC'
    dependencies {
340 341 342
        compile project(":spring-core")
        compile project(":spring-beans")
        compile(project(":spring-context"), optional) // for JndiDataSourceLookup
C
Chris Beams 已提交
343
        compile project(":spring-tx")
344
        compile("c3p0:c3p0:0.9.1.2", optional)
345
        compile("hsqldb:hsqldb:${hsqldbVersion}", optional)
346 347 348
        compile("com.h2database:h2:1.0.71", optional)
        compile("org.apache.derby:derby:10.5.3.0_1", optional)
        compile("org.apache.derby:derbyclient:10.5.3.0_1", optional)
349
        compile("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1", optional)
350
        testCompile "org.easymock:easymock:2.5.1"
C
Chris Beams 已提交
351 352 353 354 355 356
    }
}

project('spring-context-support') {
    description = 'Spring Context Support'
    dependencies {
357 358 359 360 361
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile(project(":spring-jdbc"), optional) // for Quartz support
        compile(project(":spring-tx"), optional) // for Quartz support
362 363 364 365 366 367
        compile("org.codehaus.fabric3.api:commonj:1.1.0", optional)
        compile("opensymphony:quartz:1.6.2", optional)
        compile("javax.mail:mail:1.4", optional)
        compile("velocity:velocity:1.5", optional)
        compile("commons-collections:commons-collections:3.2", optional)
        compile("org.freemarker:freemarker:2.3.15", optional)
368 369 370 371
        compile("jasperreports:jasperreports:2.0.5") { dep ->
            optional dep
            transitive = false
        }
372 373 374
        compile("commons-digester:commons-digester:1.8.1", optional)
        compile("commons-beanutils:commons-beanutils:1.8.0", optional)
        compile("com.lowagie:itext:2.0.8", optional)
375
        testCompile "hsqldb:hsqldb:${hsqldbVersion}"
C
Chris Beams 已提交
376 377 378 379 380 381 382 383 384 385 386 387
        testCompile("org.apache.poi:poi:3.0.2-FINAL") {
            exclude group: 'log4j', module: 'log4j'
        }
    }

    // pick up **/*.types files in src/main
    sourceSets.main.resources.srcDirs += 'src/main/java'
}

project('spring-web') {
    description = 'Spring Web'
    dependencies {
388 389 390 391 392
        compile project(":spring-core")
        compile project(":spring-beans") // for MultiPartFilter
        compile project(":spring-aop") // for JaxWsPortProxyFactoryBean
        compile project(":spring-context")
        compile(project(":spring-oxm"), optional) // for MarshallingHttpMessageConverter
393
        compile("aopalliance:aopalliance:1.0")
394 395 396 397 398 399 400 401 402 403 404 405
        compile("com.caucho:hessian:3.2.1", optional)
        compile("rome:rome:1.0", optional)
        compile("javax.el:el-api:1.0", optional)
        compile("javax.faces:jsf-api:1.2_08", optional)
        compile("javax.portlet:portlet-api:2.0", provided)
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.8", provided) // servlet-api 3.0
        compile("javax.servlet.jsp:jsp-api:2.1", provided)
        compile("javax.xml.soap:saaj-api:1.3", provided)
        compile("axis:axis:1.4", optional)
        compile("commons-fileupload:commons-fileupload:1.2", optional)
        runtime("commons-io:commons-io:1.3", optional)
        compile("commons-httpclient:commons-httpclient:3.1", optional)
406
        compile("org.apache.httpcomponents:httpclient:4.2", optional)
407
        compile("org.codehaus.jackson:jackson-mapper-asl:1.4.2", optional)
408
        compile("com.fasterxml.jackson.core:jackson-databind:2.0.1", optional)
409
        compile("taglibs:standard:1.1.2", optional)
410
        compile("org.eclipse.jetty:jetty-servlet:8.1.5.v20120716") { dep ->
411
            optional dep
412 413 414 415 416
            exclude group: 'org.eclipse.jetty.orbit', module: 'javax.servlet'
        }
        compile("org.eclipse.jetty:jetty-server:8.1.5.v20120716") { dep ->
            optional dep
            exclude group: 'org.eclipse.jetty.orbit', module: 'javax.servlet'
C
Chris Beams 已提交
417
        }
418
        testCompile project(":spring-context-support")  // for JafMediaTypeFactory
C
Chris Beams 已提交
419 420 421 422 423 424 425 426
        testCompile "xmlunit:xmlunit:1.2"
    }

    // pick up ContextLoader.properties in src/main
    sourceSets.main.resources.srcDirs += 'src/main/java'
}

project('spring-orm') {
C
Chris Beams 已提交
427
    description = 'Spring Object/Relational Mapping'
C
Chris Beams 已提交
428
    dependencies {
429 430
        // compiling against both hibernate 3 and 4 here in order to support
        // our respective orm.hibernate3 and orm.hibernate4 packages
431
        compile("aopalliance:aopalliance:1.0")
432
        compile("org.hibernate:com.springsource.org.hibernate:3.3.1.GA", optional)
433
        compile("org.hibernate:hibernate-core:4.1.0.Final", optional)
434 435
        compile("org.hibernate:hibernate-cglib-repack:2.1_3", optional)
        compile("org.hibernate:hibernate-annotations:3.4.0.GA", optional)
436
        compile("org.hibernate:hibernate-entitymanager:4.1.0.Final", optional)
437 438 439 440 441 442
        compile("org.apache.openjpa:openjpa:1.1.0", optional)
        compile("org.eclipse.persistence:org.eclipse.persistence.core:1.0.1", optional)
        compile("org.eclipse.persistence:org.eclipse.persistence.jpa:1.0.1", optional)
        compile("toplink.essentials:toplink-essentials:2.0-41b", optional)
        compile("javax.jdo:jdo-api:3.0", optional)
        compile("org.apache.ibatis:ibatis-sqlmap:2.3.4.726", optional)
C
Chris Beams 已提交
443 444 445
        testCompile "javax.servlet:servlet-api:2.5"
        testCompile "org.slf4j:slf4j-jcl:1.5.3"
        testCompile "commons-dbcp:commons-dbcp:1.2.2"
446 447
        testCompile "org.eclipse.persistence:org.eclipse.persistence.asm:1.0.1"
        testCompile "org.eclipse.persistence:org.eclipse.persistence.antlr:1.0.1"
448 449 450 451 452
        compile project(":spring-core")
        compile project(":spring-beans")
        compile(project(":spring-aop"), optional)
        compile(project(":spring-context"), optional)
        compile project(":spring-tx")
C
Chris Beams 已提交
453
        compile project(":spring-jdbc")
454 455 456 457
        compile(project(":spring-web")) { dep ->
            optional dep
            exclude group: 'javax.persistence', module: 'persistence-api'
        }
C
Chris Beams 已提交
458 459 460 461 462 463
    }
}

project('spring-webmvc') {
    description = 'Spring Web MVC'
    dependencies {
464 465 466
        compile project(":spring-core")
        compile project(":spring-expression")
        compile project(":spring-beans")
C
Chris Beams 已提交
467
        compile project(":spring-web")
468 469 470
        compile project(":spring-context")
        compile(project(":spring-context-support"), optional) // for Velocity support
        compile(project(":spring-oxm"), optional) // for MarshallingView
471 472 473 474 475 476 477
        compile("org.apache.tiles:tiles-api:2.1.2", optional)
        compile("org.apache.tiles:tiles-core:2.1.2", optional)
        compile("org.apache.tiles:tiles-jsp:2.1.2", optional)
        compile("org.apache.tiles:tiles-servlet:2.1.2", optional)
        compile("velocity-tools:velocity-tools-view:1.4", optional)
        compile("net.sourceforge.jexcelapi:jxl:2.6.3") { dep ->
            optional dep
C
Chris Beams 已提交
478 479
            exclude group: 'log4j', module: 'log4j'
        }
480 481
        compile("org.apache.poi:poi:3.0.2-FINAL") { dep ->
            optional dep
C
Chris Beams 已提交
482 483
            exclude group: 'log4j', module: 'log4j'
        }
484 485
        compile("javax.servlet:jstl:1.1.2", provided)
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.8", provided) // servlet-api 3.0
486
        testCompile project(":spring-aop")
487
        testCompile("org.slf4j:slf4j-log4j12:1.6.1") {
C
Chris Beams 已提交
488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508
            exclude group: 'log4j', module: 'log4j'
        }
        testCompile "rhino:js:1.7R1"
        testCompile "xmlunit:xmlunit:1.2"
        testCompile("dom4j:dom4j:1.6.1") {
            exclude group: 'xml-apis', module: 'xml-apis'
        }
        testCompile("jaxen:jaxen:1.1.1") {
            exclude group: 'xml-apis', module: 'xml-apis'
            exclude group: 'xom', module: 'xom'
            exclude group: 'xerces', module: 'xercesImpl'
        }
    }

    // pick up DispatcherServlet.properties in src/main
    sourceSets.main.resources.srcDirs += 'src/main/java'
}

project('spring-webmvc-portlet') {
    description = 'Spring Web Portlet'
    dependencies {
509
        compile("javax.servlet:servlet-api:2.5", provided)
510 511 512 513
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile project(":spring-web")
C
Chris Beams 已提交
514 515 516 517 518 519 520 521
        compile project(":spring-webmvc")
    }

    // pick up DispatcherPortlet.properties in src/main
    sourceSets.main.resources.srcDirs += 'src/main/java'
}

project('spring-test') {
C
Chris Beams 已提交
522
    description = 'Spring TestContext Framework'
C
Chris Beams 已提交
523
    dependencies {
524
        compile project(":spring-core")
525 526 527 528 529 530
        compile(project(":spring-beans"), optional)
        compile(project(":spring-context"), optional)
        compile(project(":spring-jdbc"), optional)
        compile(project(":spring-tx"), optional)
        compile(project(":spring-orm"), optional)
        compile(project(":spring-web"), optional)
531 532
        compile(project(":spring-webmvc"), optional)
        compile(project(":spring-webmvc-portlet"), optional)
533
        compile("junit:junit-dep:4.10") { dep ->
534 535 536 537 538 539 540 541 542 543
            optional dep
            // We already have hamcrest-all as a global testCompile dependency.
            exclude group: 'org.hamcrest', module: 'hamcrest-core'
        }
        compile("org.testng:testng:6.5.2") { dep ->
            optional dep
            exclude group: 'junit', module: 'junit'
            // We already have hamcrest-all as a global testCompile dependency.
            exclude group: 'org.hamcrest', module: 'hamcrest-core'
        }
544 545 546 547
        compile("javax.servlet:servlet-api:2.5", optional)
        compile("javax.servlet.jsp:jsp-api:2.1", optional)
        compile("javax.portlet:portlet-api:2.0", optional)
        compile("javax.activation:activation:1.0", provided)
C
Chris Beams 已提交
548 549 550 551
        testCompile "org.slf4j:slf4j-jcl:1.5.3"
    }
}

R
Rob Winch 已提交
552 553 554 555 556 557 558 559
project('spring-test-mvc') {
    description = 'Spring Test MVC Framework'
    apply from: 'test-mvc.gradle'
    dependencies {
        compile project(":spring-context")
        compile project(":spring-webmvc")
        compile project(":spring-test").sourceSets.main.output
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.8", provided)
560
        compile("org.hamcrest:hamcrest-core:1.3", optional)
R
Rob Winch 已提交
561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581
        compile("com.jayway.jsonpath:json-path:0.8.1", optional)
        compile("xmlunit:xmlunit:1.2", optional)
        testCompile("org.slf4j:jcl-over-slf4j:1.6.1")
        testCompile("org.slf4j:slf4j-log4j12:1.6.1") {
            exclude group: 'log4j', module: 'log4j'
        }
        testCompile("log4j:log4j:1.2.15") {
            exclude group: 'javax.mail', module: 'mail'
            exclude group: 'javax.jms', module: 'jms'
            exclude group: 'com.sun.jdmk', module: 'jmxtools'
            exclude group: 'com.sun.jmx', module: 'jmxri'
        }
        testCompile "javax.servlet:jstl:1.2"
        testCompile "org.apache.tiles:tiles-jsp:2.2.2"
        testCompile "org.hibernate:hibernate-validator:4.2.0.Final"
        testCompile "org.codehaus.jackson:jackson-mapper-asl:1.4.2"
        testCompile project(":spring-oxm")
        testCompile "com.thoughtworks.xstream:xstream:1.3.1"
        testCompile "cglib:cglib-nodep:2.2"
        testCompile "rome:rome:1.0"
        testCompile "javax.xml.bind:jaxb-api:2.2.6"
R
Rossen Stoyanchev 已提交
582
        testCompile "org.easymock:easymockclassextension:2.3"
R
Rob Winch 已提交
583 584 585 586 587 588 589 590 591 592 593 594
        testCompile("org.springframework.security:spring-security-core:3.1.2.RELEASE") {
            exclude group: 'org.springframework'
        }
        testCompile("org.springframework.security:spring-security-web:3.1.2.RELEASE") {
            exclude group: 'org.springframework'
        }
        testCompile("org.springframework.security:spring-security-config:3.1.2.RELEASE") {
            exclude group: 'org.springframework'
        }
    }
}

C
Chris Beams 已提交
595 596 597
project('spring-struts') {
    description = 'Spring Struts'
    dependencies {
598 599 600 601
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile project(":spring-web")
C
Chris Beams 已提交
602 603 604
        compile project(":spring-webmvc")
        compile "struts:struts:1.2.9"
        compile "commons-beanutils:commons-beanutils:1.7.0"
605
        compile("javax.servlet:servlet-api:2.5", provided)
C
Chris Beams 已提交
606 607 608 609 610 611
        testCompile project(":spring-test")
    }
}

project('spring-aspects') {
    description = 'Spring Aspects'
612
    apply from: 'aspects.gradle'
C
Chris Beams 已提交
613
    dependencies {
614 615 616 617 618 619
        compile(project(":spring-beans"), optional) // for @Configurable support
        compile(project(":spring-aop"), optional) // for @Async support
        compile(project(":spring-context"), optional) // for @Enable* support
        compile(project(":spring-context-support"), optional) // for JavaMail support
        compile(project(":spring-tx"), optional) // for JPA, @Transactional support
        compile(project(":spring-orm"), optional) // for JPA exception translation support
C
Chris Beams 已提交
620
        aspects project(":spring-orm")
621 622
        ajc "org.aspectj:aspectjtools:${aspectjVersion}"
        compile "org.aspectj:aspectjrt:${aspectjVersion}"
623 624
        testCompile project(":spring-core") // for CodeStyleAspect
        compile project(":spring-beans") // for 'p' namespace visibility
C
Chris Beams 已提交
625 626
        testCompile project(":spring-test")
    }
627 628
    eclipse.project {
        natures += 'org.eclipse.ajdt.ui.ajnature'
629 630
        buildCommands = [new org.gradle.plugins.ide.eclipse.model.
                BuildCommand('org.eclipse.ajdt.core.ajbuilder')]
631
    }
C
Chris Beams 已提交
632 633
}

634 635 636 637 638 639 640
configure(rootProject) {
    description = 'Spring Framework'

    apply plugin: 'docbook-reference'

    reference {
        sourceDir = file('src/reference/docbook')
641
        pdfFilename = 'spring-framework-reference.pdf'
C
Chris Beams 已提交
642
    }
643 644 645 646 647

    // don't publish the default jar for the root project
    configurations.archives.artifacts.clear()

    dependencies { // for integration tests
648 649 650 651 652 653 654
        testCompile project(":spring-core")
        testCompile project(":spring-beans")
        testCompile project(":spring-aop")
        testCompile project(":spring-expression")
        testCompile project(":spring-context")
        testCompile project(":spring-tx")
        testCompile project(":spring-jdbc")
655
        testCompile project(":spring-test")
656
        testCompile project(":spring-web")
657
        testCompile project(":spring-webmvc-portlet")
658
        testCompile "org.hibernate:hibernate-core:4.1.0.Final"
659 660 661 662 663 664 665 666 667 668 669
        testCompile "javax.servlet:servlet-api:2.5"
    }

    task api(type: Javadoc) {
        group = 'Documentation'
        description = 'Generates aggregated Javadoc API documentation.'
        title = "${rootProject.description} ${version} API"
        options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
        options.author = true
        options.header = rootProject.description
        options.overview = 'src/api/overview.html'
670
        options.splitIndex = true
671 672 673 674 675 676 677 678 679 680 681 682 683 684 685
        options.links(
            'http://docs.jboss.org/jbossas/javadoc/4.0.5/connector'
        )
        source subprojects.collect { project ->
            project.sourceSets.main.allJava
        }
        destinationDir = new File(buildDir, "api")
        classpath = files(subprojects.collect { project ->
            project.sourceSets.main.compileClasspath
        })
        maxMemory = '1024m'
    }

    task docsZip(type: Zip) {
        group = 'Distribution'
686
        baseName = 'spring-framework'
687 688
        classifier = 'docs'
        description = "Builds -${classifier} archive containing api and reference " +
689
            "for deployment at http://static.springframework.org/spring-framework/docs."
690 691 692 693 694 695 696 697 698 699 700

        from('src/dist') {
            include 'changelog.txt'
        }

        from (api) {
            into 'api'
        }

        from (reference) {
            into 'reference'
C
Chris Beams 已提交
701
        }
702 703 704 705
    }

    task schemaZip(type: Zip) {
        group = 'Distribution'
706
        baseName = 'spring-framework'
707 708
        classifier = 'schema'
        description = "Builds -${classifier} archive containing all " +
709
            "XSDs for deployment at http://springframework.org/schema."
710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728

        subprojects.each { subproject ->
            def Properties schemas = new Properties();

            subproject.sourceSets.main.resources.find {
                it.path.endsWith('META-INF/spring.schemas')
            }?.withInputStream { schemas.load(it) }

            for (def key : schemas.keySet()) {
                def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
                assert shortName != key
                File xsdFile = subproject.sourceSets.main.resources.find {
                    it.path.endsWith(schemas.get(key))
                }
                assert xsdFile != null
                into (shortName) {
                    from xsdFile.path
                }
            }
C
Chris Beams 已提交
729 730 731
        }
    }

732 733
    task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
        group = 'Distribution'
734
        baseName = 'spring-framework'
735 736 737 738
        classifier = 'dist'
        description = "Builds -${classifier} archive, containing all jars and docs, " +
                      "suitable for community download page."

739
        ext.baseDir = "${baseName}-${project.version}";
740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769

        from('src/dist') {
            include 'readme.txt'
            include 'license.txt'
            include 'notice.txt'
            into "${baseDir}"
            expand(copyright: new Date().format('yyyy'), version: project.version)
        }

        from(zipTree(docsZip.archivePath)) {
            into "${baseDir}/docs"
        }

        from(zipTree(schemaZip.archivePath)) {
            into "${baseDir}/schema"
        }

        subprojects.each { subproject ->
            into ("${baseDir}/libs") {
                from subproject.jar
                if (subproject.tasks.findByPath('sourcesJar')) {
                    from subproject.sourcesJar
                }
                if (subproject.tasks.findByPath('javadocJar')) {
                    from subproject.javadocJar
                }
            }
        }
    }

770 771 772 773
    // Create an distribution that contains all dependencies (required and optional).
    // Not published by default; only for use when building from source.
    task depsZip(type: Zip, dependsOn: distZip) { zipTask ->
        group = 'Distribution'
774
        baseName = 'spring-framework'
775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800
        classifier = 'dist-with-deps'
        description = "Builds -${classifier} archive, containing everything " +
            "in the -${distZip.classifier} archive plus all runtime dependencies."

        from zipTree(distZip.archivePath)

        gradle.taskGraph.whenReady { taskGraph ->
            if (taskGraph.hasTask(":${zipTask.name}")) {
                def projectNames = rootProject.subprojects*.name
                def artifacts = new HashSet()
                subprojects.each { subproject ->
                    subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts.each { artifact ->
                        def dependency = artifact.moduleVersion.id
                        if (!projectNames.contains(dependency.name)) {
                            artifacts << artifact.file
                        }
                    }
                }

                zipTask.from(artifacts) {
                    into "${distZip.baseDir}/deps"
                }
            }
        }
    }

801 802 803 804 805 806 807 808
    artifacts {
        archives docsZip
        archives schemaZip
        archives distZip
    }

    task wrapper(type: Wrapper) {
        description = 'Generates gradlew[.bat] scripts'
P
Phillip Webb 已提交
809
        gradleVersion = '1.2'
C
Chris Beams 已提交
810

811 812
        doLast() {
            def gradleOpts = "-XX:MaxPermSize=1024m -Xmx1024m"
813
            def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256"
814 815 816 817 818
            File wrapperFile = file('gradlew')
            wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
                "GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
            File wrapperBatFile = file('gradlew.bat')
            wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
819
                "set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
820 821
        }
    }
822
}