build.gradle 23.7 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.5'
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'
C
Chris Beams 已提交
21 22 23 24 25 26 27 28

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

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

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

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

    dependencies {
S
Sam Brannen 已提交
34
        testCompile "junit:junit:4.10"
C
Chris Beams 已提交
35 36 37 38 39 40 41 42 43 44
        testCompile "org.easymock:easymock:2.5.1"
        testCompile "org.hamcrest:hamcrest-all:1.1"
    }

    // 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 已提交
45 46
}

47 48
configure(subprojects) { subproject ->
    apply from: "${rootProject.projectDir}/publish-maven.gradle"
49 50

    jar {
51 52 53
        manifest.attributes['Implementation-Title'] = subproject.name
        manifest.attributes['Implementation-Version'] = subproject.version

54 55 56 57 58 59 60
        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 已提交
61

62 63 64 65 66 67
    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 已提交
68 69 70

    task sourcesJar(type: Jar, dependsOn:classes) {
        classifier = 'sources'
71 72 73 74 75 76
        from sourceSets.main.allJava
    }

    task javadocJar(type: Jar) {
        classifier = 'javadoc'
        from javadoc
C
Chris Beams 已提交
77 78 79 80
    }

    artifacts {
        archives sourcesJar
81
        archives javadocJar
C
Chris Beams 已提交
82 83 84 85
    }
}


86 87
project("spring-asm") {
    description = 'Spring ASM'
C
Chris Beams 已提交
88
    ext.asmVersion = '2.2.3'
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124

    configurations {
        asm
        jarjar
    }
    dependencies {
        asm "asm:asm:${asmVersion}@jar", "asm:asm-commons:${asmVersion}@jar"
        jarjar 'com.googlecode.jarjar:jarjar:1.1'
    }

    task repackageAsm(type: Jar) { jar ->
        jar.baseName = "asm-repack"
        jar.version = asmVersion

        doLast() {
            project.ant {
                taskdef name: "jarjar", classname: "com.tonicsystems.jarjar.JarJarTask",
                    classpath: configurations.jarjar.asPath
                jarjar(destfile: archivePath, index: "true", filesetmanifest: "merge") {
                    configurations.asm.each { jarfile ->
                        zipfileset(src: jarfile)
                    }
                    rule(pattern: 'org.objectweb.asm.**', result: 'org.springframework.asm.@1')
                }
            }
        }
    }

    jar {
        dependsOn repackageAsm
        from(zipTree(repackageAsm.archivePath)) {
            exclude 'META-INF/INDEX.LIST'
        }
    }
}

C
Chris Beams 已提交
125 126 127 128 129 130
project('spring-core') {
    description = 'Spring Core'
    dependencies {
        // depend on spring-asm project in order to have it show up as a
        // <dependency> in the generated pom
        compile project(":spring-asm")
C
Chris Beams 已提交
131
        // depend directly on the spring-asm jar to avoid errors in Eclipse/STS
C
Chris Beams 已提交
132 133 134 135
        compile files(project(":spring-asm").jar.archivePath) {
            builtBy project(":spring-asm").jar
        }
        compile "commons-logging:commons-logging:1.1.1"
136
        compile("org.aspectj:aspectjweaver:${aspectjVersion}", optional)
137 138
        compile("net.sf.jopt-simple:jopt-simple:3.0") { dep ->
            optional dep
C
Chris Beams 已提交
139 140
            exclude group: 'org.apache.ant', module: 'ant'
        }
141 142
        compile("log4j:log4j:1.2.15") { dep ->
            optional dep
C
Chris Beams 已提交
143 144 145 146 147 148 149 150 151 152 153 154 155 156
            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"
    }
}

project('spring-beans') {
    description = 'Spring Beans'
    dependencies {
        compile project(":spring-core")
157 158 159
        compile("javax.el:el-api:1.0", provided)
        compile("javax.inject:javax.inject:1", provided)
        compile("cglib:cglib-nodep:2.2", optional)
C
Chris Beams 已提交
160 161 162 163 164 165
    }
}

project('spring-aop') {
    description = 'Spring AOP'
    dependencies {
166
        compile project(":spring-core")
C
Chris Beams 已提交
167
        compile project(":spring-beans")
168 169 170
        compile("com.jamonapi:jamon:2.4", optional)
        compile("aopalliance:aopalliance:1.0", optional)
        compile("commons-pool:commons-pool:1.5.3", optional)
C
Chris Beams 已提交
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
    }
}

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

project('spring-instrument') {
    description = 'Spring Instrument'
    dependencies {
        compile project(":spring-core")
    }
}

project('spring-instrument-tomcat') {
    description = 'Spring Instrument Tomcat'
    dependencies {
191
        compile("org.apache.tomcat:catalina:6.0.16", provided)
C
Chris Beams 已提交
192 193 194 195 196 197
    }
}

project('spring-context') {
    description = 'Spring Context'
    dependencies {
198
        compile(project(":spring-instrument"), optional)
C
Chris Beams 已提交
199
        compile project(":spring-aop")
200
        compile project(":spring-beans")
C
Chris Beams 已提交
201
        compile project(":spring-expression")
202
        compile project(":spring-core")
203 204 205 206 207 208 209 210 211 212
        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 已提交
213 214
            exclude group: 'javax.jws', module: 'jsr181'
        }
215 216 217
        compile("org.beanshell:bsh:2.0b4", optional)
        compile("org.codehaus.groovy:groovy-all:1.6.3", optional)
        compile("org.jruby:jruby:1.4.0", optional)
218 219 220 221
        compile("org.hibernate:hibernate-validator:4.2.0.Final") { dep ->
            optional dep
            exclude group: 'org.slf4j', module: 'slf4j-api'
        }
222
        compile("joda-time:joda-time:1.6", optional)
223
        compile("javax.cache:cache-api:0.5", optional)
224
        compile("net.sf.ehcache:ehcache-core:2.0.0", optional)
225
        compile("org.slf4j:slf4j-api:1.6.1", optional)
226
        compile("org.codehaus.jsr166-mirror:jsr166:1.7.0", provided)
C
Chris Beams 已提交
227
        testCompile "commons-dbcp:commons-dbcp:1.2.2"
228
        testCompile("javax.xml:jaxrpc-api:1.1")
C
Chris Beams 已提交
229 230
        testCompile("javax.inject:com.springsource.org.atinject.tck:1.0.0")
    }
231 232 233 234

    test {
        jvmArgs = ['-disableassertions:org.aspectj.weaver.UnresolvedType'] // SPR-7989
    }
C
Chris Beams 已提交
235 236 237 238 239
}

project('spring-tx') {
    description = 'Spring Transaction'
    dependencies {
240 241 242 243
        compile(project(":spring-context"), optional) // for JCA, @EnableTransactionManagement
        compile(project(":spring-aop"), optional)
        compile project(":spring-beans")
        compile project(":spring-core")
244 245
        compile("com.ibm.websphere:uow:6.0.2.17", provided)
        compile("javax.resource:connector-api:1.5", optional)
C
Chris Beams 已提交
246
        compile "aopalliance:aopalliance:1.0" // NOT optional, as opposed to in :spring-aop
247
        compile("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1", optional)
C
Chris Beams 已提交
248 249 250 251 252 253
        testCompile "org.easymock:easymockclassextension:2.3"
    }
}

project('spring-oxm') {
    description = 'Spring Object/XML Marshalling'
254
    apply from: 'oxm.gradle'
C
Chris Beams 已提交
255
    dependencies {
256 257 258
        compile project(":spring-beans")
        compile project(":spring-core")
        compile(project(":spring-context"), optional) // for Jaxb2Marshaller
C
Chris Beams 已提交
259
        compile "commons-lang:commons-lang:2.5"
260 261
        compile("com.thoughtworks.xstream:xstream:1.3.1", optional)
        compile("com.sun.xml.bind:jaxb-impl:2.1.7", optional)
262
        compile("org.jibx:jibx-run:1.2.3", optional)
263 264
        compile("org.apache.xmlbeans:xmlbeans:2.4.0", optional)
        compile("org.codehaus.castor:castor-xml:1.3.2", optional)
C
Chris Beams 已提交
265 266 267
        testCompile "org.codehaus.jettison:jettison:1.0.1"
        testCompile "xmlunit:xmlunit:1.2"
        testCompile "xmlpull:xmlpull:1.1.3.4a"
268 269 270
        testCompile(files(genCastor.classesDir).builtBy(genCastor))
        testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
        testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
C
Chris Beams 已提交
271 272 273 274 275 276
    }
}

project('spring-jms') {
    description = 'Spring JMS'
    dependencies {
277 278 279 280
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-aop")
        compile project(":spring-context")
C
Chris Beams 已提交
281
        compile project(":spring-tx")
282
        compile(project(":spring-oxm"), optional)
283
        compile("org.codehaus.jackson:jackson-mapper-asl:1.4.2", optional)
C
Chris Beams 已提交
284 285 286 287 288 289
    }
}

project('spring-jdbc') {
    description = 'Spring JDBC'
    dependencies {
290 291 292
        compile project(":spring-core")
        compile project(":spring-beans")
        compile(project(":spring-context"), optional) // for JndiDataSourceLookup
C
Chris Beams 已提交
293
        compile project(":spring-tx")
294 295 296 297 298
        compile("c3p0:c3p0:0.9.1.2", optional)
        compile("hsqldb:hsqldb:1.8.0.7", optional)
        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)
299
        compile("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1", optional)
C
Chris Beams 已提交
300 301 302 303 304 305
    }
}

