build.gradle 32.8 KB
Newer Older
1 2
import org.gradle.plugins.ide.eclipse.model.ProjectDependency

3 4
buildscript {
    repositories {
5
        maven { url 'http://repo.springsource.org/plugins-release' }
6 7
    }
    dependencies {
8
        classpath 'org.springframework.build.gradle:docbook-reference-plugin:0.2.2'
9 10 11
    }
}

C
Chris Beams 已提交
12
configure(allprojects) {
13 14 15
    ext.aspectjVersion  = '1.6.12'
    ext.easymockVersion = '2.5.2'
    ext.hsqldbVersion   = '1.8.0.10'
S
Sam Brannen 已提交
16
    ext.junitVersion    = '4.11'
17
    ext.slf4jVersion    = '1.6.1'
18 19
    ext.gradleScriptDir = "${rootProject.projectDir}/gradle"

C
Chris Beams 已提交
20 21 22
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'idea'
23
    apply from: "${gradleScriptDir}/ide.gradle"
C
Chris Beams 已提交
24

25 26
    group = 'org.springframework'

C
Chris Beams 已提交
27 28 29 30 31 32 33 34 35 36
    sourceCompatibility=1.5
    targetCompatibility=1.5

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

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

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

    repositories {
37 38
        maven { url "http://repo.springsource.org/libs-release" }
        maven { url "http://repo.springsource.org/ebr-maven-external" }
C
Chris Beams 已提交
39 40 41
    }

    dependencies {
P
Phillip Webb 已提交
42
        testCompile "org.hamcrest:hamcrest-all:1.3"
43
        testCompile "org.easymock:easymock:${easymockVersion}"
C
Chris Beams 已提交
44
    }
C
Chris Beams 已提交
45 46
}

47 48
configure(subprojects - project(":spring-test")) {
    dependencies {
S
Sam Brannen 已提交
49 50
        testCompile ("junit:junit:${junitVersion}") {
            // We already have hamcrest-all as a global testCompile dependency.
51 52 53 54 55
            exclude group: 'org.hamcrest', module: 'hamcrest-core'
        }
    }
}

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

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

65 66 67 68 69 70 71
        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 已提交
72

73 74 75 76 77 78
    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 已提交
79 80 81

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

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

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


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

101 102 103 104 105 106
    // 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.
107
    def asmVersion = '4.0'
108
    def cglibVersion = '3.0'
109 110 111

    configurations {
        jarjar
112
        asm
113
        cglib
114 115
    }

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

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

134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
    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 已提交
