build.gradle 42.5 KB
Newer Older
1
buildscript {
2
	repositories {
P
Phillip Webb 已提交
3
		maven { url "http://repo.springsource.org/plugins-release" }
4 5
	}
	dependencies {
6
		classpath("org.springframework.build.gradle:propdeps-plugin:0.0.6")
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
	}
10 11
}

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

16
	ext.aspectjVersion       = "1.8.0"
17 18
	ext.groovyVersion        = "1.8.9"
	ext.hibernate3Version    = "3.6.10.Final"
19 20 21
	ext.hibernate4Version    = "4.3.5.Final"
	ext.hibVal4Version       = "4.3.1.Final"
	ext.hibVal5Version       = "5.1.0.Final"
22
	ext.hsqldbVersion        = "2.3.2"
23 24
	ext.jackson2Version      = "2.3.3"
	ext.jasperReportsVersion = "5.5.1"  // 5.5.2 has an unresolvable transitive dependency
25
	ext.jettyVersion         = "9.1.4.v20140401"
26 27
	ext.jodaVersion          = "2.3"
	ext.junitVersion         = "4.11"
28
	ext.slf4jVersion         = "1.7.7"
29 30
	ext.tiles2Version        = "2.2.2"
	ext.tiles3Version        = "3.0.3"
31
	ext.tomcatVersion        = "8.0.5"
32
	ext.xstreamVersion       = "1.4.7"
S
Stephane Nicoll 已提交
33
	ext.snifferVersion       = "1.11"
34

35
	ext.gradleScriptDir   = "${rootProject.projectDir}/gradle"
36

37
	apply plugin: "propdeps"
P
Phillip Webb 已提交
38
	apply plugin: "java"
39
	apply plugin: "test-source-set-dependencies"
40
	apply from: "${gradleScriptDir}/ide.gradle"
C
Chris Beams 已提交
41

S
Stephane Nicoll 已提交
42 43 44 45 46
	configurations {
		sniffer
		javaApiSignature
	}

P
Phillip Webb 已提交
47 48 49 50 51 52
	compileJava.options*.compilerArgs = [
		"-Xlint:serial", "-Xlint:varargs", "-Xlint:cast", "-Xlint:classfile",
		"-Xlint:dep-ann", "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally",
		"-Xlint:overrides", "-Xlint:path", "-Xlint:processing", "-Xlint:static",
		"-Xlint:try", "-Xlint:fallthrough", "-Xlint:rawtypes", "-Xlint:deprecation",
		"-Xlint:unchecked", "-Xlint:-options", "-Werror"
53
	]
C
Chris Beams 已提交
54

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

62 63 64 65 66 67
	compileJava {
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

	compileTestJava {
68 69 70
		sourceCompatibility=1.8
		targetCompatibility=1.8
		options.compilerArgs += "-parameters"
J
Juergen Hoeller 已提交
71 72
	}

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

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

86
	repositories {
87
		maven { url "http://repo.spring.io/libs-release" }
88
	}
C
Chris Beams 已提交
89

90
	dependencies {
91 92 93 94 95 96
		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'
		}
97
		testCompile("org.hamcrest:hamcrest-all:1.3")
S
Stephane Nicoll 已提交
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 125 126 127 128 129 130 131 132 133 134 135 136 137 138
		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)
				annotation(className: "org.springframework.core.UsesJava7")
				annotation(className: "org.springframework.core.UsesJava8")
				annotation(className: "org.springframework.core.UsesSunHttpServer")
			}
		}
139
	}
C
Chris Beams 已提交
140 141

	ext.javadocLinks = [
P
Phillip Webb 已提交
142
		"http://docs.oracle.com/javase/7/docs/api/",
143
		"http://docs.oracle.com/javaee/7/api/",
J
Juergen Hoeller 已提交
144 145 146
		"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 已提交
147 148
		"http://docs.jboss.org/jbossas/javadoc/4.0.5/connector/",
		"http://docs.jboss.org/jbossas/javadoc/7.1.2.Final/",
J
Juergen Hoeller 已提交
149 150 151 152
		"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/",
153
		"http://tiles.apache.org/tiles-request/apidocs/",
J
Juergen Hoeller 已提交
154
		"http://tiles.apache.org/framework/apidocs/",
P
Phillip Webb 已提交
155
		"http://aopalliance.sourceforge.net/doc/",
C
Chris Beams 已提交
156
		"http://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
J
Juergen Hoeller 已提交
157 158
		"http://ehcache.org/apidocs/",
		"http://quartz-scheduler.org/api/2.1.7/",
159 160
		"http://fasterxml.github.com/jackson-core/javadoc/2.3.0/",
		"http://fasterxml.github.com/jackson-databind/javadoc/2.3.0/",
P
Phillip Webb 已提交
161
		"http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs"
C
Chris Beams 已提交
162
	] as String[]
