build.gradle 26.3 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'
21
    ext.hsqldbVersion='1.8.0.10'
22
    ext.junitVersion = '4.10'
C
Chris Beams 已提交
23 24 25 26 27 28 29 30

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

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

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

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

    dependencies {
36 37 38
        testCompile ("junit:junit-dep:${junitVersion}") {
            exclude group: 'org.hamcrest', module: 'hamcrest-core'
        }
C
Chris Beams 已提交
39
        testCompile "org.hamcrest:hamcrest-all:1.1"
40
        testCompile "org.easymock:easymock:2.5.1"
C
Chris Beams 已提交
41 42 43 44 45 46 47 48
    }

    // 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 已提交
49 50
}

51 52
configure(subprojects) { subproject ->
    apply from: "${rootProject.projectDir}/publish-maven.gradle"
53 54

    jar {
55 56 57
        manifest.attributes['Implementation-Title'] = subproject.name
        manifest.attributes['Implementation-Version'] = subproject.version

58 59 60 61 62 63 64
        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 已提交
65

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

    task sourcesJar(type: Jar, dependsOn:classes) {
        classifier = 'sources'
75 76
        from sourceSets.main.allJava.srcDirs
        include '**/*.java', '**/*.aj'
77 78 79 80 81
    }

    task javadocJar(type: Jar) {
        classifier = 'javadoc'
        from javadoc
C
Chris Beams 已提交
82 83 84 85
    }

    artifacts {
        archives sourcesJar
86
        archives javadocJar
C
Chris Beams 已提交
87 88 89 90
    }
}


91 92 93 94
project('spring-core') {
    description = 'Spring Core'

    def asmVersion = '4.0'
95 96 97

    configurations {
        jarjar
98
        asm
99 100
    }

101 102 103
    task asmRepackJar(type: Jar) { repackJar ->
        repackJar.baseName = "spring-asm-repack"
        repackJar.version = asmVersion
104 105 106 107 108

        doLast() {
            project.ant {
                taskdef name: "jarjar", classname: "com.tonicsystems.jarjar.JarJarTask",
                    classpath: configurations.jarjar.asPath
109 110 111
                jarjar(destfile: repackJar.archivePath) {
                    configurations.asm.each { originalJar ->
                        zipfileset(src: originalJar)
112 113 114 115 116 117 118
                    }
                    rule(pattern: 'org.objectweb.asm.**', result: 'org.springframework.asm.@1')
                }
            }
        }
    }

C
Chris Beams 已提交
119
    dependencies {
120 121 122 123
        asm "org.ow2.asm:asm:${asmVersion}@jar", "org.ow2.asm:asm-commons:${asmVersion}@jar"
        jarjar 'com.googlecode.jarjar:jarjar:1.3'

        compile files(asmRepackJar)
C
Chris Beams 已提交
124
        compile "commons-logging:commons-logging:1.1.1"
125
        compile("org.aspectj:aspectjweaver:${aspectjVersion}", optional)
126 127
        compile("net.sf.jopt-simple:jopt-simple:3.0") { dep ->
            optional dep
C
Chris Beams 已提交
128 129
            exclude group: 'org.apache.ant', module: 'ant'
        }
130 131
        compile("log4j:log4j:1.2.15") { dep ->
            optional dep
C
Chris Beams 已提交
132 133 134 135 136 137 138 139
            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"
    }
140 141 142 143 144 145 146

    jar {
        // inline all repackaged asm classes directly into the spring-core jar
        from(asmRepackJar) {
            exclude 'META-INF/**'
        }
    }
C
Chris Beams 已提交
147 148 149 150 151 152
}

project('spring-beans') {
    description = 'Spring Beans'
    dependencies {
        compile project(":spring-core")
153 154 155
        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 已提交
156 157 158 159 160 161
    }
}

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

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

project('spring-instrument') {
    description = 'Spring Instrument'
    dependencies {
        compile project(":spring-core")
    }
182 183 184 185
    jar {
        manifest.attributes['Premain-Class'] =
            'org.springframework.instrument.InstrumentationSavingAgent'
    }
C
Chris Beams 已提交
186 187 188 189 190
}

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
        compile("aopalliance:aopalliance:1.0")
245 246
        compile("com.ibm.websphere:uow:6.0.2.17", provided)
        compile("javax.resource:connector-api:1.5", optional)
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("aopalliance:aopalliance:1.0")
284
        compile("org.codehaus.jackson:jackson-mapper-asl:1.4.2", optional)
C
Chris Beams 已提交
285 286 287 288 289 290
    }
}

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

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

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

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