project('spring-context-support') {
    description = 'Spring Context Support'
    dependencies {
306 307 308 309 310
        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
311 312 313 314 315 316
        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)
317 318 319 320
        compile("jasperreports:jasperreports:2.0.5") { dep ->
            optional dep
            transitive = false
        }
321 322 323
        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)
C
Chris Beams 已提交
324 325 326 327 328 329 330 331 332 333 334 335 336
        testCompile "hsqldb:hsqldb:1.8.0.10"
        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 {
337 338 339 340 341
        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
342 343 344 345 346 347 348 349 350 351 352 353 354 355
        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)
        compile("org.apache.httpcomponents:httpclient:4.1.1", optional)
        compile("org.codehaus.jackson:jackson-mapper-asl:1.4.2", optional)
356
        compile("com.fasterxml.jackson.core:jackson-databind:2.0.1", optional)
357 358 359
        compile("taglibs:standard:1.1.2", optional)
        compile("org.mortbay.jetty:jetty:6.1.9") { dep ->
            optional dep
C
Chris Beams 已提交
360 361 362 363 364 365 366 367 368 369
            exclude group: 'org.mortbay.jetty', module: 'servlet-api-2.5'
        }
        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 已提交
370
    description = 'Spring Object/Relational Mapping'
C
Chris Beams 已提交
371
    dependencies {
372 373
        // compiling against both hibernate 3 and 4 here in order to support
        // our respective orm.hibernate3 and orm.hibernate4 packages
374
        compile("org.hibernate:com.springsource.org.hibernate:3.3.1.GA", optional)
375
        compile("org.hibernate:hibernate-core:4.1.0.Final", optional)
376 377
        compile("org.hibernate:hibernate-cglib-repack:2.1_3", optional)
        compile("org.hibernate:hibernate-annotations:3.4.0.GA", optional)
378
        compile("org.hibernate:hibernate-entitymanager:4.1.0.Final", optional)
379 380 381 382 383 384
        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 已提交
385 386 387
        testCompile "javax.servlet:servlet-api:2.5"
        testCompile "org.slf4j:slf4j-jcl:1.5.3"
        testCompile "commons-dbcp:commons-dbcp:1.2.2"
388 389
        testCompile "org.eclipse.persistence:org.eclipse.persistence.asm:1.0.1"
        testCompile "org.eclipse.persistence:org.eclipse.persistence.antlr:1.0.1"
C
Chris Beams 已提交
390 391 392
        compile(project(":spring-web")) {
            exclude group: 'javax.persistence', module: 'persistence-api'
        }
393 394 395 396 397
        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 已提交
398 399 400 401 402 403 404
        compile project(":spring-jdbc")
    }
}