163 164
}

165
configure(subprojects - project(":spring-build-src")) { subproject ->
166
	apply plugin: "merge"
167 168 169
	apply from: "${gradleScriptDir}/publish-maven.gradle"

	jar {
P
Phillip Webb 已提交
170 171 172 173
		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
174 175 176 177 178

		from("${rootProject.projectDir}/src/dist") {
			include "license.txt"
			include "notice.txt"
			into "META-INF"
P
Phillip Webb 已提交
179
			expand(copyright: new Date().format("yyyy"), version: project.version)
180 181 182 183
		}
	}

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

186 187 188
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = project.name
C
Chris Beams 已提交
189
		options.links(project.ext.javadocLinks)
190
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
191 192 193 194 195

		// 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
196 197 198
	}

	task sourcesJar(type: Jar, dependsOn:classes) {
P
Phillip Webb 已提交
199
		classifier = "sources"
200
		from sourceSets.main.allJava.srcDirs
P
Phillip Webb 已提交
201
		include "**/*.java", "**/*.aj"
202 203 204
	}

	task javadocJar(type: Jar) {
P
Phillip Webb 已提交
205
		classifier = "javadoc"
206 207 208 209 210 211 212
		from javadoc
	}

	artifacts {
		archives sourcesJar
		archives javadocJar
	}
C
Chris Beams 已提交
213 214
}

215 216
project("spring-build-src") {
	description = "Exposes gradle buildSrc for IDE support"
217
	apply plugin: "groovy"
218 219 220

	dependencies {
		compile gradleApi()
R
Rob Winch 已提交
221
		compile localGroovy()
222 223 224 225 226
	}

	configurations.archives.artifacts.clear()
}

P
Phillip Webb 已提交
227 228
project("spring-core") {
	description = "Spring Core"
229

230 231
	// 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
232
	// further transformed by the JarJar task to depend on org.springframework.asm; this
233
	// avoids including two different copies of asm unnecessarily.
234 235
	def cglibVersion = "3.1"
	def objenesisVersion = "2.1"
236 237 238 239

	configurations {
		jarjar
		cglib
240
		objenesis
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
	}

	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 已提交
256 257
					rule(pattern: "net.sf.cglib.**", result: "org.springframework.cglib.@1")
					// as mentioned above, transform cglib"s internal asm dependencies from
258 259
					// 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 已提交
260
					rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
261 262 263 264 265
				}
			}
		}
	}

266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
	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")
				}
			}
		}
	}

285
	dependencies {
286
		cglib("cglib:cglib:${cglibVersion}@jar")
287
		objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
288
		jarjar("com.googlecode.jarjar:jarjar:1.3")
289

P
Phillip Webb 已提交
290
		compile(files(cglibRepackJar))
291
		compile("commons-logging:commons-logging:1.1.3")
292
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
293
		optional("net.sf.jopt-simple:jopt-simple:4.6")
294
		optional("log4j:log4j:1.2.17")
295
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
A
Arjen Poutsma 已提交
296
		testCompile("xmlunit:xmlunit:1.5")
P
Phillip Webb 已提交
297 298 299
		testCompile("org.codehaus.woodstox:wstx-asl:3.2.7") {
			exclude group: "stax", module: "stax-api"
		}
300 301 302
	}

	jar {
303
		// inline repackaged cglib classes directly into the spring-core jar
304 305
		dependsOn cglibRepackJar
		from(zipTree(cglibRepackJar.archivePath)) {
P
Phillip Webb 已提交
306
			include "org/springframework/cglib/**"
307
		}
308 309 310 311 312

		dependsOn objenesisRepackJar
		from(zipTree(objenesisRepackJar.archivePath)) {
			include "org/springframework/objenesis/**"
		}
313
	}
C
Chris Beams 已提交
314 315
}

P
Phillip Webb 已提交
316 317
project("spring-beans") {
	description = "Spring Beans"
318

319
	dependencies {
320 321
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
322
		optional("javax.inject:javax.inject:1")
323
		optional("javax.el:javax.el-api:2.2.4")
324
		testCompile("log4j:log4j:1.2.17")
325
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
S
Stephane Nicoll 已提交
326
    }
C
Chris Beams 已提交
327 328
}

329 330
project("spring-beans-groovy") {
	description "Groovy Bean Definitions"
J
Juergen Hoeller 已提交
331
	merge.into = project(":spring-beans")
332
	apply plugin: "groovy"
J
Juergen Hoeller 已提交
333 334 335

	dependencies {
		compile(project(":spring-core"))
336
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
J
Juergen Hoeller 已提交
337 338 339 340 341 342 343
	}

	// this module's Java and Groovy sources need to be compiled together
	compileJava.enabled=false
	sourceSets {
		main {
			groovy {
344
				srcDir "src/main/java"
J
Juergen Hoeller 已提交
345 346 347
			}
		}
	}
348 349 350 351 352

	compileGroovy {
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}
J
Juergen Hoeller 已提交
353 354
}

