build.gradle 44.4 KB
Newer Older
1
buildscript {
2
	repositories {
P
Phillip Webb 已提交
3
		maven { url "http://repo.springsource.org/plugins-release" }
4 5
	}
	dependencies {
S
Sam Brannen 已提交
6
		classpath("org.springframework.build.gradle:propdeps-plugin:0.0.7")
R
Rob Winch 已提交
7
		classpath("org.asciidoctor:asciidoctor-gradle-plugin:0.7.0")
8
		classpath("org.springframework.build.gradle:docbook-reference-plugin:0.2.8")
9
		classpath("ws.antonov.gradle.plugins:gradle-plugin-protobuf:0.9.1")
10
	}
11 12
}

C
Chris Beams 已提交
13
configure(allprojects) { project ->
14 15
	group = "org.springframework"
	version = qualifyVersionIfNecessary(version)
16

17
	ext.aspectjVersion       = "1.8.1"
18
	ext.eclipseLinkVersion   = "2.4.2"
19 20
	ext.ehcacheVersion       = "2.8.3"
	ext.ehcacheJCacheVersion = "1.0.0"
21
	ext.groovyVersion        = "2.3.4"
22
	ext.hibernate3Version    = "3.6.10.Final"
23
	ext.hibernate4Version    = "4.3.6.Final"
24
	ext.hibVal4Version       = "4.3.1.Final"
25
	ext.hibVal5Version       = "5.1.1.Final"
26
	ext.hsqldbVersion        = "2.3.2"
27
	ext.jackson2Version      = "2.4.1"
R
Roy Clarkson 已提交
28
	ext.gsonVersion          = "2.2.4"
29
	ext.jasperReportsVersion = "5.6.0"
30
	ext.jettyVersion         = "9.2.1.v20140609"
31 32
	ext.jodaVersion          = "2.3"
	ext.junitVersion         = "4.11"
33
	ext.openJpaVersion       = "2.2.2"  // 2.3.0 not Java 8 compatible (based on ASM 4)
34
	ext.slf4jVersion         = "1.7.7"
S
Stephane Nicoll 已提交
35
	ext.snakeYamlVersion     = "1.13"
36
	ext.snifferVersion       = "1.11"
37
	ext.tiles2Version        = "2.2.2"
38
	ext.tiles3Version        = "3.0.4"
39
	ext.tomcatVersion        = "8.0.9"
40
	ext.xstreamVersion       = "1.4.7"
41
	ext.protobufVersion      = "2.5.0"
42

43
	ext.gradleScriptDir = "${rootProject.projectDir}/gradle"
44

45
	apply plugin: "propdeps"
P
Phillip Webb 已提交
46
	apply plugin: "java"
47
	apply plugin: "test-source-set-dependencies"
48
	apply from: "${gradleScriptDir}/ide.gradle"
C
Chris Beams 已提交
49

S
Stephane Nicoll 已提交
50 51 52 53 54
	configurations {
		sniffer
		javaApiSignature
	}

P
Phillip Webb 已提交
55 56 57
	compileJava.options*.compilerArgs = [
		"-Xlint:serial", "-Xlint:varargs", "-Xlint:cast", "-Xlint:classfile",
		"-Xlint:dep-ann", "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally",
58
		"-Xlint:overrides", "-Xlint:path", "-Xlint:-processing", "-Xlint:static",
P
Phillip Webb 已提交
59 60
		"-Xlint:try", "-Xlint:fallthrough", "-Xlint:rawtypes", "-Xlint:deprecation",
		"-Xlint:unchecked", "-Xlint:-options", "-Werror"
61
	]
C
Chris Beams 已提交
62

P
Phillip Webb 已提交
63 64 65
	compileTestJava.options*.compilerArgs = [
		"-Xlint:serial", "-Xlint:varargs", "-Xlint:cast", "-Xlint:classfile",
		"-Xlint:dep-ann", "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally",
66
		"-Xlint:overrides", "-Xlint:path", "-Xlint:-processing", "-Xlint:static",
P
Phillip Webb 已提交
67 68 69
		"-Xlint:try", "-Xlint:-fallthrough", "-Xlint:-rawtypes", "-Xlint:-deprecation",
		"-Xlint:-unchecked", "-Xlint:-options"]

70 71 72 73 74 75
	compileJava {
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

	compileTestJava {
76 77 78
		sourceCompatibility=1.8
		targetCompatibility=1.8
		options.compilerArgs += "-parameters"
J
Juergen Hoeller 已提交
79 80
	}

P
Phillip Webb 已提交
81
	sourceSets.test.resources.srcDirs = ["src/test/resources", "src/test/java"]
C
Chris Beams 已提交
82

C
Chris Beams 已提交
83 84
	test {
		systemProperty("java.awt.headless", "true")
85
		systemProperty("testGroups", project.properties.get("testGroups"))
86
		scanForTestClasses = false
87
		include(["**/*Tests.class", "**/*Test.class"])
88 89
		// Since we set scanForTestClasses to false, we need to filter out inner
		// classes with the "$" pattern; otherwise, using -Dtest.single=MyTests to
90
		// run MyTests by itself will fail if MyTests contains any inner classes.
91
		exclude(["**/Abstract*.class", '**/*$*'])
C
Chris Beams 已提交
92
	}
C
Chris Beams 已提交
93

94
	repositories {
95
		maven { url "http://repo.spring.io/libs-release" }
96
	}
C
Chris Beams 已提交
97

98
	dependencies {
99 100 101 102 103 104
		testCompile("junit:junit:${junitVersion}") {
			exclude group:'org.hamcrest', module:'hamcrest-core'
		}
		testCompile("org.mockito:mockito-core:1.9.5") {
			exclude group:'org.hamcrest', module:'hamcrest-core'
		}
105
		testCompile("org.hamcrest:hamcrest-all:1.3")
S
Stephane Nicoll 已提交
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
		testCompile("org.mockito:mockito-core:1.9.5")

		sniffer("org.codehaus.mojo:animal-sniffer-ant-tasks:${snifferVersion}")
		javaApiSignature("org.codehaus.mojo.signature:java16:1.1@signature") // As from Java6_18
	}

	task copyJavaApiSignature(type: Copy) {
		ext.to = file("$buildDir/javaApiSignature/")
		description "Copy the resolved Animal Sniffer signature dependency artifact to a known location and name"
		from configurations.javaApiSignature
		into to
		rename '.*signature', 'javaApi.signature'
	}

	task sniff {
		group = "Verification"
		description = "Checks the Java API signatures"

		dependsOn compileJava
		dependsOn copyJavaApiSignature

		inputs.dir sourceSets.main.output.classesDir
		inputs.dir copyJavaApiSignature.to
		outputs.upToDateWhen { true }
		
		doLast {
			ant.taskdef(
				name: 'animalSniffer',
				classname: 'org.codehaus.mojo.animal_sniffer.ant.CheckSignatureTask',
				classpath: configurations.sniffer.asPath
			)

			ant.animalSniffer(
					signature: "$buildDir/javaApiSignature/javaApi.signature",
					classpath: sourceSets.main.compileClasspath.asPath) {
				path(path: sourceSets.main.output.classesDir)
142 143 144
				annotation(className: "org.springframework.lang.UsesJava7")
				annotation(className: "org.springframework.lang.UsesJava8")
				annotation(className: "org.springframework.lang.UsesSunHttpServer")
S
Stephane Nicoll 已提交
145 146
			}
		}
147
	}
C
Chris Beams 已提交
148 149

	ext.javadocLinks = [
P
Phillip Webb 已提交
150
		"http://docs.oracle.com/javase/7/docs/api/",
151
		"http://docs.oracle.com/javaee/7/api/",
J
Juergen Hoeller 已提交
152 153 154
		"http://docs.oracle.com/cd/E13222_01/wls/docs90/javadocs/", // CommonJ
		"http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.javadoc.doc/web/apidocs/",
		"http://glassfish.java.net/nonav/docs/v3/api/",
P
Phillip Webb 已提交
155 156
		"http://docs.jboss.org/jbossas/javadoc/4.0.5/connector/",
		"http://docs.jboss.org/jbossas/javadoc/7.1.2.Final/",
J
Juergen Hoeller 已提交
157 158 159 160
		"http://commons.apache.org/proper/commons-lang/javadocs/api-2.5/",
		"http://commons.apache.org/proper/commons-codec/apidocs/",
		"http://commons.apache.org/proper/commons-dbcp/apidocs/",
		"http://portals.apache.org/pluto/portlet-2.0-apidocs/",
161
		"http://tiles.apache.org/tiles-request/apidocs/",
J
Juergen Hoeller 已提交
162
		"http://tiles.apache.org/framework/apidocs/",
P
Phillip Webb 已提交
163
		"http://aopalliance.sourceforge.net/doc/",
C
Chris Beams 已提交
164
		"http://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
J
Juergen Hoeller 已提交
165
		"http://ehcache.org/apidocs/",
166
		"http://quartz-scheduler.org/api/2.2.0/",
167 168
		"http://fasterxml.github.com/jackson-core/javadoc/2.3.0/",
		"http://fasterxml.github.com/jackson-databind/javadoc/2.3.0/",
169
		"http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/"
C
Chris Beams 已提交
170
	] as String[]
171 172
}

173
configure(subprojects - project(":spring-build-src")) { subproject ->
174
	apply plugin: "merge"
175 176 177
	apply from: "${gradleScriptDir}/publish-maven.gradle"

	jar {
P
Phillip Webb 已提交
178 179 180 181
		manifest.attributes["Created-By"] =
			"${System.getProperty("java.version")} (${System.getProperty("java.specification.vendor")})"
		manifest.attributes["Implementation-Title"] = subproject.name
		manifest.attributes["Implementation-Version"] = subproject.version
182 183 184 185 186

		from("${rootProject.projectDir}/src/dist") {
			include "license.txt"
			include "notice.txt"
			into "META-INF"
P
Phillip Webb 已提交
187
			expand(copyright: new Date().format("yyyy"), version: project.version)
188 189 190 191
		}
	}

	javadoc {
C
Chris Beams 已提交
192 193
		description = "Generates project-level javadoc for use in -javadoc jar"

194 195 196
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = project.name
C
Chris Beams 已提交
197
		options.links(project.ext.javadocLinks)
198
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
199 200 201 202 203

		// suppress warnings due to cross-module @see and @link references;
		// note that global 'api' task does display all warnings.
		logging.captureStandardError LogLevel.INFO
		logging.captureStandardOutput LogLevel.INFO // suppress "## warnings" message
204 205 206
	}

	task sourcesJar(type: Jar, dependsOn:classes) {
P
Phillip Webb 已提交
207
		classifier = "sources"
208
		from sourceSets.main.allJava.srcDirs
P
Phillip Webb 已提交
209
		include "**/*.java", "**/*.aj"
210 211 212
	}

	task javadocJar(type: Jar) {
P
Phillip Webb 已提交
213
		classifier = "javadoc"
214 215 216 217 218 219 220
		from javadoc
	}

	artifacts {
		archives sourcesJar
		archives javadocJar
	}
C
Chris Beams 已提交
221 222
}

223 224
project("spring-build-src") {
	description = "Exposes gradle buildSrc for IDE support"
225
	apply plugin: "groovy"
226 227 228

	dependencies {
		compile gradleApi()
R
Rob Winch 已提交
229
		compile localGroovy()
230 231 232 233 234
	}

	configurations.archives.artifacts.clear()
}

P
Phillip Webb 已提交
235 236
project("spring-core") {
	description = "Spring Core"
237

238 239
	// As of Spring 4.0.3, spring-core includes asm 5.0 and repackages cglib 3.1, inlining
	// both into the spring-core jar. cglib 3.1 itself depends on asm 4+, and is therefore
240
	// further transformed by the JarJar task to depend on org.springframework.asm; this
241
	// avoids including two different copies of asm unnecessarily.
242 243
	def cglibVersion = "3.1"
	def objenesisVersion = "2.1"
244 245 246 247

	configurations {
		jarjar
		cglib
248
		objenesis
249 250 251 252 253 254 255 256 257 258 259 260 261 262 263
	}

	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
P
Phillip Webb 已提交
264 265
					rule(pattern: "net.sf.cglib.**", result: "org.springframework.cglib.@1")
					// as mentioned above, transform cglib"s internal asm dependencies from
266 267
					// org.objectweb.asm => org.springframework.asm. Doing this counts on the
					// the fact that Spring and cglib depend on the same version of asm!
P
Phillip Webb 已提交
268
					rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
269 270 271 272 273
				}
			}
		}
	}