project('spring-test') {
C
Chris Beams 已提交
471
    description = 'Spring TestContext Framework'
C
Chris Beams 已提交
472
    dependencies {
473
        compile project(":spring-core")
474 475 476 477 478 479
        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)
480 481
        compile(project(":spring-webmvc"), optional)
        compile(project(":spring-webmvc-portlet"), optional)
482 483 484 485 486 487 488 489 490 491 492
        compile("junit:junit-dep:${junitVersion}") { dep ->
            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'
        }
493 494 495 496
        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 已提交
497 498 499 500 501 502 503
        testCompile "org.slf4j:slf4j-jcl:1.5.3"
    }
}

project('spring-struts') {
    description = 'Spring Struts'
    dependencies {
504 505 506 507
        compile project(":spring-core")
        compile project(":spring-beans")
        compile project(":spring-context")
        compile project(":spring-web")
C
Chris Beams 已提交
508 509 510
        compile project(":spring-webmvc")
        compile "struts:struts:1.2.9"
        compile "commons-beanutils:commons-beanutils:1.7.0"
511
        compile("javax.servlet:servlet-api:2.5", provided)
C
Chris Beams 已提交
512 513 514 515 516 517
        testCompile project(":spring-test")
    }
}

project('spring-aspects') {
    description = 'Spring Aspects'
518
    apply from: 'aspects.gradle'
C
Chris Beams 已提交
519
    dependencies {
520 521 522 523 524 525
        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 已提交
526
        aspects project(":spring-orm")
527 528
        ajc "org.aspectj:aspectjtools:${aspectjVersion}"
        compile "org.aspectj:aspectjrt:${aspectjVersion}"
529 530
        testCompile project(":spring-core") // for CodeStyleAspect
        compile project(":spring-beans") // for 'p' namespace visibility
C
Chris Beams 已提交
531 532
        testCompile project(":spring-test")
    }
533 534
    eclipse.project {
        natures += 'org.eclipse.ajdt.ui.ajnature'
535 536
        buildCommands = [new org.gradle.plugins.ide.eclipse.model.
                BuildCommand('org.eclipse.ajdt.core.ajbuilder')]
537
    }
C
Chris Beams 已提交
538 539
}

540 541 542 543 544 545 546
configure(rootProject) {
    description = 'Spring Framework'

    apply plugin: 'docbook-reference'

    reference {
        sourceDir = file('src/reference/docbook')
C
Chris Beams 已提交
547
    }
548 549 550 551 552

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

    dependencies { // for integration tests
553 554 555 556 557 558 559
        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")
560
        testCompile project(":spring-test")
561
        testCompile project(":spring-web")
562
        testCompile project(":spring-webmvc-portlet")
563
        testCompile "org.hibernate:hibernate-core:4.1.0.Final"
564 565 566 567 568 569 570 571 572 573 574
        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'
575
        options.splitIndex = true
576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604
        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 已提交
605
        }
606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631
    }

    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 已提交
632 633 634
        }
    }

635 636 637 638 639 640
    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."

641
        ext.baseDir = "${project.name}-${project.version}";
642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671

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

672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701
    // 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'
        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"
                }
            }
        }
    }

702 703 704 705 706 707 708 709
    artifacts {
        archives docsZip
        archives schemaZip
        archives distZip
    }

    task wrapper(type: Wrapper) {
        description = 'Generates gradlew[.bat] scripts'
C
Chris Beams 已提交
710
        gradleVersion = '1.1'
711
    }
C
Chris Beams 已提交
712 713
}