P
Phillip Webb 已提交
355 356
project("spring-aop") {
	description = "Spring AOP"
357

358
	dependencies {
359
		compile(project(":spring-beans"))
360 361
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
362
		compile(files(project(":spring-core").objenesisRepackJar))
363
		compile("aopalliance:aopalliance:1.0")
364
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
365
		optional("commons-pool:commons-pool:1.6")
366
		optional("com.jamonapi:jamon:2.4")
367
	}
C
Chris Beams 已提交
368 369
}

P
Phillip Webb 已提交
370 371
project("spring-expression") {
	description = "Spring Expression Language (SpEL)"
372

373
	dependencies {
374
		compile(project(":spring-core"))
375
	}
C
Chris Beams 已提交
376 377
}

P
Phillip Webb 已提交
378 379
project("spring-instrument") {
	description = "Spring Instrument"
380

381
	jar {
P
Phillip Webb 已提交
382 383
		manifest.attributes["Premain-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
384 385
		manifest.attributes["Agent-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
386 387 388
		manifest.attributes["Can-Redefine-Classes"] = "true"
		manifest.attributes["Can-Retransform-Classes"] = "true"
		manifest.attributes["Can-Set-Native-Method-Prefix"] = "false"
389
	}
C
Chris Beams 已提交
390 391
}

P
Phillip Webb 已提交
392 393
project("spring-instrument-tomcat") {
	description = "Spring Instrument Tomcat"
394

395
	dependencies {
396
		provided("org.apache.tomcat:catalina:6.0.16")
397
	}
C
Chris Beams 已提交
398 399
}

P
Phillip Webb 已提交
400 401
project("spring-context") {
	description = "Spring Context"
402
	apply plugin: "groovy"
403

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

427 428 429
	// pick up RmiInvocationWrapperRTD.xml in src/main
	sourceSets.main.resources.srcDirs += "src/main/java"

430
	test {
P
Phillip Webb 已提交
431
		jvmArgs = ["-disableassertions:org.aspectj.weaver.UnresolvedType"] // SPR-7989
432
	}
433 434 435 436 437 438 439 440 441
}

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

	dependencies {
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
		compile(project(":spring-context"))
442 443
		optional("org.projectreactor:reactor-core:1.1.0.RELEASE")
		optional("org.projectreactor:reactor-net:1.1.0.RELEASE")
B
Brian Clozel 已提交
444
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
445 446
			exclude group: "javax.servlet", module: "javax.servlet-api"
		}
B
Brian Clozel 已提交
447
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
448
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
449
		testCompile(project(":spring-test"))
450
		testCompile("javax.inject:javax.inject-tck:1")
451
		testCompile("javax.servlet:javax.servlet-api:3.1.0")
452
		testCompile("javax.validation:validation-api:1.0.0.GA")
453
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
454 455 456 457 458
		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 已提交
459
		testCompile("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
460
			exclude group: "javax.servlet", module: "javax.servlet-api"
461
		}
462 463 464
		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}")
465
		testCompile("commons-dbcp:commons-dbcp:1.4")
466
		testCompile("log4j:log4j:1.2.17")
467
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
468
	}
C
Chris Beams 已提交
469 470
}

P
Phillip Webb 已提交
471 472
project("spring-tx") {
	description = "Spring Transaction"
473

474
	dependencies {
475 476
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
477 478 479
		optional(project(":spring-aop"))
		optional(project(":spring-context")) // for JCA, @EnableTransactionManagement
		optional("aopalliance:aopalliance:1.0")
480
		optional("javax.transaction:javax.transaction-api:1.2")
481
		optional("javax.resource:connector-api:1.5")
482
		optional("javax.ejb:ejb-api:3.0")
483
		optional("com.ibm.websphere:uow:6.0.2.17")
484
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
485
		testCompile("org.eclipse.persistence:javax.persistence:2.0.0")
486
	}
C
Chris Beams 已提交
487 488
}

P
Phillip Webb 已提交
489 490 491
project("spring-oxm") {
	description = "Spring Object/XML Marshalling"
	apply from: "oxm.gradle"
492

P
Phillip Webb 已提交
493
	compileTestJava {
494 495 496 497 498 499
		// necessary to avoid java.lang.VerifyError on jibx compilation
		// see http://jira.codehaus.org/browse/JIBX-465
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

500
	dependencies {
501 502
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
503
		optional("org.codehaus.castor:castor-xml:1.3.3")  {
504
			exclude group: 'stax', module: 'stax-api'
505
			exclude group: "org.springframework", module: "spring-context"
506 507 508 509 510 511 512 513
		}
		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'
		}
514
		optional("org.jibx:jibx-run:1.2.5")
515
		testCompile(project(":spring-context"))
A
Arjen Poutsma 已提交
516
		testCompile("xmlunit:xmlunit:1.5")
517 518 519 520
		testCompile("xpp3:xpp3:1.1.3.4.O")
		testCompile("org.codehaus.jettison:jettison:1.0.1") {
			exclude group: 'stax', module: 'stax-api'
		}
521 522 523 524
		testCompile(files(genCastor.classesDir).builtBy(genCastor))
		testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
		testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
	}
C
Chris Beams 已提交
525 526
}