274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292
	task objenesisRepackJar(type: Jar) { repackJar ->
		repackJar.baseName = "spring-objenesis-repack"
		repackJar.version = objenesisVersion

		doLast() {
			project.ant {
				taskdef name: "jarjar", classname: "com.tonicsystems.jarjar.JarJarTask",
					classpath: configurations.jarjar.asPath
				jarjar(destfile: repackJar.archivePath) {
					configurations.objenesis.each { originalJar ->
						zipfileset(src: originalJar)
					}
					// repackage org.objenesis => org.springframework.objenesis
					rule(pattern: "org.objenesis.**", result: "org.springframework.objenesis.@1")
				}
			}
		}
	}

293
	dependencies {
294
		cglib("cglib:cglib:${cglibVersion}@jar")
295
		objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
296
		jarjar("com.googlecode.jarjar:jarjar:1.3")
297

P
Phillip Webb 已提交
298
		compile(files(cglibRepackJar))
299
		compile("commons-logging:commons-logging:1.1.3")
300
		optional("commons-codec:commons-codec:1.9")
301
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
302
		optional("net.sf.jopt-simple:jopt-simple:4.6")
303
		optional("log4j:log4j:1.2.17")
304
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
A
Arjen Poutsma 已提交
305
		testCompile("xmlunit:xmlunit:1.5")
P
Phillip Webb 已提交
306 307 308
		testCompile("org.codehaus.woodstox:wstx-asl:3.2.7") {
			exclude group: "stax", module: "stax-api"
		}
309 310 311
	}

	jar {
312
		// inline repackaged cglib classes directly into the spring-core jar
313 314
		dependsOn cglibRepackJar
		from(zipTree(cglibRepackJar.archivePath)) {
P
Phillip Webb 已提交
315
			include "org/springframework/cglib/**"
316
		}
317 318 319 320 321

		dependsOn objenesisRepackJar
		from(zipTree(objenesisRepackJar.archivePath)) {
			include "org/springframework/objenesis/**"
		}
322
	}