157
    dependencies {
158
        asm "org.ow2.asm:asm:${asmVersion}@jar", "org.ow2.asm:asm-commons:${asmVersion}@jar"
159
        cglib "cglib:cglib:${cglibVersion}@jar"
160 161 162
        jarjar 'com.googlecode.jarjar:jarjar:1.3'

        compile files(asmRepackJar)
C
Chris Beams 已提交
163
        compile "commons-logging:commons-logging:1.1.1"
164
        compile("org.aspectj:aspectjweaver:${aspectjVersion}", optional)
165 166
        compile("net.sf.jopt-simple:jopt-simple:3.0") { dep ->
            optional dep
C
Chris Beams 已提交
167 168
            exclude group: 'org.apache.ant', module: 'ant'
        }
169 170
        compile("log4j:log4j:1.2.15") { dep ->
            optional dep
C
Chris Beams 已提交
171 172 173 174 175 176 177 178
            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"
    }
179 180

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

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

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

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

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

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

project('spring-context') {
    description = 'Spring Context'
    dependencies {
244
        compile(project(":spring-instrument"), optional)
C
Chris Beams 已提交
245
        compile project(":spring-aop")
246
        compile project(":spring-beans")
C
Chris Beams 已提交
247
        compile project(":spring-expression")
248
        compile project(":spring-core")
249
        compile files(project(":spring-core").cglibRepackJar)
250 251 252 253 254 255 256
        compile("backport-util-concurrent:backport-util-concurrent:3.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("javax.persistence:persistence-api:1.0", optional)
        compile("javax.validation:validation-api:1.0.0.GA", optional)
        compile("org.beanshell:bsh:2.0b4", optional)
257 258 259
        compile("org.codehaus.groovy:groovy-all:1.8.8", optional)
        compile("org.jruby:jruby:1.6.5.1", optional)
        compile("joda-time:joda-time:2.1", optional)
260
        compile("org.slf4j:slf4j-api:${slf4jVersion}", optional)
261
        compile("org.hibernate:hibernate-validator:4.3.0.Final") { dep ->
262 263 264
            optional dep
            exclude group: 'org.slf4j', module: 'slf4j-api'
        }
265
        compile("org.aspectj:aspectjweaver:${aspectjVersion}", optional)
C
Chris Beams 已提交
266 267 268
        testCompile "commons-dbcp:commons-dbcp:1.2.2"
        testCompile("javax.inject:com.springsource.org.atinject.tck:1.0.0")
    }
269 270 271 272

    test {
        jvmArgs = ['-disableassertions:org.aspectj.weaver.UnresolvedType'] // SPR-7989
    }
C
Chris Beams 已提交
273 274 275 276 277
}

project('spring-tx') {
    description = 'Spring Transaction'
    dependencies {
278 279 280 281
        compile(project(":spring-context"), optional) // for JCA, @EnableTransactionManagement
        compile(project(":spring-aop"), optional)
        compile project(":spring-beans")
        compile project(":spring-core")
282
        compile("aopalliance:aopalliance:1.0")
283 284
        compile("com.ibm.websphere:uow:6.0.2.17", provided)
        compile("javax.resource:connector-api:1.5", optional)
285
        compile("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1", optional)
286
        testCompile "org.easymock:easymockclassextension:${easymockVersion}"
C
Chris Beams 已提交
287 288 289 290 291
    }
}

project('spring-oxm') {
    description = 'Spring Object/XML Marshalling'
292
    apply from: 'oxm.gradle'
C
Chris Beams 已提交
293
    dependencies {
294 295 296
        compile project(":spring-beans")
        compile project(":spring-core")
        compile(project(":spring-context"), optional) // for Jaxb2Marshaller
C
Chris Beams 已提交
297
        compile "commons-lang:commons-lang:2.5"
298 299
        compile("com.thoughtworks.xstream:xstream:1.3.1", optional)
        compile("com.sun.xml.bind:jaxb-impl:2.1.7", optional)
300
        compile("org.jibx:jibx-run:1.2.3", optional)
301 302
        compile("org.apache.xmlbeans:xmlbeans:2.4.0", optional)
        compile("org.codehaus.castor:castor-xml:1.3.2", optional)
C
Chris Beams 已提交
303 304 305
        testCompile "org.codehaus.jettison:jettison:1.0.1"
        testCompile "xmlunit:xmlunit:1.2"
        testCompile "xmlpull:xmlpull:1.1.3.4a"
306 307 308
        testCompile(files(genCastor.classesDir).builtBy(genCastor))
        testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
        testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
C
Chris Beams 已提交
309 310 311 312 313 314
    }
}

project('spring-jms') {
    description = 'Spring JMS'
    dependencies {
315 316 317 318
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-aop")
        compile project(":spring-context")
C
Chris Beams 已提交
319
        compile project(":spring-tx")
320
        compile(project(":spring-oxm"), optional)
321
        compile("aopalliance:aopalliance:1.0")
322
        compile("org.codehaus.jackson:jackson-mapper-asl:1.4.2", optional)
C
Chris Beams 已提交
323 324 325 326 327 328
    }
}

project('spring-jdbc') {
    description = 'Spring JDBC'
    dependencies {
329 330 331
        compile project(":spring-core")
        compile project(":spring-beans")
        compile(project(":spring-context"), optional) // for JndiDataSourceLookup
C
Chris Beams 已提交
332
        compile project(":spring-tx")
333
        compile("c3p0:c3p0:0.9.1.2", optional)
334
        compile("hsqldb:hsqldb:${hsqldbVersion}", optional)
335 336 337
        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)
338
        compile("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1", optional)
C
Chris Beams 已提交
339 340 341 342 343 344
    }
}

project('spring-context-support') {
    description = 'Spring Context Support'
    dependencies {
345 346 347 348 349
        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
350
        compile("javax.mail:mail:1.4", optional)
351 352
        compile("javax.cache:cache-api:0.5", optional)
        compile("net.sf.ehcache:ehcache-core:2.0.0", optional)
353
        compile("opensymphony:quartz:1.6.2", optional)
354
        compile("org.codehaus.fabric3.api:commonj:1.1.0", optional)
355 356
        compile("velocity:velocity:1.5", optional)
        compile("org.freemarker:freemarker:2.3.15", optional)
357
        compile("com.lowagie:itext:2.1.7", optional)
358 359 360 361
        compile("jasperreports:jasperreports:2.0.5") { dep ->
            optional dep
            transitive = false
        }
C
Chris Beams 已提交
362 363 364
        testCompile("org.apache.poi:poi:3.0.2-FINAL") {
            exclude group: 'log4j', module: 'log4j'
        }
365 366 367
        testCompile("commons-beanutils:commons-beanutils:1.8.0") // for Velocity/JasperReports
        testCompile("commons-digester:commons-digester:1.8.1") // for Velocity/JasperReports
        testCompile "hsqldb:hsqldb:${hsqldbVersion}"
C
Chris Beams 已提交
368 369 370 371 372 373 374 375 376
    }

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

project('spring-web') {
    description = 'Spring Web'
    dependencies {
377 378 379 380 381
        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
382
        compile("aopalliance:aopalliance:1.0")
383 384 385 386 387
        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)
388
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.32", provided) // servlet-api 3.0
389
        compile("javax.servlet.jsp:jsp-api:2.1", provided)
390
        compile("javax.xml:jaxrpc-api:1.1")
391 392 393 394
        compile("javax.xml.soap:saaj-api:1.3", provided)
        compile("commons-fileupload:commons-fileupload:1.2", optional)
        runtime("commons-io:commons-io:1.3", optional)
        compile("commons-httpclient:commons-httpclient:3.1", optional)
395
        compile("org.apache.httpcomponents:httpclient:4.2", optional)
396
        compile("org.codehaus.jackson:jackson-mapper-asl:1.4.2", optional)
397
        compile("com.fasterxml.jackson.core:jackson-databind:2.0.1", optional)
398
        compile("taglibs:standard:1.1.2", optional)
399
        compile("org.eclipse.jetty:jetty-servlet:8.1.5.v20120716") { dep ->
400
            optional dep
401 402 403 404 405
            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 已提交
406
        }
407
        testCompile project(":spring-context-support")  // for JafMediaTypeFactory
C
Chris Beams 已提交
408 409 410 411 412 413 414 415
        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 已提交
416
    description = 'Spring Object/Relational Mapping'
C
Chris Beams 已提交
417
    dependencies {
418
        compile("aopalliance:aopalliance:1.0")
419
        compile("org.hibernate:hibernate-core:3.3.2.GA", optional)
420
        compile("org.hibernate:hibernate-annotations:3.4.0.GA", optional)
421
        compile("org.hibernate:hibernate-entitymanager:3.4.0.GA", optional)
422 423 424 425 426 427
        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 已提交
428
        testCompile "javax.servlet:servlet-api:2.5"
429
        testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
C
Chris Beams 已提交
430
        testCompile "commons-dbcp:commons-dbcp:1.2.2"
431 432
        testCompile "org.eclipse.persistence:org.eclipse.persistence.asm:1.0.1"
        testCompile "org.eclipse.persistence:org.eclipse.persistence.antlr:1.0.1"
R
Rob Winch 已提交
433
        testCompile project(":spring-web").sourceSets.test.output
434 435 436 437 438
        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 已提交
439
        compile project(":spring-jdbc")
440 441 442 443
        compile(project(":spring-web")) { dep ->
            optional dep
            exclude group: 'javax.persistence', module: 'persistence-api'
        }
C
Chris Beams 已提交
444 445 446
    }
}

447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464
project('spring-orm-hibernate4') {
    description = 'Spring Object/Relational Mapping - Hibernate 4 support'
    ext.mergeIntoProject = project(':spring-orm')
    apply from: "${gradleScriptDir}/merge-artifacts.gradle"
    dependencies {
        compile project(":spring-orm").sourceSets.main.output
        compile project(":spring-tx")
        compile project(":spring-jdbc")
        compile("org.hibernate:hibernate-core:4.1.0.Final", optional)
        compile("org.hibernate:hibernate-entitymanager:4.1.0.Final", optional)
        compile(project(":spring-web")) { dep ->
            optional dep
            exclude group: 'javax.persistence', module: 'persistence-api'
        }
        compile("javax.servlet:servlet-api:2.5", optional)
    }
}

C
Chris Beams 已提交
465 466 467
project('spring-webmvc') {
    description = 'Spring Web MVC'
    dependencies {
468 469 470
        compile project(":spring-core")
        compile project(":spring-expression")
        compile project(":spring-beans")
C
Chris Beams 已提交
471
        compile project(":spring-web")
472 473 474
        compile project(":spring-context")
        compile(project(":spring-context-support"), optional) // for Velocity support
        compile(project(":spring-oxm"), optional) // for MarshallingView
475
        compile("org.apache.tiles:tiles-api:2.1.2", optional)
476 477 478 479 480 481 482 483 484 485 486 487
        compile("org.apache.tiles:tiles-core:2.1.2") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
        compile("org.apache.tiles:tiles-jsp:2.1.2") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
        compile("org.apache.tiles:tiles-servlet:2.1.2") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
488 489 490
        compile("velocity-tools:velocity-tools-view:1.4", optional)
        compile("net.sourceforge.jexcelapi:jxl:2.6.3") { dep ->
            optional dep
C
Chris Beams 已提交
491 492
            exclude group: 'log4j', module: 'log4j'
        }
493 494
        compile("org.apache.poi:poi:3.0.2-FINAL") { dep ->
            optional dep
C
Chris Beams 已提交
495 496
            exclude group: 'log4j', module: 'log4j'
        }
497
        compile("javax.servlet:jstl:1.1.2", provided)
498
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.32", provided) // servlet-api 3.0
499
        testCompile project(":spring-aop")
500
        testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
C
Chris Beams 已提交
501 502 503 504 505 506 507 508 509 510
        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'
        }
R
Rob Winch 已提交
511
        testCompile project(":spring-web").sourceSets.test.output
C
Chris Beams 已提交
512 513 514 515 516 517
    }

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

518 519
project('spring-webmvc-tiles3') {
    description = 'Spring Framework Tiles3 Integration'
520 521
    ext.mergeIntoProject = project(':spring-webmvc')
    apply from: "${gradleScriptDir}/merge-artifacts.gradle"
522 523 524 525 526 527 528 529
    dependencies {
        compile project(":spring-context")
        compile project(":spring-webmvc").sourceSets.main.output
        compile("javax.el:el-api:1.0", provided)
        compile("javax.servlet:jstl:1.1.2", provided)
        compile("javax.servlet.jsp:jsp-api:2.1", provided)
        compile("org.apache.tiles:tiles-request-api:1.0.1", optional)
        compile("org.apache.tiles:tiles-api:3.0.1", optional)
530 531 532 533
        compile("org.apache.tiles:tiles-core:3.0.1") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
534 535 536 537 538 539 540 541 542 543 544 545
        compile("org.apache.tiles:tiles-servlet:3.0.1") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
        compile("org.apache.tiles:tiles-jsp:3.0.1") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
        compile("org.apache.tiles:tiles-el:3.0.1") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
546
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.32", provided) // servlet-api 3.0
R
Rob Winch 已提交
547
        compile project(":spring-web").sourceSets*.output // mock request & response
548 549 550
    }
}

C
Chris Beams 已提交
551 552 553
project('spring-webmvc-portlet') {
    description = 'Spring Web Portlet'
    dependencies {
554
        compile("javax.servlet:servlet-api:2.5", provided)
555 556 557 558
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile project(":spring-web")
C
Chris Beams 已提交
559 560 561 562 563 564 565 566
        compile project(":spring-webmvc")
    }

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

project('spring-test') {
C
Chris Beams 已提交
567
    description = 'Spring TestContext Framework'
C
Chris Beams 已提交
568
    dependencies {
569
        compile project(":spring-core")
570 571 572 573 574 575
        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)
576 577
        compile(project(":spring-webmvc"), optional)
        compile(project(":spring-webmvc-portlet"), optional)
S
Sam Brannen 已提交
578
        compile("junit:junit:${junitVersion}") { dep ->
579 580 581 582 583 584 585 586 587 588
            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'
        }
589 590 591 592
        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)
593
        testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
C
Chris Beams 已提交
594 595 596
    }
}

R
Rob Winch 已提交
597 598
project('spring-test-mvc') {
    description = 'Spring Test MVC Framework'
599 600
    ext.mergeIntoProject = project(':spring-test')
    apply from: "${gradleScriptDir}/merge-artifacts.gradle"
R
Rob Winch 已提交
601
    apply from: "ide.gradle"
R
Rob Winch 已提交
602 603 604 605
    dependencies {
        compile project(":spring-context")
        compile project(":spring-webmvc")
        compile project(":spring-test").sourceSets.main.output
606
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.32", provided)
607
        compile("org.hamcrest:hamcrest-core:1.3", optional)
R
Rob Winch 已提交
608 609 610
        compile("com.jayway.jsonpath:json-path:0.8.1", optional)
        compile("xmlunit:xmlunit:1.2", optional)
        testCompile "javax.servlet:jstl:1.2"
S
Sam Brannen 已提交
611
        testCompile "org.hibernate:hibernate-validator:4.3.0.Final"
R
Rob Winch 已提交
612 613 614 615 616 617
        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"
618
        testCompile "org.easymock:easymockclassextension:${easymockVersion}"
619 620
        testCompile "org.apache.tiles:tiles-request-api:1.0.1"
        testCompile "org.apache.tiles:tiles-api:3.0.1"
621 622 623
        testCompile("org.apache.tiles:tiles-core:3.0.1") {
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
624 625 626
        testCompile("org.apache.tiles:tiles-servlet:3.0.1") {
            exclude group: 'org.slf4j', module: 'jcl-over-slf4j'
        }
R
Rob Winch 已提交
627 628 629
    }
}

C
Chris Beams 已提交
630 631 632
project('spring-struts') {
    description = 'Spring Struts'
    dependencies {
633 634 635 636
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile project(":spring-web")
C
Chris Beams 已提交
637 638 639
        compile project(":spring-webmvc")
        compile "struts:struts:1.2.9"
        compile "commons-beanutils:commons-beanutils:1.7.0"
640
        compile("javax.servlet:servlet-api:2.5", provided)
C
Chris Beams 已提交
641 642 643 644 645 646
        testCompile project(":spring-test")
    }
}

project('spring-aspects') {
    description = 'Spring Aspects'
647
    apply from: 'aspects.gradle'
C
Chris Beams 已提交
648
    dependencies {
649 650 651 652 653 654
        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 已提交
655
        aspects project(":spring-orm")
656
        ajc "org.aspectj:aspectjtools:${aspectjVersion}"
657
        compile "org.aspectj:aspectjweaver:${aspectjVersion}"
658 659
        testCompile project(":spring-core") // for CodeStyleAspect
        compile project(":spring-beans") // for 'p' namespace visibility
C
Chris Beams 已提交
660 661
        testCompile project(":spring-test")
    }
662 663
    eclipse.project {
        natures += 'org.eclipse.ajdt.ui.ajnature'
664 665
        buildCommands = [new org.gradle.plugins.ide.eclipse.model.
                BuildCommand('org.eclipse.ajdt.core.ajbuilder')]
666
    }
C
Chris Beams 已提交
667 668
}

669 670 671 672
configure(rootProject) {
    description = 'Spring Framework'

    apply plugin: 'docbook-reference'
C
Chris Beams 已提交
673
    apply from: "${gradleScriptDir}/jdiff.gradle"
674 675 676

    reference {
        sourceDir = file('src/reference/docbook')
677
        pdfFilename = 'spring-framework-reference.pdf'
C
Chris Beams 已提交
678
    }
679 680 681 682 683

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

    dependencies { // for integration tests
684 685 686 687 688 689 690
        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")
691
        testCompile project(":spring-test")
692
        testCompile project(":spring-web")
693
        testCompile project(":spring-webmvc-portlet")
694
        testCompile "org.hibernate:hibernate-core:4.1.0.Final"
695 696 697 698 699 700 701 702 703 704 705
        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'
706
        options.splitIndex = true
707 708 709 710 711 712 713 714 715 716 717 718 719 720 721
        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'
722
        baseName = 'spring-framework'
723 724
        classifier = 'docs'
        description = "Builds -${classifier} archive containing api and reference " +
725
            "for deployment at http://static.springframework.org/spring-framework/docs."
726 727 728 729 730 731 732 733 734 735 736

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

        from (api) {
            into 'api'
        }

        from (reference) {
            into 'reference'
C
Chris Beams 已提交
737
        }
738 739 740 741
    }

    task schemaZip(type: Zip) {
        group = 'Distribution'
742
        baseName = 'spring-framework'
743 744
        classifier = 'schema'
        description = "Builds -${classifier} archive containing all " +
745
            "XSDs for deployment at http://springframework.org/schema."
746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764

        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 已提交
765 766 767
        }
    }

768 769
    task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
        group = 'Distribution'
770
        baseName = 'spring-framework'
771 772 773 774
        classifier = 'dist'
        description = "Builds -${classifier} archive, containing all jars and docs, " +
                      "suitable for community download page."

775
        ext.baseDir = "${baseName}-${project.version}";
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 801 802 803 804 805

        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
                }
            }
        }
    }

806 807 808 809
    // 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'
810
        baseName = 'spring-framework'
811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836
        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"
                }
            }
        }
    }

837 838 839 840 841 842 843 844
    artifacts {
        archives docsZip
        archives schemaZip
        archives distZip
    }

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

847 848
        doLast() {
            def gradleOpts = "-XX:MaxPermSize=1024m -Xmx1024m"
849
            def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
850 851 852 853 854
            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=",
855
                "set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
856 857
        }
    }
858
}