P
Phillip Webb 已提交
527 528
project("spring-jms") {
	description = "Spring JMS"
529

530
	dependencies {
531 532 533 534
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-aop"))
		compile(project(":spring-context"))
535
		compile(project(":spring-messaging"))
536
		compile(project(":spring-tx"))
537
		provided("javax.jms:jms-api:1.1-rev-1")
538 539
		optional(project(":spring-oxm"))
		optional("aopalliance:aopalliance:1.0")
540
		optional("javax.transaction:javax.transaction-api:1.2")
541
		optional("javax.resource:connector-api:1.5")
542
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
543
	}
C
Chris Beams 已提交
544 545
}

P
Phillip Webb 已提交
546 547
project("spring-jdbc") {
	description = "Spring JDBC"
548

549
	dependencies {
550
		compile(project(":spring-beans"))
551
		compile(project(":spring-core"))
552
		compile(project(":spring-tx"))
553
		optional(project(":spring-context")) // for JndiDataSourceLookup
554
		optional("javax.transaction:javax.transaction-api:1.2")
555
		optional("com.mchange:c3p0:0.9.2.1")
P
Phillip Webb 已提交
556
		optional("org.hsqldb:hsqldb:${hsqldbVersion}")
557 558 559
		optional("com.h2database:h2:1.3.176")
		optional("org.apache.derby:derby:10.10.2.0")
		optional("org.apache.derby:derbyclient:10.10.2.0")
560
	}
C
Chris Beams 已提交
561 562
}

P
Phillip Webb 已提交
563 564
project("spring-context-support") {
	description = "Spring Context Support"
565

566
	dependencies {
567 568 569
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
570 571
		optional(project(":spring-jdbc")) // for Quartz support
		optional(project(":spring-tx")) // for Quartz support
572
		optional("javax.mail:javax.mail-api:1.4.7")
S
Stephane Nicoll 已提交
573
		optional("javax.cache:cache-api:1.0.0")
574
		optional("com.google.guava:guava:17.0")
575
		optional("net.sf.ehcache:ehcache-core:2.6.5")
576
		optional("org.quartz-scheduler:quartz:2.1.7")
577
		optional("org.codehaus.fabric3.api:commonj:1.1.0")
578
		optional("org.apache.velocity:velocity:1.7")
579
		optional("org.freemarker:freemarker:2.3.20")
580
		optional("com.lowagie:itext:2.1.7")
581
		optional("net.sf.jasperreports:jasperreports:$jasperReportsVersion")
582
		testCompile("org.apache.poi:poi:3.10-FINAL")
583 584
		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 已提交
585
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
586
		testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
587
		testRuntime("com.sun.mail:javax.mail:1.4.7")
588 589 590
	}

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

P
Phillip Webb 已提交
594 595
project("spring-web") {
	description = "Spring Web"
596

597
	dependencies {
598
		compile(project(":spring-aop")) // for JaxWsPortProxyFactoryBean
599
		compile(project(":spring-beans")) // for MultiPartFilter
600
		compile(project(":spring-context"))
601
		compile(project(":spring-core"))
602
		provided("javax.servlet:javax.servlet-api:3.0.1")
603
		optional(project(":spring-oxm")) // for MarshallingHttpMessageConverter
604
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
605 606 607
		optional("javax.portlet:portlet-api:2.0")
		optional("javax.el:javax.el-api:2.2.4")
		optional("javax.faces:javax.faces-api:2.2")
608
		optional("aopalliance:aopalliance:1.0")
609
		optional("com.caucho:hessian:4.0.38")
610
		optional("commons-fileupload:commons-fileupload:1.3.1")
611 612
		optional("org.apache.httpcomponents:httpclient:4.3.3")
		optional("org.apache.httpcomponents:httpasyncclient:4.0.1")
613 614
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
		optional("rome:rome:1.0")
B
Brian Clozel 已提交
615
		optional("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
616
			exclude group: "javax.servlet", module: "javax.servlet-api"
617
		}
B
Brian Clozel 已提交
618
		optional("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
619
			exclude group: "javax.servlet", module: "javax.servlet-api"
620
		}
621
		optional("log4j:log4j:1.2.17")
622
		testCompile(project(":spring-context-support"))  // for JafMediaTypeFactory
A
Arjen Poutsma 已提交
623
		testCompile("xmlunit:xmlunit:1.5")
624
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
625 626 627
		testCompile("org.apache.taglibs:taglibs-standard-jstlel:1.2.1") {
			exclude group: "org.apache.taglibs", module: "taglibs-standard-spec"
		}
628 629 630
	}

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

634
project("spring-websocket") {
635
	description = "Spring WebSocket"
636 637 638 639 640

	dependencies {
		compile(project(":spring-core"))
		compile(project(":spring-context"))
		compile(project(":spring-web"))
641
		optional(project(":spring-messaging"))
642
		optional(project(":spring-webmvc"))
643
		optional("javax.servlet:javax.servlet-api:3.1.0")
644
		optional("javax.websocket:javax.websocket-api:1.0")
645
		optional("org.apache.tomcat:tomcat-websocket:${tomcatVersion}") {
646 647 648
			exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
			exclude group: "org.apache.tomcat", module: "tomcat-servlet-api"
		}
649 650
		optional("org.glassfish.tyrus:tyrus-websocket-core:1.2.1")
		optional("org.glassfish.tyrus:tyrus-container-servlet:1.2.1")
B
Brian Clozel 已提交
651
		optional("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
652 653
			exclude group: "javax.servlet", module: "javax.servlet"
		}
B
Brian Clozel 已提交
654
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
655
			exclude group: "javax.servlet", module: "javax.servlet"
656
		}
B
Brian Clozel 已提交
657
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
658 659
		optional("io.undertow:undertow-core:1.0.1.Final")
		optional("io.undertow:undertow-servlet:1.0.1.Final") {
660
			exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_3.1_spec"
661
			exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
662
		}
663
		optional("io.undertow:undertow-websockets-jsr:1.0.1.Final") {
664 665
			exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.0_spec"
		}
666
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
667 668 669
		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}")
670 671
		testCompile("org.projectreactor:reactor-core:1.1.0.RELEASE")
		testCompile("org.projectreactor:reactor-net:1.1.0.RELEASE")
672 673
		testCompile("log4j:log4j:1.2.17")
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
674 675 676
	}
}