C
Chris Beams 已提交
323 324
}

P
Phillip Webb 已提交
325 326
project("spring-beans") {
	description = "Spring Beans"
327

328
	dependencies {
329 330
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
331
		optional("javax.inject:javax.inject:1")
332
		optional("javax.el:javax.el-api:2.2.5")
S
Stephane Nicoll 已提交
333
		optional("org.yaml:snakeyaml:${snakeYamlVersion}")
334
		testCompile("log4j:log4j:1.2.17")
335
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
S
Stephane Nicoll 已提交
336
    }
C
Chris Beams 已提交
337 338
}

339 340
project("spring-beans-groovy") {
	description "Groovy Bean Definitions"
J
Juergen Hoeller 已提交
341
	merge.into = project(":spring-beans")
342
	apply plugin: "groovy"
J
Juergen Hoeller 已提交
343 344 345

	dependencies {
		compile(project(":spring-core"))
346
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
J
Juergen Hoeller 已提交
347 348 349 350 351 352 353
	}

	// this module's Java and Groovy sources need to be compiled together
	compileJava.enabled=false
	sourceSets {
		main {
			groovy {
354
				srcDir "src/main/java"
J
Juergen Hoeller 已提交
355 356 357
			}
		}
	}
358 359 360 361 362

	compileGroovy {
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}
J
Juergen Hoeller 已提交
363 364
}

P
Phillip Webb 已提交
365 366
project("spring-aop") {
	description = "Spring AOP"
367

368
	dependencies {
369
		compile(project(":spring-beans"))
370 371
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
372
		compile(files(project(":spring-core").objenesisRepackJar))
373
		compile("aopalliance:aopalliance:1.0")
374
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
375
		optional("commons-pool:commons-pool:1.6")
376
		optional("com.jamonapi:jamon:2.76")
377
	}
C
Chris Beams 已提交
378 379
}

P
Phillip Webb 已提交
380 381
project("spring-expression") {
	description = "Spring Expression Language (SpEL)"
382

383
	dependencies {
384
		compile(project(":spring-core"))
385
	}
C
Chris Beams 已提交
386 387
}