project('spring-webmvc') {
    description = 'Spring Web MVC'
    dependencies {
405 406 407
        compile project(":spring-core")
        compile project(":spring-expression")
        compile project(":spring-beans")
C
Chris Beams 已提交
408
        compile project(":spring-web")
409 410 411
        compile project(":spring-context")
        compile(project(":spring-context-support"), optional) // for Velocity support
        compile(project(":spring-oxm"), optional) // for MarshallingView
412 413 414 415 416 417 418
        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 已提交
419 420
            exclude group: 'log4j', module: 'log4j'
        }
421 422
        compile("org.apache.poi:poi:3.0.2-FINAL") { dep ->
            optional dep
C
Chris Beams 已提交
423 424
            exclude group: 'log4j', module: 'log4j'
        }
425 426
        compile("javax.servlet:jstl:1.1.2", provided)
        compile("org.apache.tomcat:tomcat-servlet-api:7.0.8", provided) // servlet-api 3.0
427
        testCompile project(":spring-aop")
428
        testCompile("org.slf4j:slf4j-log4j12:1.6.1") {
C
Chris Beams 已提交
429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
            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 {
450
        compile("javax.servlet:servlet-api:2.5", provided)
451 452 453 454
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile project(":spring-web")
C
Chris Beams 已提交
455 456 457 458 459 460 461 462
        compile project(":spring-webmvc")
    }

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

project('spring-test') {
C
Chris Beams 已提交
463
    description = 'Spring TestContext Framework'
C
Chris Beams 已提交
464
    dependencies {
465
        compile project(":spring-core")
466 467 468 469 470 471
        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)
472 473
        compile(project(":spring-webmvc"), optional)
        compile(project(":spring-webmvc-portlet"), optional)
S
Sam Brannen 已提交
474
        compile("junit:junit:4.10", optional)
475 476 477 478 479
        compile("org.testng:testng:6.5.2", optional)
        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 已提交
480 481 482 483 484 485 486
        testCompile "org.slf4j:slf4j-jcl:1.5.3"
    }
}

project('spring-struts') {
    description = 'Spring Struts'
    dependencies {
487 488 489 490
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile project(":spring-web")
C
Chris Beams 已提交
491 492 493
        compile project(":spring-webmvc")
        compile "struts:struts:1.2.9"
        compile "commons-beanutils:commons-beanutils:1.7.0"
494
        compile("javax.servlet:servlet-api:2.5", provided)
C
Chris Beams 已提交
495 496 497 498 499 500
        testCompile project(":spring-test")
    }
}

project('spring-aspects') {
    description = 'Spring Aspects'
501
    apply from: 'aspects.gradle'
C
Chris Beams 已提交
502
    dependencies {
503 504
        compile project(":spring-core")
        compile project(":spring-tx")
505
        compile project(":spring-orm")
C
Chris Beams 已提交
506
        aspects project(":spring-orm")
507 508
        ajc "org.aspectj:aspectjtools:${aspectjVersion}"
        compile "org.aspectj:aspectjrt:${aspectjVersion}"
C
Chris Beams 已提交
509 510
        testCompile project(":spring-test")
    }
511 512
    eclipse.project {
        natures += 'org.eclipse.ajdt.ui.ajnature'
513 514
        buildCommands = [new org.gradle.plugins.ide.eclipse.model.
                BuildCommand('org.eclipse.ajdt.core.ajbuilder')]
515
    }
C
Chris Beams 已提交
516 517
}

518 519 520 521 522 523 524
configure(rootProject) {
    description = 'Spring Framework'

    apply plugin: 'docbook-reference'

    reference {
        sourceDir = file('src/reference/docbook')
C
Chris Beams 已提交
525
    }
526 527 528 529 530

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

    dependencies { // for integration tests
531 532 533 534 535 536 537
        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")
538
        testCompile project(":spring-test")
539
        testCompile project(":spring-web")
540
        testCompile project(":spring-webmvc-portlet")
541
        testCompile "org.hibernate:hibernate-core:4.1.0.Final"
542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581
        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'
        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'
        classifier = 'docs'
        description = "Builds -${classifier} archive containing api and reference " +
            "for deployment at static.springframework.org/spring-framework/docs."

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

        from (api) {
            into 'api'
        }

        from (reference) {
            into 'reference'
C
Chris Beams 已提交
582
        }
583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608
    }

    task schemaZip(type: Zip) {
        group = 'Distribution'
        classifier = 'schema'
        description = "Builds -${classifier} archive containing all " +
            "XSDs for deployment at static.springframework.org/schema."

        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 已提交
609 610 611
        }
    }

612 613 614 615 616 617
    task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
        group = 'Distribution'
        classifier = 'dist'
        description = "Builds -${classifier} archive, containing all jars and docs, " +
                      "suitable for community download page."

C
Chris Beams 已提交
618
        def baseDir = "${project.name}-${project.version}";
619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656

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

    artifacts {
        archives docsZip
        archives schemaZip
        archives distZip
    }

    task wrapper(type: Wrapper) {
        description = 'Generates gradlew[.bat] scripts'
C
Chris Beams 已提交
657
        gradleVersion = '1.0-rc-3'
658
    }
C
Chris Beams 已提交
659 660
}