P
Phillip Webb 已提交
677 678
project("spring-orm") {
	description = "Spring Object/Relational Mapping"
679

680
	dependencies {
681 682 683 684 685 686 687 688
		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")
689 690
		optional("org.eclipse.persistence:javax.persistence:2.0.0")
		optional("org.eclipse.persistence:org.eclipse.persistence.core:2.4.0")
691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709
		optional("org.eclipse.persistence:org.eclipse.persistence.jpa:2.4.0") {
			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'
		}
		optional("org.apache.openjpa:openjpa:2.2.1") {
			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'
		}
		optional("javax.jdo:jdo-api:3.0") {
			exclude group: 'javax.transaction', module: 'transaction-api'
		}
710
		optional("javax.servlet:javax.servlet-api:3.0.1")
711
		testCompile("commons-dbcp:commons-dbcp:1.4")
P
Phillip Webb 已提交
712
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
713
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
714
	}
C
Chris Beams 已提交
715 716
}

P
Phillip Webb 已提交
717 718
project("spring-orm-hibernate4") {
	description = "Spring Object/Relational Mapping - Hibernate 4 support"
719
	merge.into = project(":spring-orm")
720

721
	dependencies {
722
		provided(project(":spring-jdbc"))
723
		provided(project(":spring-tx"))
724
		optional(project(":spring-web"))
725 726
		optional("org.hibernate:hibernate-core:${hibernate4Version}")
		optional("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
727
		optional("javax.servlet:javax.servlet-api:3.0.1")
728
        optional("aopalliance:aopalliance:1.0")
729 730 731 732
		testCompile("javax.validation:validation-api:1.1.0.GA")
		testCompile("org.hibernate:hibernate-validator:${hibVal5Version}")
		testCompile("javax.el:javax.el-api:2.2.4")
		testCompile("org.glassfish.web:javax.el:2.2.4")
733
	}
734 735
}

P
Phillip Webb 已提交
736 737
project("spring-webmvc") {
	description = "Spring Web MVC"
738

739
	dependencies {
740 741
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
742
		compile(project(":spring-core"))
743
		compile(files(project(":spring-core").objenesisRepackJar))
744 745
		compile(project(":spring-expression"))
		compile(project(":spring-web"))
746
		provided("javax.servlet:javax.servlet-api:3.0.1")
747 748
		optional(project(":spring-context-support")) // for Velocity support
		optional(project(":spring-oxm")) // for MarshallingView
749 750
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
751
		optional("net.sourceforge.jexcelapi:jxl:2.6.12")
752
		optional("org.apache.poi:poi:3.10-FINAL")
753 754
		optional("org.apache.velocity:velocity:1.7")
		optional("velocity-tools:velocity-tools-view:1.4")
755
		optional("org.freemarker:freemarker:2.3.20")
756
		optional("com.lowagie:itext:2.1.7")
757
		optional("net.sf.jasperreports:jasperreports:$jasperReportsVersion") {
758 759 760 761
			exclude group: "xml-apis", module: "xml-apis"
		}
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
		optional("rome:rome:1.0")
762 763
		optional("org.apache.tiles:tiles-api:${tiles2Version}")
		optional("org.apache.tiles:tiles-core:${tiles2Version}") {
764 765
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
766
		optional("org.apache.tiles:tiles-servlet:${tiles2Version}") {
767 768
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
769
		optional("org.apache.tiles:tiles-jsp:${tiles2Version}") {
770 771
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
772
		optional("org.apache.tiles:tiles-el:${tiles2Version}") {
773 774
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
775
		optional("org.apache.tiles:tiles-extras:${tiles2Version}") {
776
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
777
			exclude group: "org.apache.velocity", module: "velocity-tools"
778 779
			exclude group: "org.springframework", module: "spring-web"
		}
780 781
		testCompile(project(":spring-aop"))
		testCompile("rhino:js:1.7R1")
A
Arjen Poutsma 已提交
782
		testCompile("xmlunit:xmlunit:1.5")
783
		testCompile("dom4j:dom4j:1.6.1") {
P
Phillip Webb 已提交
784
			exclude group: "xml-apis", module: "xml-apis"
785 786
		}
		testCompile("jaxen:jaxen:1.1.1") {
P
Phillip Webb 已提交
787 788 789
			exclude group: "xml-apis", module: "xml-apis"
			exclude group: "xom", module: "xom"
			exclude group: "xerces", module: "xercesImpl"
790
		}
B
Brian Clozel 已提交
791
		testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
792
			exclude group: "javax.servlet", module: "javax.servlet"
793
		}
B
Brian Clozel 已提交
794
		testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
795
			exclude group: "javax.servlet", module: "javax.servlet"
796 797
		}
		testCompile("javax.validation:validation-api:1.0.0.GA")
798
		testCompile("org.hibernate:hibernate-validator:${hibVal4Version}")
799
		testCompile("org.apache.httpcomponents:httpclient:4.3.3")
800
		testCompile("commons-fileupload:commons-fileupload:1.3.1")
801
		testCompile("commons-io:commons-io:1.3")
802
		testCompile("joda-time:joda-time:${jodaVersion}")
803
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
804 805 806
	}

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

P
Phillip Webb 已提交
810 811
project("spring-webmvc-tiles3") {
	description = "Spring Framework Tiles3 Integration"
812
	merge.into = project(":spring-webmvc")
813

814
	dependencies {
815 816
		provided(project(":spring-context"))
		provided(project(":spring-web"))
817
		provided("javax.servlet:javax.servlet-api:3.0.1")
818 819
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
820
		optional("javax.el:javax.el-api:2.2.4")
821 822
		optional("org.apache.tiles:tiles-api:${tiles3Version}")
		optional("org.apache.tiles:tiles-core:${tiles3Version}") {
P
Phillip Webb 已提交
823
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
824
		}
825
		optional("org.apache.tiles:tiles-servlet:${tiles3Version}") {
P
Phillip Webb 已提交
826
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
827
		}
828
		optional("org.apache.tiles:tiles-jsp:${tiles3Version}") {
P
Phillip Webb 已提交
829
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
830
		}
831
		optional("org.apache.tiles:tiles-el:${tiles3Version}") {
832
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
833
		}
834
		optional("org.apache.tiles:tiles-extras:${tiles3Version}") {
P
Phillip Webb 已提交
835
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
836
			exclude group: "org.springframework", module: "spring-web"
837
		}
838
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
839
	}
840 841
}

P
Phillip Webb 已提交
842 843
project("spring-webmvc-portlet") {
	description = "Spring Web Portlet"
844

845
	dependencies {
846 847
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
848
		compile(project(":spring-core"))
849 850
		compile(project(":spring-web"))
		compile(project(":spring-webmvc"))
851 852
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.portlet:portlet-api:2.0")
853
		optional("commons-fileupload:commons-fileupload:1.3.1")
854 855 856
	}

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

P
Phillip Webb 已提交
860 861
project("spring-test") {
	description = "Spring TestContext Framework"
862

863
	dependencies {
864
		compile(project(":spring-core"))
865 866 867 868 869 870 871
		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 已提交
872
		optional(project(":spring-webmvc-portlet"))
873
		optional("junit:junit:${junitVersion}")
S
Sam Brannen 已提交
874
		optional("org.testng:testng:6.8.8")
875
		optional("javax.inject:javax.inject:1")
876
		optional("javax.servlet:javax.servlet-api:3.0.1")
877 878 879 880 881
		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"
		}
882
		optional("javax.portlet:portlet-api:2.0")
883
		optional("javax.el:javax.el-api:2.2.4")
884
		optional("org.eclipse.persistence:javax.persistence:2.0.0")
885
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
886 887
		optional("org.hamcrest:hamcrest-core:1.3")
		optional("com.jayway.jsonpath:json-path:0.9.0")
A
Arjen Poutsma 已提交
888
		optional("xmlunit:xmlunit:1.5")
889 890 891
		testCompile(project(":spring-context-support"))
		testCompile(project(":spring-oxm"))
		testCompile(project(":spring-webmvc-tiles3"))
892
		testCompile("javax.mail:javax.mail-api:1.4.7")
893
		testCompile("javax.ejb:ejb-api:3.0")
894 895 896
		testCompile("org.hibernate:hibernate-core:${hibernate3Version}") {
			exclude group: 'org.hibernate.javax.persistence', module: 'hibernate-jpa-2.0-api'
		}
897
		testCompile("org.hibernate:hibernate-entitymanager:${hibernate3Version}")
898
		testCompile("org.hibernate:hibernate-validator:${hibVal4Version}")
899
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
900
		testCompile("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
901
		testCompile("rome:rome:1.0")
902 903
		testCompile("org.apache.tiles:tiles-api:${tiles3Version}")
		testCompile("org.apache.tiles:tiles-core:${tiles3Version}") {
904 905
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
906
		testCompile("org.apache.tiles:tiles-servlet:${tiles3Version}") {
907 908
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
909 910
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
		testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
911
	}
912 913 914

	task testNG(type: Test) {
		useTestNG()
915
		scanForTestClasses = false
916 917
		include(["**/testng/**/*Tests.class", "**/testng/**/*Test.class"])
		// Show STD_OUT & STD_ERR of the test JVM(s) on the console:
918
		// testLogging.showStandardStreams = true
919
		// forkEvery 1
920 921 922 923 924
	}

	test {
		dependsOn testNG
		useJUnit()
925
		exclude "**/testng/**/*.*"
926
	}
927 928 929 930 931 932 933

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

	check.dependsOn aggregateTestReports
C
Chris Beams 已提交
934 935
}

P
Phillip Webb 已提交
936 937 938
project("spring-aspects") {
	description = "Spring Aspects"
	apply from: "aspects.gradle"
939

940
	dependencies {
941
		aspects(project(":spring-orm"))
942 943
		ajc("org.aspectj:aspectjtools:${aspectjVersion}")
		rt("org.aspectj:aspectjrt:${aspectjVersion}")
944
		compile("org.aspectj:aspectjweaver:${aspectjVersion}") // exposing regular AspectJ version to users
945 946 947 948
		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
949
		optional(project(":spring-context-support")) // for JavaMail and JSR-107 support
950 951
		optional(project(":spring-orm")) // for JPA exception translation support
		optional(project(":spring-tx")) // for JPA, @Transactional support
S
Stephane Nicoll 已提交
952
		optional("javax.cache:cache-api:1.0.0")
953 954
		testCompile(project(":spring-core")) // for CodeStyleAspect
		testCompile(project(":spring-test"))
955
		testCompile("javax.mail:javax.mail-api:1.4.7")
956
	}
957

958
	eclipse.project {
P
Phillip Webb 已提交
959
		natures += "org.eclipse.ajdt.ui.ajnature"
960
		buildCommands = [new org.gradle.plugins.ide.eclipse.model.
P
Phillip Webb 已提交
961
				BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
962
	}
C
Chris Beams 已提交
963 964
}

965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
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)
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

1000
configure(rootProject) {
P
Phillip Webb 已提交
1001
	description = "Spring Framework"
1002

P
Phillip Webb 已提交
1003
	apply plugin: "asciidoctor"
1004
	apply plugin: "docbook-reference"
1005
	apply plugin: "groovy"
R
Rob Winch 已提交
1006

1007
	// apply plugin: "detect-split-packages"
1008 1009
	apply from: "${gradleScriptDir}/jdiff.gradle"

R
Rob Winch 已提交
1010
	asciidoctor {
1011 1012
		baseDir = project.file('src/asciidoc')
		backend = 'docbook5'
R
Rob Winch 已提交
1013
		options = [
1014 1015 1016 1017 1018 1019 1020
			eruby: 'erubis',
			attributes: [
				doctype: 'book',
				'spring-version' : project.version,
				revnumber : project.version,
				docinfo : ""
			]
R
Rob Winch 已提交
1021
		]
1022 1023
	}

1024 1025 1026 1027 1028 1029 1030 1031 1032 1033
	reference {
		sourceDir = asciidoctor.outputDir
		pdfFilename = "spring-framework-reference.pdf"
		expandPlaceholders = ""
	}

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

1034 1035 1036 1037 1038
	// 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")
	// }
1039

C
Chris Beams 已提交
1040
	// don't publish the default jar for the root project
1041 1042 1043
	configurations.archives.artifacts.clear()

	dependencies { // for integration tests
1044
		testCompile(project(":spring-aop"))
1045
		testCompile(project(":spring-beans"))
1046
		testCompile(project(":spring-context"))
1047 1048
		testCompile(project(":spring-core"))
		testCompile(project(":spring-expression"))
1049
		testCompile(project(":spring-jdbc"))
1050
		testCompile(project(":spring-orm"))
1051
		testCompile(project(":spring-test"))
1052
		testCompile(project(":spring-tx"))
1053 1054
		testCompile(project(":spring-web"))
		testCompile(project(":spring-webmvc-portlet"))
1055
		testCompile("javax.servlet:javax.servlet-api:3.0.1")
1056 1057 1058 1059
		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}")
1060
		testCompile("org.hibernate:hibernate-core:${hibernate4Version}")
P
Phillip Webb 已提交
1061
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
1062 1063 1064
	}

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

1069 1070 1071 1072 1073
		dependsOn {
			subprojects.collect {
				it.tasks.getByName("jar")
			}
		}
1074 1075 1076
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = rootProject.description
P
Phillip Webb 已提交
1077
		options.overview = "src/api/overview.html"
1078
		options.stylesheetFile = file("src/api/stylesheet.css")
1079
		options.splitIndex = true
C
Chris Beams 已提交
1080
		options.links(project.ext.javadocLinks)
1081
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
1082

1083 1084 1085
		source subprojects.collect { project ->
			project.sourceSets.main.allJava
		}
C
Chris Beams 已提交
1086

P
Phillip Webb 已提交
1087
		maxMemory = "1024m"
C
Chris Beams 已提交
1088
		destinationDir = new File(buildDir, "api")
1089 1090 1091

		doFirst {
			classpath = files(
1092
				// ensure Servlet 3.x and Hibernate 4.x have precedence on the javadoc
1093 1094 1095 1096 1097 1098 1099 1100
				// 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 })
		}
1101 1102
	}

1103
	task docsZip(type: Zip, dependsOn: 'reference') {
P
Phillip Webb 已提交
1104 1105 1106
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "docs"
1107 1108 1109
		description = "Builds -${classifier} archive containing api and reference " +
			"for deployment at http://static.springframework.org/spring-framework/docs."

P
Phillip Webb 已提交
1110 1111
		from("src/dist") {
			include "changelog.txt"
1112 1113 1114
		}

		from (api) {
1115
			into "javadoc-api"
1116 1117
		}

1118 1119
		from (reference) {
			into "spring-framework-reference"
1120 1121 1122 1123
		}
	}

	task schemaZip(type: Zip) {
P
Phillip Webb 已提交
1124 1125 1126
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "schema"
1127 1128 1129 1130 1131 1132 1133
		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 已提交
1134
				it.path.endsWith("META-INF/spring.schemas")
1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151
			}?.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 已提交
1152 1153 1154
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist"
1155 1156 1157 1158 1159
		description = "Builds -${classifier} archive, containing all jars and docs, " +
					"suitable for community download page."

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

P
Phillip Webb 已提交
1160 1161 1162 1163
		from("src/dist") {
			include "readme.txt"
			include "license.txt"
			include "notice.txt"
1164
			into "${baseDir}"
P
Phillip Webb 已提交
1165
			expand(copyright: new Date().format("yyyy"), version: project.version)
1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178
		}

		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 已提交
1179
				if (subproject.tasks.findByPath("sourcesJar")) {
1180 1181
					from subproject.sourcesJar
				}
P
Phillip Webb 已提交
1182
				if (subproject.tasks.findByPath("javadocJar")) {
1183 1184 1185 1186 1187 1188 1189 1190 1191
					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 已提交
1192 1193 1194
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist-with-deps"
1195 1196 1197 1198 1199 1200 1201 1202 1203 1204
		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 ->
1205 1206
					(subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts +
					subproject.configurations.optional.resolvedConfiguration.resolvedArtifacts).each { artifact ->
1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227
						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 已提交
1228
		description = "Generates gradlew[.bat] scripts"
1229
		gradleVersion = "1.12"
1230 1231

		doLast() {
1232
			def gradleOpts = "-XX:MaxMetaspaceSize=1024m -Xmx1024m"
1233
			def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
P
Phillip Webb 已提交
1234
			File wrapperFile = file("gradlew")
1235 1236
			wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
				"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
P
Phillip Webb 已提交
1237
			File wrapperBatFile = file("gradlew.bat")
1238 1239 1240 1241
			wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
				"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
		}
	}
1242

1243
}
1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255

/*
 * 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-")) {
1256
			return version.replace('BUILD', qualifier)
1257 1258
		}
	}
1259
	return version
1260
}