P
Phillip Webb 已提交
388 389
project("spring-instrument") {
	description = "Spring Instrument"
390

391
	jar {
P
Phillip Webb 已提交
392 393
		manifest.attributes["Premain-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
394 395
		manifest.attributes["Agent-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
396 397 398
		manifest.attributes["Can-Redefine-Classes"] = "true"
		manifest.attributes["Can-Retransform-Classes"] = "true"
		manifest.attributes["Can-Set-Native-Method-Prefix"] = "false"
399
	}
C
Chris Beams 已提交
400 401
}

P
Phillip Webb 已提交
402 403
project("spring-instrument-tomcat") {
	description = "Spring Instrument Tomcat"
404

405
	dependencies {
406
		provided("org.apache.tomcat:catalina:6.0.16")
407
	}
C
Chris Beams 已提交
408 409
}

P
Phillip Webb 已提交
410 411
project("spring-context") {
	description = "Spring Context"
412
	apply plugin: "groovy"
413

414
	dependencies {
415 416 417 418 419
		compile(project(":spring-aop"))
		compile(project(":spring-beans"))
		compile(project(":spring-expression"))
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
420
		optional(project(":spring-instrument"))
421
		optional("javax.inject:javax.inject:1")
422
		optional("javax.ejb:ejb-api:3.0")
423
		optional("javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0")
424
		optional("org.eclipse.persistence:javax.persistence:2.0.0")
425
		optional("javax.validation:validation-api:1.0.0.GA")
426
		optional("org.hibernate:hibernate-validator:${hibVal4Version}")
427 428
		optional("joda-time:joda-time:${jodaVersion}")
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
J
Juergen Hoeller 已提交
429
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
430
		optional("org.beanshell:bsh:2.0b4")
431
		optional("org.jruby:jruby:1.7.12")
432
		testCompile("javax.inject:javax.inject-tck:1")
433 434
		testCompile("commons-dbcp:commons-dbcp:1.4")
		testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
435 436
	}

437 438 439
	// pick up RmiInvocationWrapperRTD.xml in src/main
	sourceSets.main.resources.srcDirs += "src/main/java"

440
	test {
P
Phillip Webb 已提交
441
		jvmArgs = ["-disableassertions:org.aspectj.weaver.UnresolvedType"] // SPR-7989
442
	}
443 444 445 446 447 448 449 450 451
}

project("spring-messaging") {
	description = "Spring Messaging"

	dependencies {
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
		compile(project(":spring-context"))
J
Juergen Hoeller 已提交
452 453
		optional("org.projectreactor:reactor-core:1.1.3.RELEASE")
		optional("org.projectreactor:reactor-net:1.1.3.RELEASE")
B
Brian Clozel 已提交
454
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
455 456
			exclude group: "javax.servlet", module: "javax.servlet-api"
		}
B
Brian Clozel 已提交
457
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
458
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
459
		testCompile(project(":spring-test"))
460
		testCompile("javax.inject:javax.inject-tck:1")
461
		testCompile("javax.servlet:javax.servlet-api:3.1.0")
462
		testCompile("javax.validation:validation-api:1.0.0.GA")
463
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
464 465 466 467 468
		testCompile("org.apache.activemq:activemq-broker:5.8.0")
		testCompile("org.apache.activemq:activemq-kahadb-store:5.8.0") {
			exclude group: "org.springframework", module: "spring-context"
		}
		testCompile("org.apache.activemq:activemq-stomp:5.8.0")
B
Brian Clozel 已提交
469
		testCompile("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
470
			exclude group: "javax.servlet", module: "javax.servlet-api"
471
		}
472 473 474
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
		testCompile("org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}")
		testCompile("org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}")
475
		testCompile("commons-dbcp:commons-dbcp:1.4")
476
		testCompile("log4j:log4j:1.2.17")
477
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
478
	}
C
Chris Beams 已提交
479 480
}

P
Phillip Webb 已提交
481 482
project("spring-tx") {
	description = "Spring Transaction"
483

484
	dependencies {
485 486
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
487 488 489
		optional(project(":spring-aop"))
		optional(project(":spring-context")) // for JCA, @EnableTransactionManagement
		optional("aopalliance:aopalliance:1.0")
490
		optional("javax.transaction:javax.transaction-api:1.2")
491
		optional("javax.resource:connector-api:1.5")
492
		optional("javax.ejb:ejb-api:3.0")
493
		optional("com.ibm.websphere:uow:6.0.2.17")
494
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
495
		testCompile("org.eclipse.persistence:javax.persistence:2.0.0")
496
	}
C
Chris Beams 已提交
497 498
}

P
Phillip Webb 已提交
499 500 501
project("spring-oxm") {
	description = "Spring Object/XML Marshalling"
	apply from: "oxm.gradle"
502

P
Phillip Webb 已提交
503
	compileTestJava {
504 505 506 507 508 509
		// necessary to avoid java.lang.VerifyError on jibx compilation
		// see http://jira.codehaus.org/browse/JIBX-465
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

510
	dependencies {
511 512
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
513
		optional("org.codehaus.castor:castor-xml:1.3.3")  {
514
			exclude group: 'stax', module: 'stax-api'
515
			exclude group: "org.springframework", module: "spring-context"
516 517 518 519 520 521 522 523
		}
		optional("org.apache.xmlbeans:xmlbeans:2.6.0") {
			exclude group: 'stax', module: 'stax-api'
		}
		optional("com.thoughtworks.xstream:xstream:${xstreamVersion}") {
			exclude group: 'xpp3', module: 'xpp3_min'
			exclude group: 'xmlpull', module: 'xmlpull'
		}
524
		optional("org.jibx:jibx-run:1.2.5")
525
		testCompile(project(":spring-context"))
A
Arjen Poutsma 已提交
526
		testCompile("xmlunit:xmlunit:1.5")
527 528 529 530
		testCompile("xpp3:xpp3:1.1.3.4.O")
		testCompile("org.codehaus.jettison:jettison:1.0.1") {
			exclude group: 'stax', module: 'stax-api'
		}
531 532 533 534
		testCompile(files(genCastor.classesDir).builtBy(genCastor))
		testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
		testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
	}
C
Chris Beams 已提交
535 536
}

P
Phillip Webb 已提交
537 538
project("spring-jms") {
	description = "Spring JMS"
539

540
	dependencies {
541 542 543 544
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-aop"))
		compile(project(":spring-context"))
545
		compile(project(":spring-messaging"))
546
		compile(project(":spring-tx"))
547
		provided("javax.jms:jms-api:1.1-rev-1")
548 549
		optional(project(":spring-oxm"))
		optional("aopalliance:aopalliance:1.0")
550
		optional("javax.transaction:javax.transaction-api:1.2")
551
		optional("javax.resource:connector-api:1.5")
552
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
553
	}
C
Chris Beams 已提交
554 555
}

P
Phillip Webb 已提交
556 557
project("spring-jdbc") {
	description = "Spring JDBC"
558

559
	dependencies {
560
		compile(project(":spring-beans"))
561
		compile(project(":spring-core"))
562
		compile(project(":spring-tx"))
563
		optional(project(":spring-context")) // for JndiDataSourceLookup
564
		optional("javax.transaction:javax.transaction-api:1.2")
565
		optional("com.mchange:c3p0:0.9.2.1")
P
Phillip Webb 已提交
566
		optional("org.hsqldb:hsqldb:${hsqldbVersion}")
567
		optional("com.h2database:h2:1.4.179")
568 569
		optional("org.apache.derby:derby:10.10.2.0")
		optional("org.apache.derby:derbyclient:10.10.2.0")
570
	}
C
Chris Beams 已提交
571 572
}

P
Phillip Webb 已提交
573 574
project("spring-context-support") {
	description = "Spring Context Support"
575

576
	dependencies {
577 578 579
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
580 581
		optional(project(":spring-jdbc")) // for Quartz support
		optional(project(":spring-tx")) // for Quartz support
582
		optional("javax.mail:javax.mail-api:1.5.2")
S
Stephane Nicoll 已提交
583
		optional("javax.cache:cache-api:1.0.0")
584
		optional("com.google.guava:guava:17.0")
585
		optional("net.sf.ehcache:ehcache:${ehcacheVersion}")
586
		optional("org.quartz-scheduler:quartz:2.2.1")
587
		optional("org.codehaus.fabric3.api:commonj:1.1.0")
588
		optional("org.apache.velocity:velocity:1.7")
589
		optional("org.freemarker:freemarker:2.3.20")
590
		optional("com.lowagie:itext:2.1.7")
591 592 593 594
		optional("net.sf.jasperreports:jasperreports:$jasperReportsVersion") {
			exclude group: "com.fasterxml.jackson.core", module: "jackson-annotations"
			exclude group: "com.fasterxml.jackson.core", module: "jackson-core"
			exclude group: "com.fasterxml.jackson.core", module: "jackson-databind"
595 596
			exclude group: "org.olap4j", module: "olap4j"
			exclude group: "xml-apis", module: "xml-apis"
597
		}
598
		testCompile(project(":spring-context"))
599
		testCompile("org.apache.poi:poi:3.10-FINAL")
600 601
		testCompile("commons-beanutils:commons-beanutils:1.8.0") // for Velocity/JasperReports
		testCompile("commons-digester:commons-digester:1.8.1") // for Velocity/JasperReports
P
Phillip Webb 已提交
602
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
603
		testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
604
		testCompile("org.ehcache:jcache:${ehcacheJCacheVersion}")
605
		testRuntime("com.sun.mail:javax.mail:1.5.2")
606 607 608
	}

	// pick up **/*.types files in src/main
P
Phillip Webb 已提交
609
	sourceSets.main.resources.srcDirs += "src/main/java"
C
Chris Beams 已提交
610 611
}

P
Phillip Webb 已提交
612 613
project("spring-web") {
	description = "Spring Web"
614
	apply plugin: "groovy"
615

616 617 618 619 620 621 622 623 624 625 626 627 628 629 630
	// Re-generate Protobuf classes from *.proto files and move them in test sources
	if (project.hasProperty('genProtobuf')) {
		apply plugin: 'protobuf'

		task updateGenProtobuf(type:Copy, dependsOn: ":spring-web:generateTestProto") {
			from "${project.buildDir}/generated-sources/test/"
			into "${projectDir}/src/test/java"
			doLast {
				project.delete "${project.buildDir}/generated-sources/test"
			}
		}

		tasks.getByPath("compileTestJava").dependsOn "updateGenProtobuf"
	}

631
	dependencies {
632
		compile(project(":spring-aop")) // for JaxWsPortProxyFactoryBean
633
		compile(project(":spring-beans")) // for MultiPartFilter
634
		compile(project(":spring-context"))
635
		compile(project(":spring-core"))
636
		provided("javax.servlet:javax.servlet-api:3.0.1")
637
		optional(project(":spring-oxm")) // for MarshallingHttpMessageConverter
638
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
639
		optional("javax.portlet:portlet-api:2.0")
640
		optional("javax.el:javax.el-api:2.2.5")
641
		optional("javax.faces:javax.faces-api:2.2")
642
		optional("aopalliance:aopalliance:1.0")
643
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
644
		optional("com.caucho:hessian:4.0.38")
645
		optional("commons-fileupload:commons-fileupload:1.3.1")
646
		optional("org.apache.httpcomponents:httpclient:4.3.4")
647
		optional("org.apache.httpcomponents:httpasyncclient:4.0.1")
648
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
R
Roy Clarkson 已提交
649
		optional("com.google.code.gson:gson:${gsonVersion}")
650
		optional("com.rometools:rome:1.5.0")
B
Brian Clozel 已提交
651
		optional("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
652
			exclude group: "javax.servlet", module: "javax.servlet-api"
653
		}
B
Brian Clozel 已提交
654
		optional("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
655
			exclude group: "javax.servlet", module: "javax.servlet-api"
656
		}
657
		optional("log4j:log4j:1.2.17")
R
Polish  
Rossen Stoyanchev 已提交
658 659
		optional("com.googlecode.protobuf-java-format:protobuf-java-format:1.2")
		optional("com.google.protobuf:protobuf-java:${protobufVersion}")
660
		testCompile(project(":spring-context-support"))  // for JafMediaTypeFactory
A
Arjen Poutsma 已提交
661
		testCompile("xmlunit:xmlunit:1.5")
662
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
663 664 665
		testCompile("org.apache.taglibs:taglibs-standard-jstlel:1.2.1") {
			exclude group: "org.apache.taglibs", module: "taglibs-standard-spec"
		}
666 667 668
	}

	// pick up ContextLoader.properties in src/main
P
Phillip Webb 已提交
669
	sourceSets.main.resources.srcDirs += "src/main/java"
C
Chris Beams 已提交
670 671
}

672
project("spring-websocket") {
673
	description = "Spring WebSocket"
674 675 676 677 678

	dependencies {
		compile(project(":spring-core"))
		compile(project(":spring-context"))
		compile(project(":spring-web"))
679
		optional(project(":spring-messaging"))
680
		optional(project(":spring-webmvc"))
681
		optional("javax.servlet:javax.servlet-api:3.1.0")
682
		optional("javax.websocket:javax.websocket-api:1.0")
683
		optional("org.apache.tomcat:tomcat-websocket:${tomcatVersion}") {
684 685 686
			exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
			exclude group: "org.apache.tomcat", module: "tomcat-servlet-api"
		}
687 688
		optional("org.glassfish.tyrus:tyrus-websocket-core:1.2.1")
		optional("org.glassfish.tyrus:tyrus-container-servlet:1.2.1")
B
Brian Clozel 已提交
689
		optional("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
690 691
			exclude group: "javax.servlet", module: "javax.servlet"
		}
B
Brian Clozel 已提交
692
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
693
			exclude group: "javax.servlet", module: "javax.servlet"
694
		}
B
Brian Clozel 已提交
695
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
R
Rossen Stoyanchev 已提交
696
		optional("org.eclipse.jetty:jetty-client:${jettyVersion}")
697 698
		optional("io.undertow:undertow-core:1.0.15.Final")
		optional("io.undertow:undertow-servlet:1.0.15.Final") {
699
			exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_3.1_spec"
700
			exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
701
		}
702
		optional("io.undertow:undertow-websockets-jsr:1.0.15.Final") {
703 704
			exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.0_spec"
		}
705
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
706 707 708
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
		testCompile("org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}")
		testCompile("org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}")
J
Juergen Hoeller 已提交
709 710
		testCompile("org.projectreactor:reactor-core:1.1.3.RELEASE")
		testCompile("org.projectreactor:reactor-net:1.1.3.RELEASE")
711 712
		testCompile("log4j:log4j:1.2.17")
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
713 714 715
	}
}

P
Phillip Webb 已提交
716 717
project("spring-orm") {
	description = "Spring Object/Relational Mapping"
718

719
	dependencies {
720 721 722 723 724 725 726 727
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
		compile(project(":spring-jdbc"))
		compile(project(":spring-tx"))
		optional(project(":spring-aop"))
		optional(project(":spring-context"))
		optional(project(":spring-web"))
		optional("aopalliance:aopalliance:1.0")
728 729 730
		optional("org.eclipse.persistence:javax.persistence:2.0.5")
		optional("org.eclipse.persistence:org.eclipse.persistence.core:${eclipseLinkVersion}")
		optional("org.eclipse.persistence:org.eclipse.persistence.jpa:${eclipseLinkVersion}") {
731 732 733 734 735 736 737 738 739
			exclude group: 'org.eclipse.persistence', module: 'javax.persistence'
		}
		optional("org.hibernate:hibernate-core:${hibernate3Version}") {
			exclude group: 'org.hibernate.javax.persistence', module: 'hibernate-jpa-2.0-api'
			exclude group: 'javax.transaction', module: 'jta'
		}
		optional("org.hibernate:hibernate-entitymanager:${hibernate3Version}") {
			exclude group: 'org.hibernate.javax.persistence', module: 'hibernate-jpa-2.0-api'
		}
740
		optional("org.apache.openjpa:openjpa:${openJpaVersion}") {
741 742 743 744 745
			exclude group: 'junit', module: 'junit'
			exclude group: 'org.apache.geronimo.specs', module: 'geronimo-jpa_2.0_spec'
			exclude group: 'org.apache.geronimo.specs', module: 'geronimo-jta_1.1_spec'
			exclude group: 'org.apache.geronimo.specs', module: 'geronimo-jms_1.1_spec'
		}
746
		optional("javax.jdo:jdo-api:3.0.1") {
747 748
			exclude group: 'javax.transaction', module: 'transaction-api'
		}
749
		optional("javax.servlet:javax.servlet-api:3.0.1")
750
		testCompile("commons-dbcp:commons-dbcp:1.4")
S
Sam Brannen 已提交
751
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
P
Phillip Webb 已提交
752
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
753
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
754
	}
C
Chris Beams 已提交
755 756
}

P
Phillip Webb 已提交
757 758
project("spring-orm-hibernate4") {
	description = "Spring Object/Relational Mapping - Hibernate 4 support"
759
	merge.into = project(":spring-orm")
760

761
	dependencies {
762
		provided(project(":spring-jdbc"))
763
		provided(project(":spring-tx"))
764
		optional(project(":spring-web"))
765 766
		optional("org.hibernate:hibernate-core:${hibernate4Version}")
		optional("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
767
		optional("javax.servlet:javax.servlet-api:3.0.1")
768
        optional("aopalliance:aopalliance:1.0")
769 770
		testCompile("javax.validation:validation-api:1.1.0.GA")
		testCompile("org.hibernate:hibernate-validator:${hibVal5Version}")
771 772
		testCompile("javax.el:javax.el-api:2.2.5")
		testCompile("org.glassfish.web:javax.el:2.2.6")
773
	}
774 775
}

P
Phillip Webb 已提交
776 777
project("spring-webmvc") {
	description = "Spring Web MVC"
778

779
	dependencies {
780 781
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
782
		compile(project(":spring-core"))
783
		compile(files(project(":spring-core").objenesisRepackJar))
784 785
		compile(project(":spring-expression"))
		compile(project(":spring-web"))
786
		provided("javax.servlet:javax.servlet-api:3.0.1")
787 788
		optional(project(":spring-context-support")) // for Velocity support
		optional(project(":spring-oxm")) // for MarshallingView
789 790
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
791
		optional("net.sourceforge.jexcelapi:jxl:2.6.12")
792
		optional("org.apache.poi:poi:3.10-FINAL")
793 794
		optional("org.apache.velocity:velocity:1.7")
		optional("velocity-tools:velocity-tools-view:1.4")
795
		optional("org.freemarker:freemarker:2.3.20")
796
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
797
		optional("com.lowagie:itext:2.1.7")
798
		optional("net.sf.jasperreports:jasperreports:$jasperReportsVersion") {
799 800 801
			exclude group: "com.fasterxml.jackson.core", module: "jackson-annotations"
			exclude group: "com.fasterxml.jackson.core", module: "jackson-core"
			exclude group: "com.fasterxml.jackson.core", module: "jackson-databind"
802 803
			exclude group: "org.olap4j", module: "olap4j"
			exclude group: "xml-apis", module: "xml-apis"
804 805
		}
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
806
		optional("com.rometools:rome:1.5.0")
807 808 809
		optional("javax.el:javax.el-api:2.2.5")
		optional("org.apache.tiles:tiles-api:${tiles3Version}")
		optional("org.apache.tiles:tiles-core:${tiles3Version}") {
810 811
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
812
		optional("org.apache.tiles:tiles-servlet:${tiles3Version}") {
813 814
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
815
		optional("org.apache.tiles:tiles-jsp:${tiles3Version}") {
816 817
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
818
		optional("org.apache.tiles:tiles-el:${tiles3Version}") {
819 820
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
821
		optional("org.apache.tiles:tiles-extras:${tiles3Version}") {
822 823 824
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
			exclude group: "org.springframework", module: "spring-web"
		}
825 826
		testCompile(project(":spring-aop"))
		testCompile("rhino:js:1.7R1")
A
Arjen Poutsma 已提交
827
		testCompile("xmlunit:xmlunit:1.5")
828
		testCompile("dom4j:dom4j:1.6.1") {
P
Phillip Webb 已提交
829
			exclude group: "xml-apis", module: "xml-apis"
830 831
		}
		testCompile("jaxen:jaxen:1.1.1") {
P
Phillip Webb 已提交
832 833 834
			exclude group: "xml-apis", module: "xml-apis"
			exclude group: "xom", module: "xom"
			exclude group: "xerces", module: "xercesImpl"
835
		}
B
Brian Clozel 已提交
836
		testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
837
			exclude group: "javax.servlet", module: "javax.servlet"
838
		}
B
Brian Clozel 已提交
839
		testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
840
			exclude group: "javax.servlet", module: "javax.servlet"
841 842
		}
		testCompile("javax.validation:validation-api:1.0.0.GA")
843
		testCompile("org.hibernate:hibernate-validator:${hibVal4Version}")
844
		testCompile("org.apache.httpcomponents:httpclient:4.3.4")
845
		testCompile("commons-fileupload:commons-fileupload:1.3.1")
846
		testCompile("commons-io:commons-io:1.3")
847
		testCompile("joda-time:joda-time:${jodaVersion}")
848
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
849 850 851
	}

	// pick up DispatcherServlet.properties in src/main
P
Phillip Webb 已提交
852
	sourceSets.main.resources.srcDirs += "src/main/java"
C
Chris Beams 已提交
853 854
}

855 856
project("spring-webmvc-tiles2") {
	description = "Spring Framework Tiles2 Integration"
857
	merge.into = project(":spring-webmvc")
858

859
	dependencies {
860 861
		provided(project(":spring-context"))
		provided(project(":spring-web"))
862
		provided("javax.servlet:javax.servlet-api:3.0.1")
863 864
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
865 866
		optional("org.apache.tiles:tiles-api:${tiles2Version}")
		optional("org.apache.tiles:tiles-core:${tiles2Version}") {
P
Phillip Webb 已提交
867
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
868
		}
869
		optional("org.apache.tiles:tiles-servlet:${tiles2Version}") {
P
Phillip Webb 已提交
870
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
871
		}
872
		optional("org.apache.tiles:tiles-jsp:${tiles2Version}") {
P
Phillip Webb 已提交
873
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
874
		}
875
		optional("org.apache.tiles:tiles-el:${tiles2Version}") {
876
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
877
		}
878
		optional("org.apache.tiles:tiles-extras:${tiles2Version}") {
P
Phillip Webb 已提交
879
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
880
			exclude group: "org.apache.velocity", module: "velocity-tools"
881
			exclude group: "org.springframework", module: "spring-web"
882
		}
883
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
884
	}
885 886
}

P
Phillip Webb 已提交
887 888
project("spring-webmvc-portlet") {
	description = "Spring Web Portlet"
889

890
	dependencies {
891 892
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
893
		compile(project(":spring-core"))
894 895
		compile(project(":spring-web"))
		compile(project(":spring-webmvc"))
896 897
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.portlet:portlet-api:2.0")
898
		optional("commons-fileupload:commons-fileupload:1.3.1")
899 900 901
	}

	// pick up DispatcherPortlet.properties in src/main
P
Phillip Webb 已提交
902
	sourceSets.main.resources.srcDirs += "src/main/java"
C
Chris Beams 已提交
903 904
}

P
Phillip Webb 已提交
905 906
project("spring-test") {
	description = "Spring TestContext Framework"
907

908
	dependencies {
909
		compile(project(":spring-core"))
910 911 912 913 914 915 916
		optional(project(":spring-beans"))
		optional(project(":spring-context"))
		optional(project(":spring-jdbc"))
		optional(project(":spring-tx"))
		optional(project(":spring-orm"))
		optional(project(":spring-web"))
		optional(project(":spring-webmvc"))
B
Brian Clozel 已提交
917
		optional(project(":spring-webmvc-portlet"))
918
		optional("junit:junit:${junitVersion}")
S
Sam Brannen 已提交
919
		optional("org.testng:testng:6.8.8")
920
		optional("javax.inject:javax.inject:1")
921
		optional("javax.servlet:javax.servlet-api:3.0.1")
922 923 924 925 926
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
		optional("org.apache.taglibs:taglibs-standard-jstlel:1.2.1") {
			exclude group: "org.apache.taglibs", module: "taglibs-standard-spec"
		}
927
		optional("javax.portlet:portlet-api:2.0")
928
		optional("javax.el:javax.el-api:2.2.5")
929
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
930 931
		optional("org.hamcrest:hamcrest-core:1.3")
		optional("com.jayway.jsonpath:json-path:0.9.0")
932
		optional("org.skyscreamer:jsonassert:1.2.3")
A
Arjen Poutsma 已提交
933
		optional("xmlunit:xmlunit:1.5")
934 935
		testCompile(project(":spring-context-support"))
		testCompile(project(":spring-oxm"))
936
		testCompile("javax.mail:javax.mail-api:1.5.2")
937
		testCompile("javax.ejb:ejb-api:3.0")
938 939 940
		testCompile("org.hibernate:hibernate-core:${hibernate4Version}")
		testCompile("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
		testCompile("org.hibernate:hibernate-validator:${hibVal5Version}")
941
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
942
		testCompile("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
943
		testCompile("com.rometools:rome:1.5.0")
944 945
		testCompile("org.apache.tiles:tiles-api:${tiles3Version}")
		testCompile("org.apache.tiles:tiles-core:${tiles3Version}") {
946 947
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
948
		testCompile("org.apache.tiles:tiles-servlet:${tiles3Version}") {
949 950
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
951 952
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
		testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
953
	}
954 955 956

	task testNG(type: Test) {
		useTestNG()
957
		scanForTestClasses = false
958 959
		include(["**/testng/**/*Tests.class", "**/testng/**/*Test.class"])
		// Show STD_OUT & STD_ERR of the test JVM(s) on the console:
960
		// testLogging.showStandardStreams = true
961
		// forkEvery 1
962 963 964 965 966
	}

	test {
		dependsOn testNG
		useJUnit()
967
		exclude "**/testng/**/*.*"
968
	}
969 970 971 972 973 974 975

	task aggregateTestReports(type: TestReport) {
		destinationDir = test.reports.html.destination
		reportOn test, testNG
	}

	check.dependsOn aggregateTestReports
C
Chris Beams 已提交
976 977
}

P
Phillip Webb 已提交
978 979 980
project("spring-aspects") {
	description = "Spring Aspects"
	apply from: "aspects.gradle"
981

982
	dependencies {
983
		aspects(project(":spring-orm"))
984 985
		ajc("org.aspectj:aspectjtools:${aspectjVersion}")
		rt("org.aspectj:aspectjrt:${aspectjVersion}")
986
		compile("org.aspectj:aspectjweaver:${aspectjVersion}")
987 988 989 990
		provided("org.eclipse.persistence:javax.persistence:2.0.0")
		optional(project(":spring-aop")) // for @Async support
		optional(project(":spring-beans")) // for @Configurable support
		optional(project(":spring-context")) // for @Enable* support
991
		optional(project(":spring-context-support")) // for JavaMail and JSR-107 support
992 993
		optional(project(":spring-orm")) // for JPA exception translation support
		optional(project(":spring-tx")) // for JPA, @Transactional support
S
Stephane Nicoll 已提交
994
		optional("javax.cache:cache-api:1.0.0")
995 996
		testCompile(project(":spring-core")) // for CodeStyleAspect
		testCompile(project(":spring-test"))
997
		testCompile("javax.mail:javax.mail-api:1.5.2")
998
	}
999

1000
	eclipse.project {
P
Phillip Webb 已提交
1001
		natures += "org.eclipse.ajdt.ui.ajnature"
1002
		buildCommands = [new org.gradle.plugins.ide.eclipse.model.
P
Phillip Webb 已提交
1003
				BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
1004
	}
C
Chris Beams 已提交
1005 1006
}

1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041
project("spring-framework-bom") {
	description = "Spring Framework (Bill of Materials)"

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

	install {
		repositories.mavenInstaller {
			pom.whenConfigured {
				packaging = "pom"
				withXml {
					asNode().children().last() + {
						delegate.dependencyManagement {
							delegate.dependencies {
								parent.subprojects.sort { "$it.name" }.each { p ->
									if (p.hasProperty("merge") && p.merge.into == null && p != project) {
										delegate.dependency {
											delegate.groupId(p.group)
											delegate.artifactId(p.name)
											delegate.version(p.version)
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

1042
configure(rootProject) {
P
Phillip Webb 已提交
1043
	description = "Spring Framework"
1044

P
Phillip Webb 已提交
1045
	apply plugin: "asciidoctor"
1046
	apply plugin: "docbook-reference"
1047
	apply plugin: "groovy"
R
Rob Winch 已提交
1048

1049
	// apply plugin: "detect-split-packages"
1050 1051
	apply from: "${gradleScriptDir}/jdiff.gradle"

R
Rob Winch 已提交
1052
	asciidoctor {
1053 1054
		baseDir = project.file('src/asciidoc')
		backend = 'docbook5'
R
Rob Winch 已提交
1055
		options = [
1056 1057 1058 1059 1060 1061 1062
			eruby: 'erubis',
			attributes: [
				doctype: 'book',
				'spring-version' : project.version,
				revnumber : project.version,
				docinfo : ""
			]
R
Rob Winch 已提交
1063
		]
1064 1065
	}

1066 1067 1068 1069 1070 1071 1072 1073 1074 1075
	reference {
		sourceDir = asciidoctor.outputDir
		pdfFilename = "spring-framework-reference.pdf"
		expandPlaceholders = ""
	}

	afterEvaluate {
		tasks.findAll { it.name.startsWith("reference") }.each{ it.dependsOn.add("asciidoctor") }
	}

1076 1077 1078 1079 1080
	// TODO: DetectSplitPackagesPlugin fails in line 154 due to method not found on java.io.File.
	// TODO: Possibly related to user rights or OS differences; passes on local Windows machine.
	// detectSplitPackages {
	//	projectsToScan -= project(":spring-instrument-tomcat")
	// }
1081

C
Chris Beams 已提交
1082
	// don't publish the default jar for the root project
1083 1084 1085
	configurations.archives.artifacts.clear()

	dependencies { // for integration tests
1086
		testCompile(project(":spring-aop"))
1087
		testCompile(project(":spring-beans"))
1088
		testCompile(project(":spring-context"))
1089 1090
		testCompile(project(":spring-core"))
		testCompile(project(":spring-expression"))
1091
		testCompile(project(":spring-jdbc"))
1092
		testCompile(project(":spring-orm"))
1093
		testCompile(project(":spring-test"))
1094
		testCompile(project(":spring-tx"))
1095 1096
		testCompile(project(":spring-web"))
		testCompile(project(":spring-webmvc-portlet"))
1097
		testCompile("javax.servlet:javax.servlet-api:3.0.1")
1098 1099 1100 1101
		testCompile("javax.portlet:portlet-api:2.0")
		testCompile("javax.inject:javax.inject:1")
		testCompile("javax.resource:connector-api:1.5")
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
1102
		testCompile("org.hibernate:hibernate-core:${hibernate4Version}")
P
Phillip Webb 已提交
1103
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
1104 1105 1106
	}

	task api(type: Javadoc) {
P
Phillip Webb 已提交
1107 1108
		group = "Documentation"
		description = "Generates aggregated Javadoc API documentation."
1109
		title = "${rootProject.description} ${version} API"
C
Chris Beams 已提交
1110

1111 1112 1113 1114 1115
		dependsOn {
			subprojects.collect {
				it.tasks.getByName("jar")
			}
		}
1116 1117 1118
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = rootProject.description
P
Phillip Webb 已提交
1119
		options.overview = "src/api/overview.html"
1120
		options.stylesheetFile = file("src/api/stylesheet.css")
1121
		options.splitIndex = true
C
Chris Beams 已提交
1122
		options.links(project.ext.javadocLinks)
1123
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
1124

1125 1126 1127
		source subprojects.collect { project ->
			project.sourceSets.main.allJava
		}
C
Chris Beams 已提交
1128

P
Phillip Webb 已提交
1129
		maxMemory = "1024m"
C
Chris Beams 已提交
1130
		destinationDir = new File(buildDir, "api")
1131 1132 1133

		doFirst {
			classpath = files(
1134
				// ensure Servlet 3.x and Hibernate 4.x have precedence on the javadoc
1135 1136 1137 1138 1139 1140 1141 1142
				// classpath over their respective 2.5 and 3.x variants
				project(":spring-webmvc").sourceSets.main.compileClasspath.files.find { it =~ "servlet-api" },
				rootProject.sourceSets.test.compileClasspath.files.find { it =~ "hibernate-core" },
				// ensure the javadoc process can resolve types compiled from .aj sources
				project(":spring-aspects").sourceSets.main.output
			)
			classpath += files(subprojects.collect { it.sourceSets.main.compileClasspath })
		}
1143 1144
	}

1145
	task docsZip(type: Zip, dependsOn: 'reference') {
P
Phillip Webb 已提交
1146 1147 1148
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "docs"
1149 1150 1151
		description = "Builds -${classifier} archive containing api and reference " +
			"for deployment at http://static.springframework.org/spring-framework/docs."

P
Phillip Webb 已提交
1152 1153
		from("src/dist") {
			include "changelog.txt"
1154 1155 1156
		}

		from (api) {
1157
			into "javadoc-api"
1158 1159
		}

1160 1161
		from (reference) {
			into "spring-framework-reference"
1162 1163 1164 1165
		}
	}

	task schemaZip(type: Zip) {
P
Phillip Webb 已提交
1166 1167 1168
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "schema"
1169 1170 1171 1172 1173 1174 1175
		description = "Builds -${classifier} archive containing all " +
			"XSDs for deployment at http://springframework.org/schema."

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

			subproject.sourceSets.main.resources.find {
P
Phillip Webb 已提交
1176
				it.path.endsWith("META-INF/spring.schemas")
1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193
			}?.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
				}
			}
		}
	}

	task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
P
Phillip Webb 已提交
1194 1195 1196
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist"
1197 1198 1199 1200 1201
		description = "Builds -${classifier} archive, containing all jars and docs, " +
					"suitable for community download page."

		ext.baseDir = "${baseName}-${project.version}";

P
Phillip Webb 已提交
1202 1203 1204 1205
		from("src/dist") {
			include "readme.txt"
			include "license.txt"
			include "notice.txt"
1206
			into "${baseDir}"
P
Phillip Webb 已提交
1207
			expand(copyright: new Date().format("yyyy"), version: project.version)
1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220
		}

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

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

		subprojects.each { subproject ->
			into ("${baseDir}/libs") {
				from subproject.jar
P
Phillip Webb 已提交
1221
				if (subproject.tasks.findByPath("sourcesJar")) {
1222 1223
					from subproject.sourcesJar
				}
P
Phillip Webb 已提交
1224
				if (subproject.tasks.findByPath("javadocJar")) {
1225 1226 1227 1228 1229 1230 1231 1232 1233
					from subproject.javadocJar
				}
			}
		}
	}

	// 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 ->
P
Phillip Webb 已提交
1234 1235 1236
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist-with-deps"
1237 1238 1239 1240 1241 1242 1243 1244 1245 1246
		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 ->
1247 1248
					(subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts +
					subproject.configurations.optional.resolvedConfiguration.resolvedArtifacts).each { artifact ->
1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269
						def dependency = artifact.moduleVersion.id
						if (!projectNames.contains(dependency.name)) {
							artifacts << artifact.file
						}
					}
				}

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

	artifacts {
		archives docsZip
		archives schemaZip
		archives distZip
	}

	task wrapper(type: Wrapper) {
P
Phillip Webb 已提交
1270
		description = "Generates gradlew[.bat] scripts"
1271
		gradleVersion = "1.12"
1272 1273

		doLast() {
1274
			def gradleOpts = "-XX:MaxMetaspaceSize=1024m -Xmx1024m"
1275
			def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
P
Phillip Webb 已提交
1276
			File wrapperFile = file("gradlew")
1277 1278
			wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
				"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
P
Phillip Webb 已提交
1279
			File wrapperBatFile = file("gradlew.bat")
1280 1281 1282 1283
			wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
				"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
		}
	}
1284

1285
}
1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297

/*
 * Support publication of artifacts versioned by topic branch.
 * CI builds supply `-P BRANCH_NAME=<TOPIC>` to gradle at build time.
 * If <TOPIC> starts with 'SPR-', change version
 *     from BUILD-SNAPSHOT => <TOPIC>-SNAPSHOT
 *     e.g. 3.2.1.BUILD-SNAPSHOT => 3.2.1.SPR-1234-SNAPSHOT
 */
def qualifyVersionIfNecessary(version) {
	if (rootProject.hasProperty("BRANCH_NAME")) {
		def qualifier = rootProject.getProperty("BRANCH_NAME")
		if (qualifier.startsWith("SPR-")) {
1298
			return version.replace('BUILD', qualifier)
1299 1300
		}
	}
1301
	return version
1302
}