build.gradle 50.1 KB
Newer Older
1
buildscript {
2
	repositories {
B
Brian Clozel 已提交
3
		maven { url "https://repo.spring.io/plugins-release" }
4 5
	}
	dependencies {
S
Sam Brannen 已提交
6
		classpath("org.springframework.build.gradle:propdeps-plugin:0.0.7")
B
Brian Clozel 已提交
7
		classpath("org.asciidoctor:asciidoctor-gradle-plugin:1.5.2")
8
		classpath("io.spring.gradle:docbook-reference-plugin:0.3.1")
9
		classpath("ws.antonov.gradle.plugins:gradle-plugin-protobuf:0.9.1")
10
	}
11 12
}

S
Stephane Nicoll 已提交
13 14 15 16 17 18
ext {
	linkHomepage = 'https://projects.spring.io/spring-framework'
	linkCi = 'https://build.spring.io/browse/SPR'
	linkIssue = 'https://jira.spring.io/browse/SPR'
	linkScmUrl = 'https://github.com/spring-projects/spring-framework'
	linkScmConnection = 'scm:git:git://github.com/spring-projects/spring-framework.git'
19
	linkScmDevConnection = 'scm:git:ssh://git@github.com:spring-projects/spring-framework.git'
20 21 22 23

	moduleProjects  = subprojects.findAll {
		!it.name.equals('spring-build-src') && !it.name.equals('spring-framework-bom')
	}
S
Stephane Nicoll 已提交
24 25
}

C
Chris Beams 已提交
26
configure(allprojects) { project ->
27 28
	group = "org.springframework"
	version = qualifyVersionIfNecessary(version)
29

30
	ext.aspectjVersion       = "1.8.6"
31
	ext.eclipselinkVersion   = "2.4.2"
32
	ext.ehcacheVersion       = "2.10.0"
33
	ext.ehcachejcacheVersion = "1.0.1"
34
	ext.ejbApiVersion        = "3.0"
35
	ext.fileuploadVersion    = "1.3.1"
36
	ext.freemarkerVersion    = "2.3.23"
B
Brian Clozel 已提交
37
	ext.groovyVersion        = "2.4.4"
38
	ext.gsonVersion          = "2.3.1"
39
	ext.hamcrestVersion      = "1.3"
40
	ext.hibernate3Version    = "3.6.10.Final"
41 42
	ext.hibernate4Version    = "4.3.11.Final"
	ext.hibernate5Version    = "5.0.0.CR4"
43
	ext.hibval4Version       = "4.3.2.Final"
44
	ext.hibval5Version       = "5.2.1.Final"
45
	ext.hsqldbVersion        = "2.3.3"
46 47
	ext.httpclientVersion    = "4.5"
	ext.httpasyncVersion     = "4.1"
48
	ext.jackson2Version      = "2.6.0"
49 50
	ext.jsonassertVersion    = "1.2.3"
	ext.jsonpathVersion      = "2.0.0"
S
Sam Brannen 已提交
51
	ext.htmlunitVersion      = "2.18"
52
	ext.jasperreportsVersion = "6.1.0"
53
	ext.javamailVersion      = "1.5.4"
54
	ext.jettyVersion         = "9.3.1.v20150714"
55
	ext.jodaVersion          = "2.8.1"
J
Juergen Hoeller 已提交
56
	ext.jrubyVersion         = "1.7.21"  // JRuby 9.0.0.0 only supported through JSR-223 (StandardScriptFactory)
57
	ext.jtaVersion           = "1.2"
J
Juergen Hoeller 已提交
58
	ext.junitVersion         = "4.12"
59
	ext.nettyVersion         = "4.0.30.Final"
60
	ext.openjpaVersion       = "2.4.0"
61
	ext.poiVersion           = "3.12"
62
	ext.protobufVersion      = "2.6.1"
63
	ext.reactorVersion       = "2.0.4.RELEASE"
64
	ext.romeVersion          = "1.5.1"
65
	ext.seleniumVersion      = "2.47.1"
66
	ext.slf4jVersion         = "1.7.12"
67
	ext.snakeyamlVersion     = "1.15"
S
Stephane Nicoll 已提交
68
	ext.snifferVersion       = "1.14"
S
Sam Brannen 已提交
69
	ext.testngVersion        = "6.9.6"
70
	ext.tiles2Version        = "2.2.2"
71
	ext.tiles3Version        = "3.0.5"
72
	ext.tomcatVersion        = "8.0.24"
73
	ext.tyrusVersion         = "1.3.5"  // constrained by WebLogic 12.1.3 support
74
	ext.undertowVersion      = "1.2.9.Final"
75
	ext.woodstoxVersion      = "5.0.1"
76
	ext.xmlunitVersion       = "1.6"
77
	ext.xstreamVersion       = "1.4.8"
78

79
	ext.gradleScriptDir = "${rootProject.projectDir}/gradle"
80

81
	apply plugin: "propdeps"
P
Phillip Webb 已提交
82
	apply plugin: "java"
83
	apply plugin: "test-source-set-dependencies"
84
	apply from: "${gradleScriptDir}/ide.gradle"
C
Chris Beams 已提交
85

S
Stephane Nicoll 已提交
86 87 88 89 90
	configurations {
		sniffer
		javaApiSignature
	}

P
Phillip Webb 已提交
91 92 93
	compileJava.options*.compilerArgs = [
		"-Xlint:serial", "-Xlint:varargs", "-Xlint:cast", "-Xlint:classfile",
		"-Xlint:dep-ann", "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally",
S
Stephane Nicoll 已提交
94
		"-Xlint:overrides", "-Xlint:path", "-Xlint:processing", "-Xlint:static",
P
Phillip Webb 已提交
95 96
		"-Xlint:try", "-Xlint:fallthrough", "-Xlint:rawtypes", "-Xlint:deprecation",
		"-Xlint:unchecked", "-Xlint:-options", "-Werror"
97
	]
C
Chris Beams 已提交
98

P
Phillip Webb 已提交
99 100 101
	compileTestJava.options*.compilerArgs = [
		"-Xlint:serial", "-Xlint:varargs", "-Xlint:cast", "-Xlint:classfile",
		"-Xlint:dep-ann", "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally",
S
Stephane Nicoll 已提交
102
		"-Xlint:overrides", "-Xlint:path", "-Xlint:processing", "-Xlint:static",
P
Phillip Webb 已提交
103 104 105
		"-Xlint:try", "-Xlint:-fallthrough", "-Xlint:-rawtypes", "-Xlint:-deprecation",
		"-Xlint:-unchecked", "-Xlint:-options"]

106
	compileJava {
J
Juergen Hoeller 已提交
107 108
		sourceCompatibility = 1.6
		targetCompatibility = 1.6
109 110 111
	}

	compileTestJava {
J
Juergen Hoeller 已提交
112 113
		sourceCompatibility = 1.8
		targetCompatibility = 1.8
114
		options.compilerArgs += "-parameters"
J
Juergen Hoeller 已提交
115 116
	}

C
Chris Beams 已提交
117 118
	test {
		systemProperty("java.awt.headless", "true")
119
		systemProperty("testGroups", project.properties.get("testGroups"))
120
		scanForTestClasses = false
121
		include(["**/*Tests.class", "**/*Test.class"])
122 123
		// Since we set scanForTestClasses to false, we need to filter out inner
		// classes with the "$" pattern; otherwise, using -Dtest.single=MyTests to
124
		// run MyTests by itself will fail if MyTests contains any inner classes.
125
		exclude(["**/Abstract*.class", '**/*$*'])
C
Chris Beams 已提交
126
	}
C
Chris Beams 已提交
127

128
	repositories {
B
Brian Clozel 已提交
129
		maven { url "https://repo.spring.io/libs-release" }
130
		maven { url "https://repo.spring.io/milestone" }
131
	}
C
Chris Beams 已提交
132

133
	dependencies {
134 135 136
		testCompile("junit:junit:${junitVersion}") {
			exclude group:'org.hamcrest', module:'hamcrest-core'
		}
137
		testCompile("org.mockito:mockito-core:1.10.19") {
138 139
			exclude group:'org.hamcrest', module:'hamcrest-core'
		}
140
		testCompile("org.hamcrest:hamcrest-all:${hamcrestVersion}")
S
Stephane Nicoll 已提交
141 142

		sniffer("org.codehaus.mojo:animal-sniffer-ant-tasks:${snifferVersion}")
143
		javaApiSignature("org.codehaus.mojo.signature:java16:1.1@signature")  // as from JDK 6 update 18
S
Stephane Nicoll 已提交
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
	}

	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
163

S
Stephane Nicoll 已提交
164 165 166 167 168 169 170 171 172 173 174
		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)
175 176 177
				annotation(className: "org.springframework.lang.UsesJava7")
				annotation(className: "org.springframework.lang.UsesJava8")
				annotation(className: "org.springframework.lang.UsesSunHttpServer")
S
Stephane Nicoll 已提交
178 179
			}
		}
180
	}
C
Chris Beams 已提交
181 182

	ext.javadocLinks = [
183
		"http://docs.oracle.com/javase/8/docs/api/",
184
		"http://docs.oracle.com/javaee/7/api/",
185
		"http://docs.oracle.com/cd/E13222_01/wls/docs90/javadocs/",  // CommonJ
J
Juergen Hoeller 已提交
186 187
		"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 已提交
188 189
		"http://docs.jboss.org/jbossas/javadoc/4.0.5/connector/",
		"http://docs.jboss.org/jbossas/javadoc/7.1.2.Final/",
J
Juergen Hoeller 已提交
190 191 192 193
		"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/",
194
		"http://tiles.apache.org/tiles-request/apidocs/",
J
Juergen Hoeller 已提交
195
		"http://tiles.apache.org/framework/apidocs/",
P
Phillip Webb 已提交
196
		"http://aopalliance.sourceforge.net/doc/",
C
Chris Beams 已提交
197
		"http://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
J
Juergen Hoeller 已提交
198
		"http://ehcache.org/apidocs/",
199
		"http://quartz-scheduler.org/api/2.2.0/",
200 201
		"http://fasterxml.github.com/jackson-core/javadoc/2.3.0/",
		"http://fasterxml.github.com/jackson-databind/javadoc/2.3.0/",
202
		"http://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.3.0/",
203
		"http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/"
C
Chris Beams 已提交
204
	] as String[]
205 206
}

207
configure(subprojects - project(":spring-build-src")) { subproject ->
208
	apply plugin: "merge"
209 210
	apply from: "${gradleScriptDir}/publish-maven.gradle"

S
Stephane Nicoll 已提交
211 212 213 214 215 216 217 218 219 220 221 222 223 224
	configurations {
		jacoco
	}

	dependencies {
		jacoco("org.jacoco:org.jacoco.agent:0.7.1.201405082137:runtime")
	}

	gradle.taskGraph.whenReady {taskGraph ->
		if (taskGraph.hasTask(':sonarRunner')) {
			test.jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=org.springframework.*"
		}
	}

225
	jar {
P
Phillip Webb 已提交
226 227 228 229
		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
230 231 232 233 234

		from("${rootProject.projectDir}/src/dist") {
			include "license.txt"
			include "notice.txt"
			into "META-INF"
P
Phillip Webb 已提交
235
			expand(copyright: new Date().format("yyyy"), version: project.version)
236 237 238 239
		}
	}

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

242 243 244
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = project.name
C
Chris Beams 已提交
245
		options.links(project.ext.javadocLinks)
246
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
247 248 249 250 251

		// 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
252 253
	}

254 255
	task sourcesJar(type: Jar, dependsOn: classes) {
		classifier = 'sources'
256
		from sourceSets.main.allSource
257
		// don't include or exclude anything explicitly by default. See SPR-12085.
258 259 260
	}

	task javadocJar(type: Jar) {
P
Phillip Webb 已提交
261
		classifier = "javadoc"
262 263 264 265 266 267 268
		from javadoc
	}

	artifacts {
		archives sourcesJar
		archives javadocJar
	}
C
Chris Beams 已提交
269 270
}

271 272
project("spring-build-src") {
	description = "Exposes gradle buildSrc for IDE support"
273
	apply plugin: "groovy"
274 275 276

	dependencies {
		compile gradleApi()
R
Rob Winch 已提交
277
		compile localGroovy()
278 279 280 281 282
	}

	configurations.archives.artifacts.clear()
}

P
Phillip Webb 已提交
283 284
project("spring-core") {
	description = "Spring Core"
285

286 287
	// 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
288
	// further transformed by the JarJar task to depend on org.springframework.asm; this
289
	// avoids including two different copies of asm unnecessarily.
290 291
	def cglibVersion = "3.1"
	def objenesisVersion = "2.1"
292 293 294 295

	configurations {
		jarjar
		cglib
296
		objenesis
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311
	}

	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 已提交
312 313
					rule(pattern: "net.sf.cglib.**", result: "org.springframework.cglib.@1")
					// as mentioned above, transform cglib"s internal asm dependencies from
314 315
					// 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 已提交
316
					rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
317 318 319 320 321
				}
			}
		}
	}

322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340
	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")
				}
			}
		}
	}

341
	dependencies {
342
		cglib("cglib:cglib:${cglibVersion}@jar")
343
		objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
344
		jarjar("com.googlecode.jarjar:jarjar:1.3")
345

P
Phillip Webb 已提交
346
		compile(files(cglibRepackJar))
347
		compile(files(objenesisRepackJar))
348 349
		compile("commons-logging:commons-logging:1.2")
		optional("commons-codec:commons-codec:1.10")
350
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
351
		optional("net.sf.jopt-simple:jopt-simple:4.9")
352
		optional("log4j:log4j:1.2.17")
353
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
354
		testCompile("xmlunit:xmlunit:${xmlunitVersion}")
355
		testCompile("com.fasterxml.woodstox:woodstox-core:${woodstoxVersion}") {
P
Phillip Webb 已提交
356 357
			exclude group: "stax", module: "stax-api"
		}
358 359 360
	}

	jar {
361
		// inline repackaged cglib classes directly into the spring-core jar
362 363
		dependsOn cglibRepackJar
		from(zipTree(cglibRepackJar.archivePath)) {
P
Phillip Webb 已提交
364
			include "org/springframework/cglib/**"
365
		}
366 367 368 369 370

		dependsOn objenesisRepackJar
		from(zipTree(objenesisRepackJar.archivePath)) {
			include "org/springframework/objenesis/**"
		}
371
	}
C
Chris Beams 已提交
372 373
}

P
Phillip Webb 已提交
374 375
project("spring-beans") {
	description = "Spring Beans"
376

377
	dependencies {
378 379
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
380
		optional("javax.inject:javax.inject:1")
381
		optional("javax.el:javax.el-api:2.2.5")
382
		optional("org.yaml:snakeyaml:${snakeyamlVersion}")
383
		testCompile("log4j:log4j:1.2.17")
384
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
S
Stephane Nicoll 已提交
385
    }
C
Chris Beams 已提交
386 387
}

388 389
project("spring-beans-groovy") {
	description "Groovy Bean Definitions"
J
Juergen Hoeller 已提交
390
	merge.into = project(":spring-beans")
391
	apply plugin: "groovy"
J
Juergen Hoeller 已提交
392 393 394

	dependencies {
		compile(project(":spring-core"))
395
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
J
Juergen Hoeller 已提交
396 397 398 399 400 401 402
	}

	// this module's Java and Groovy sources need to be compiled together
	compileJava.enabled=false
	sourceSets {
		main {
			groovy {
403
				srcDir "src/main/java"
J
Juergen Hoeller 已提交
404 405 406
			}
		}
	}
407 408

	compileGroovy {
J
Juergen Hoeller 已提交
409 410
		sourceCompatibility = 1.6
		targetCompatibility = 1.6
411
	}
J
Juergen Hoeller 已提交
412 413
}

P
Phillip Webb 已提交
414 415
project("spring-aop") {
	description = "Spring AOP"
416

417
	dependencies {
418
		compile(project(":spring-beans"))
419 420
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
421
		compile(files(project(":spring-core").objenesisRepackJar))
422
		compile("aopalliance:aopalliance:1.0")
423
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
424
		optional("commons-pool:commons-pool:1.6")
425
		optional("org.apache.commons:commons-pool2:2.4.1")
426
		optional("com.jamonapi:jamon:2.81")
427
	}
C
Chris Beams 已提交
428 429
}

P
Phillip Webb 已提交
430 431
project("spring-expression") {
	description = "Spring Expression Language (SpEL)"
432

433
	dependencies {
434
		compile(project(":spring-core"))
435
	}
C
Chris Beams 已提交
436 437
}

P
Phillip Webb 已提交
438 439
project("spring-instrument") {
	description = "Spring Instrument"
440

441
	jar {
P
Phillip Webb 已提交
442 443
		manifest.attributes["Premain-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
444 445
		manifest.attributes["Agent-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
446 447 448
		manifest.attributes["Can-Redefine-Classes"] = "true"
		manifest.attributes["Can-Retransform-Classes"] = "true"
		manifest.attributes["Can-Set-Native-Method-Prefix"] = "false"
449
	}
C
Chris Beams 已提交
450 451
}

P
Phillip Webb 已提交
452 453
project("spring-instrument-tomcat") {
	description = "Spring Instrument Tomcat"
454

455
	dependencies {
456
		provided("org.apache.tomcat:catalina:6.0.16")
457
	}
458 459 460 461

	jar {
		exclude("org/apache/**")  // exclude the mock used to bridge between pre-7.0.63 and 7.0.63+
	}
C
Chris Beams 已提交
462 463
}

P
Phillip Webb 已提交
464 465
project("spring-context") {
	description = "Spring Context"
466
	apply plugin: "groovy"
467

468
	dependencies {
469 470 471 472 473
		compile(project(":spring-aop"))
		compile(project(":spring-beans"))
		compile(project(":spring-expression"))
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
474
		optional(project(":spring-instrument"))
475
		optional("javax.inject:javax.inject:1")
476
		optional("javax.ejb:ejb-api:${ejbApiVersion}")
477
		optional("javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0")
478
		optional("javax.money:money-api:1.0")
479
		optional("org.eclipse.persistence:javax.persistence:2.0.0")
480
		optional("javax.validation:validation-api:1.0.0.GA")
481
		optional("org.hibernate:hibernate-validator:${hibval4Version}")
482 483
		optional("joda-time:joda-time:${jodaVersion}")
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
J
Juergen Hoeller 已提交
484
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
485
		optional("org.beanshell:bsh:2.0b4")
486
		optional("org.jruby:jruby:${jrubyVersion}")
487
		testCompile("javax.inject:javax.inject-tck:1")
488
		testCompile("org.javamoney:moneta:1.0")
489
		testCompile("commons-dbcp:commons-dbcp:1.4")
490
		testCompile("org.apache.commons:commons-pool2:2.4.1")
491
		testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
492
	}
493 494 495 496 497 498 499 500 501
}

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

	dependencies {
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
		compile(project(":spring-context"))
502
		optional(project(":spring-oxm"))
R
Rossen Stoyanchev 已提交
503
		optional("io.projectreactor:reactor-core:${reactorVersion}")
S
Stephane Maldini 已提交
504
		optional("io.projectreactor:reactor-net:${reactorVersion}") {
505 506
			exclude group: "io.netty", module: "netty-all"
		}
S
Stephane Maldini 已提交
507
		optional "io.netty:netty-all:$nettyVersion"
B
Brian Clozel 已提交
508
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
509 510
			exclude group: "javax.servlet", module: "javax.servlet-api"
		}
B
Brian Clozel 已提交
511
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
512
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
513
		testCompile(project(":spring-test"))
514
		testCompile("javax.inject:javax.inject-tck:1")
515
		testCompile("javax.servlet:javax.servlet-api:3.1.0")
516
		testCompile("javax.validation:validation-api:1.0.0.GA")
517
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
518 519 520 521 522
		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 已提交
523
		testCompile("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
524
			exclude group: "javax.servlet", module: "javax.servlet-api"
525
		}
526 527 528
		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}")
529
		testCompile("io.netty:netty-all:${nettyVersion}")
530
		testCompile("commons-dbcp:commons-dbcp:1.4")
531
		testCompile("log4j:log4j:1.2.17")
532
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
533
		testCompile("xmlunit:xmlunit:${xmlunitVersion}")
534
	}
C
Chris Beams 已提交
535 536
}

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

540
	dependencies {
541 542
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
543
		optional(project(":spring-aop"))
544
		optional(project(":spring-context"))  // for JCA, @EnableTransactionManagement
545
		optional("aopalliance:aopalliance:1.0")
546
		optional("javax.transaction:javax.transaction-api:${jtaVersion}")
547
		optional("javax.resource:connector-api:1.5")
548
		optional("javax.ejb:ejb-api:${ejbApiVersion}")
549
		optional("com.ibm.websphere:uow:6.0.2.17")
550
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
551
		testCompile("org.eclipse.persistence:javax.persistence:2.0.0")
552
	}
C
Chris Beams 已提交
553 554
}

P
Phillip Webb 已提交
555 556 557
project("spring-oxm") {
	description = "Spring Object/XML Marshalling"
	apply from: "oxm.gradle"
558

P
Phillip Webb 已提交
559
	compileTestJava {
560 561
		// necessary to avoid java.lang.VerifyError on jibx compilation
		// see http://jira.codehaus.org/browse/JIBX-465
J
Juergen Hoeller 已提交
562 563
		sourceCompatibility = 1.6
		targetCompatibility = 1.6
564 565
	}

566
	if (!System.getProperty("java.version").contains("1.8.")) {
567 568 569 570
		// necessary because castor and xjc tasks cannot find the JDK's compiler on JDK 9
		compileTestJava.enabled = false
	}

571
	dependencies {
572 573
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
574
		optional("org.codehaus.castor:castor-xml:1.3.3")  {
575
			exclude group: 'stax', module: 'stax-api'
576
			exclude group: "org.springframework", module: "spring-context"
577 578 579 580 581 582 583 584
		}
		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'
		}
585
		optional("org.jibx:jibx-run:1.2.6")
586
		testCompile(project(":spring-context"))
587
		testCompile("xmlunit:xmlunit:${xmlunitVersion}")
588 589
		testCompile("xpp3:xpp3:1.1.4c")
		testCompile("org.codehaus.jettison:jettison:1.3.7") {
590 591
			exclude group: 'stax', module: 'stax-api'
		}
592 593 594 595 596
		if (compileTestJava.enabled) {
			testCompile(files(genCastor.classesDir).builtBy(genCastor))
			testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
			testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
		}
597
	}
C
Chris Beams 已提交
598 599
}

P
Phillip Webb 已提交
600 601
project("spring-jms") {
	description = "Spring JMS"
602

603
	dependencies {
604 605 606 607
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-aop"))
		compile(project(":spring-context"))
608
		compile(project(":spring-messaging"))
609
		compile(project(":spring-tx"))
610
		provided("javax.jms:jms-api:1.1-rev-1")
611 612
		optional(project(":spring-oxm"))
		optional("aopalliance:aopalliance:1.0")
613
		optional("javax.transaction:javax.transaction-api:${jtaVersion}")
614
		optional("javax.resource:connector-api:1.5")
615
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
616
	}
C
Chris Beams 已提交
617 618
}

P
Phillip Webb 已提交
619 620
project("spring-jdbc") {
	description = "Spring JDBC"
621

622
	dependencies {
623
		compile(project(":spring-beans"))
624
		compile(project(":spring-core"))
625
		compile(project(":spring-tx"))
626
		optional(project(":spring-context"))  // for JndiDataSourceLookup
627
		optional("javax.transaction:javax.transaction-api:${jtaVersion}")
628
		optional("com.mchange:c3p0:0.9.5.1")
P
Phillip Webb 已提交
629
		optional("org.hsqldb:hsqldb:${hsqldbVersion}")
630
		optional("com.h2database:h2:1.4.187")
631 632
		optional("org.apache.derby:derby:10.11.1.1")
		optional("org.apache.derby:derbyclient:10.11.1.1")
633
	}
C
Chris Beams 已提交
634 635
}

P
Phillip Webb 已提交
636 637
project("spring-context-support") {
	description = "Spring Context Support"
638

639
	dependencies {
640 641 642
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
643 644
		optional(project(":spring-jdbc"))  // for Quartz support
		optional(project(":spring-tx"))  // for Quartz support
645
		optional("javax.mail:javax.mail-api:${javamailVersion}")
S
Stephane Nicoll 已提交
646
		optional("javax.cache:cache-api:1.0.0")
647
		optional("com.google.guava:guava:18.0")
648
		optional("net.sf.ehcache:ehcache:${ehcacheVersion}")
649
		optional("org.quartz-scheduler:quartz:2.2.1")
650
		optional("org.codehaus.fabric3.api:commonj:1.1.0")
651
		optional("org.apache.velocity:velocity:1.7")
652
		optional("org.freemarker:freemarker:${freemarkerVersion}")
653
		optional("com.lowagie:itext:2.1.7")
654
		optional("net.sf.jasperreports:jasperreports:$jasperreportsVersion") {
655 656 657
			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"
658 659
			exclude group: "org.olap4j", module: "olap4j"
			exclude group: "xml-apis", module: "xml-apis"
A
Andy Wilkinson 已提交
660
			exclude group: "org.springframework", module: "spring-context"
661
		}
662
		testCompile(project(":spring-context"))
663
		testCompile("org.apache.poi:poi:${poiVersion}")
664 665
		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 已提交
666
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
667
		testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
668
		testRuntime("com.sun.mail:javax.mail:${javamailVersion}")
669 670
		testCompile("org.ehcache:jcache:${ehcachejcacheVersion}")
		// testCompile("org.ehcache:ehcache:3.0.0.m1")  // alternative to ehcache-jcache above
671
	}
C
Chris Beams 已提交
672 673
}

P
Phillip Webb 已提交
674 675
project("spring-web") {
	description = "Spring Web"
676
	apply plugin: "groovy"
677

678 679 680 681 682 683 684 685 686 687 688 689 690 691 692
	// 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"
	}

693
	dependencies {
694 695
		compile(project(":spring-aop"))  // for JaxWsPortProxyFactoryBean
		compile(project(":spring-beans"))  // for MultipartFilter
696
		compile(project(":spring-context"))
697
		compile(project(":spring-core"))
698
		provided("javax.servlet:javax.servlet-api:3.0.1")
699
		optional(project(":spring-oxm"))  // for MarshallingHttpMessageConverter
700
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
701
		optional("javax.portlet:portlet-api:2.0")
702
		optional("javax.el:javax.el-api:2.2.5")
703
		optional("javax.faces:javax.faces-api:2.2")
704
		optional("aopalliance:aopalliance:1.0")
705
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
706
		optional("com.caucho:hessian:4.0.38")
707 708 709
		optional("commons-fileupload:commons-fileupload:${fileuploadVersion}")
		optional("org.apache.httpcomponents:httpclient:${httpclientVersion}")
		optional("org.apache.httpcomponents:httpasyncclient:${httpasyncVersion}")
710
		optional("io.netty:netty-all:${nettyVersion}")
711
		optional("com.squareup.okhttp:okhttp:2.4.0")
712
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
713
		optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jackson2Version}")
R
Roy Clarkson 已提交
714
		optional("com.google.code.gson:gson:${gsonVersion}")
715
		optional("com.rometools:rome:${romeVersion}")
B
Brian Clozel 已提交
716
		optional("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
717
			exclude group: "javax.servlet", module: "javax.servlet-api"
718
		}
B
Brian Clozel 已提交
719
		optional("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
720
			exclude group: "javax.servlet", module: "javax.servlet-api"
721
		}
722
		optional("log4j:log4j:1.2.17")
R
Polish  
Rossen Stoyanchev 已提交
723 724
		optional("com.googlecode.protobuf-java-format:protobuf-java-format:1.2")
		optional("com.google.protobuf:protobuf-java:${protobufVersion}")
725
		optional("javax.mail:javax.mail-api:${javamailVersion}")
726
		testCompile(project(":spring-context-support"))  // for JafMediaTypeFactory
727
		testCompile("xmlunit:xmlunit:${xmlunitVersion}")
728
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
729 730 731
		testCompile("org.apache.taglibs:taglibs-standard-jstlel:1.2.1") {
			exclude group: "org.apache.taglibs", module: "taglibs-standard-spec"
		}
732
		testCompile("com.fasterxml.jackson.datatype:jackson-datatype-joda:${jackson2Version}")
733
		testCompile("com.fasterxml.jackson.datatype:jackson-datatype-jdk8:${jackson2Version}")
734
		testRuntime("com.sun.mail:javax.mail:${javamailVersion}")
735
	}
C
Chris Beams 已提交
736 737
}

738
project("spring-websocket") {
739
	description = "Spring WebSocket"
740 741 742 743 744

	dependencies {
		compile(project(":spring-core"))
		compile(project(":spring-context"))
		compile(project(":spring-web"))
745
		optional(project(":spring-messaging"))
746
		optional(project(":spring-webmvc"))
747
		optional("javax.servlet:javax.servlet-api:3.1.0")
748
		optional("javax.websocket:javax.websocket-api:1.0")
749
		optional("org.apache.tomcat:tomcat-websocket:${tomcatVersion}") {
750 751 752
			exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
			exclude group: "org.apache.tomcat", module: "tomcat-servlet-api"
		}
753 754 755 756
		optional("org.glassfish.tyrus:tyrus-spi:${tyrusVersion}")
		optional("org.glassfish.tyrus:tyrus-core:${tyrusVersion}")
		optional("org.glassfish.tyrus:tyrus-server:${tyrusVersion}")
		optional("org.glassfish.tyrus:tyrus-container-servlet:${tyrusVersion}")
B
Brian Clozel 已提交
757
		optional("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
758 759
			exclude group: "javax.servlet", module: "javax.servlet"
		}
B
Brian Clozel 已提交
760
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
761
			exclude group: "javax.servlet", module: "javax.servlet"
762
		}
B
Brian Clozel 已提交
763
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
R
Rossen Stoyanchev 已提交
764
		optional("org.eclipse.jetty:jetty-client:${jettyVersion}")
765 766
		optional("io.undertow:undertow-core:${undertowVersion}")
		optional("io.undertow:undertow-servlet:${undertowVersion}") {
767
			exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_3.1_spec"
768
			exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
769
		}
770
		optional("io.undertow:undertow-websockets-jsr:${undertowVersion}") {
771
			exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.1_spec"
772
		}
773
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
774 775 776
		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}")
S
Stephane Maldini 已提交
777
		testCompile("io.projectreactor:reactor-net:${reactorVersion}")
778
		testCompile("io.netty:netty-all:${nettyVersion}")
779 780
		testCompile("log4j:log4j:1.2.17")
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
781 782 783
	}
}

P
Phillip Webb 已提交
784 785
project("spring-orm") {
	description = "Spring Object/Relational Mapping"
786

787
	dependencies {
788 789 790 791 792 793 794 795
		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")
796
		optional("org.eclipse.persistence:javax.persistence:2.0.5")
797 798
		optional("org.eclipse.persistence:org.eclipse.persistence.core:${eclipselinkVersion}")
		optional("org.eclipse.persistence:org.eclipse.persistence.jpa:${eclipselinkVersion}") {
799 800 801 802 803 804 805 806 807
			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'
		}
808
		optional("org.apache.openjpa:openjpa:${openjpaVersion}") {
809 810 811 812 813
			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'
		}
814
		optional("javax.jdo:jdo-api:3.1") {
815 816
			exclude group: 'javax.transaction', module: 'transaction-api'
		}
817
		optional("javax.servlet:javax.servlet-api:3.0.1")
818
		testCompile("commons-dbcp:commons-dbcp:1.4")
S
Sam Brannen 已提交
819
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
P
Phillip Webb 已提交
820
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
821
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
822
	}
C
Chris Beams 已提交
823 824
}

P
Phillip Webb 已提交
825 826
project("spring-orm-hibernate4") {
	description = "Spring Object/Relational Mapping - Hibernate 4 support"
827
	merge.into = project(":spring-orm")
828

829
	dependencies {
830
		provided(project(":spring-jdbc"))
831
		provided(project(":spring-tx"))
832
		optional(project(":spring-web"))
833 834
		optional("org.hibernate:hibernate-core:${hibernate4Version}")
		optional("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
835
		optional("javax.servlet:javax.servlet-api:3.0.1")
836
        optional("aopalliance:aopalliance:1.0")
837
		testCompile("javax.validation:validation-api:1.1.0.GA")
838
		testCompile("org.hibernate:hibernate-validator:${hibval5Version}")
839 840
		testCompile("javax.el:javax.el-api:2.2.5")
		testCompile("org.glassfish.web:javax.el:2.2.6")
841
	}
842 843
}

844 845 846 847 848 849 850 851
project("spring-orm-hibernate5") {
	description = "Spring Object/Relational Mapping - Hibernate 5 support"
	merge.into = project(":spring-orm")

	dependencies {
		provided(project(":spring-jdbc"))
		provided(project(":spring-tx"))
		optional(project(":spring-web"))
852 853
		optional("org.hibernate:hibernate-core:${hibernate5Version}")
		optional("org.hibernate:hibernate-entitymanager:${hibernate5Version}")
854 855 856 857 858
		optional("javax.servlet:javax.servlet-api:3.0.1")
		optional("aopalliance:aopalliance:1.0")
	}
}

P
Phillip Webb 已提交
859 860
project("spring-webmvc") {
	description = "Spring Web MVC"
861

862
	dependencies {
863 864
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
865
		compile(project(":spring-core"))
866
		compile(files(project(":spring-core").objenesisRepackJar))
867 868
		compile(project(":spring-expression"))
		compile(project(":spring-web"))
869
		provided("javax.servlet:javax.servlet-api:3.0.1")
870 871
		optional(project(":spring-context-support"))  // for Velocity support
		optional(project(":spring-oxm"))  // for MarshallingView
872 873
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
874
		optional("net.sourceforge.jexcelapi:jxl:2.6.12")
875 876
		optional("org.apache.poi:poi:${poiVersion}")
		optional("org.apache.poi:poi-ooxml:${poiVersion}")
877 878
		optional("org.apache.velocity:velocity:1.7")
		optional("velocity-tools:velocity-tools-view:1.4")
879
		optional("org.freemarker:freemarker:${freemarkerVersion}")
880
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
881
		optional("com.lowagie:itext:2.1.7")
882
		optional("net.sf.jasperreports:jasperreports:$jasperreportsVersion") {
883 884 885
			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"
886 887
			exclude group: "org.olap4j", module: "olap4j"
			exclude group: "xml-apis", module: "xml-apis"
A
Andy Wilkinson 已提交
888
			exclude group: "org.springframework", module: "spring-context"
889 890
		}
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
891
		optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jackson2Version}")
892
		optional("com.rometools:rome:${romeVersion}")
893 894 895
		optional("javax.el:javax.el-api:2.2.5")
		optional("org.apache.tiles:tiles-api:${tiles3Version}")
		optional("org.apache.tiles:tiles-core:${tiles3Version}") {
896 897
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
898
		optional("org.apache.tiles:tiles-servlet:${tiles3Version}") {
899 900
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
901
		optional("org.apache.tiles:tiles-jsp:${tiles3Version}") {
902 903
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
904
		optional("org.apache.tiles:tiles-el:${tiles3Version}") {
905 906
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
907
		optional("org.apache.tiles:tiles-extras:${tiles3Version}") {
908 909 910
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
			exclude group: "org.springframework", module: "spring-web"
		}
911
		optional 'org.webjars:webjars-locator:0.26'
912 913
		testCompile(project(":spring-aop"))
		testCompile("rhino:js:1.7R1")
914
		testCompile("xmlunit:xmlunit:${xmlunitVersion}")
915
		testCompile("dom4j:dom4j:1.6.1") {
P
Phillip Webb 已提交
916
			exclude group: "xml-apis", module: "xml-apis"
917 918
		}
		testCompile("jaxen:jaxen:1.1.1") {
P
Phillip Webb 已提交
919 920 921
			exclude group: "xml-apis", module: "xml-apis"
			exclude group: "xom", module: "xom"
			exclude group: "xerces", module: "xercesImpl"
922
		}
B
Brian Clozel 已提交
923
		testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
924
			exclude group: "javax.servlet", module: "javax.servlet"
925
		}
B
Brian Clozel 已提交
926
		testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
927
			exclude group: "javax.servlet", module: "javax.servlet"
928 929
		}
		testCompile("javax.validation:validation-api:1.0.0.GA")
930 931 932
		testCompile("org.hibernate:hibernate-validator:${hibval4Version}")
		testCompile("org.apache.httpcomponents:httpclient:${httpclientVersion}")
		testCompile("commons-fileupload:commons-fileupload:${fileuploadVersion}")
933
		testCompile("commons-io:commons-io:1.3")
934
		testCompile("joda-time:joda-time:${jodaVersion}")
935
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
936 937
		testCompile("org.jruby:jruby:${jrubyVersion}")
		testCompile("org.python:jython-standalone:2.5.3")
938
		testCompile("org.webjars:underscorejs:1.8.2")
939
	}
C
Chris Beams 已提交
940 941
}

942 943
project("spring-webmvc-tiles2") {
	description = "Spring Framework Tiles2 Integration"
944
	merge.into = project(":spring-webmvc")
945

946
	dependencies {
947 948
		provided(project(":spring-context"))
		provided(project(":spring-web"))
949
		provided("javax.servlet:javax.servlet-api:3.0.1")
950 951
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
952 953
		optional("org.apache.tiles:tiles-api:${tiles2Version}")
		optional("org.apache.tiles:tiles-core:${tiles2Version}") {
P
Phillip Webb 已提交
954
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
955
		}
956
		optional("org.apache.tiles:tiles-servlet:${tiles2Version}") {
P
Phillip Webb 已提交
957
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
958
		}
959
		optional("org.apache.tiles:tiles-jsp:${tiles2Version}") {
P
Phillip Webb 已提交
960
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
961
		}
962
		optional("org.apache.tiles:tiles-el:${tiles2Version}") {
963
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
964
		}
965
		optional("org.apache.tiles:tiles-extras:${tiles2Version}") {
P
Phillip Webb 已提交
966
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
967
			exclude group: "org.apache.velocity", module: "velocity-tools"
968
			exclude group: "org.springframework", module: "spring-web"
969
		}
970
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
971
	}
972 973
}

P
Phillip Webb 已提交
974 975
project("spring-webmvc-portlet") {
	description = "Spring Web Portlet"
976

977
	dependencies {
978 979
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
980
		compile(project(":spring-core"))
981 982
		compile(project(":spring-web"))
		compile(project(":spring-webmvc"))
983 984
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.portlet:portlet-api:2.0")
985
		optional("commons-fileupload:commons-fileupload:${fileuploadVersion}")
986
	}
C
Chris Beams 已提交
987 988
}

P
Phillip Webb 已提交
989 990
project("spring-test") {
	description = "Spring TestContext Framework"
991

992
	dependencies {
993
		compile(project(":spring-core"))
994 995 996 997 998 999 1000
		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 已提交
1001
		optional(project(":spring-webmvc-portlet"))
1002
		optional("junit:junit:${junitVersion}")
1003
		optional("org.testng:testng:${testngVersion}")
1004
		optional("javax.inject:javax.inject:1")
1005
		optional("javax.servlet:javax.servlet-api:3.0.1")
1006 1007 1008 1009 1010
		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"
		}
1011
		optional("javax.portlet:portlet-api:2.0")
1012
		optional("javax.el:javax.el-api:2.2.5")
1013
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
S
Sam Brannen 已提交
1014
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
1015 1016 1017
		optional("org.hamcrest:hamcrest-core:${hamcrestVersion}")
		optional("com.jayway.jsonpath:json-path:${jsonpathVersion}")
		optional("org.skyscreamer:jsonassert:${jsonassertVersion}")
1018
		optional("xmlunit:xmlunit:${xmlunitVersion}")
1019 1020
		optional("net.sourceforge.htmlunit:htmlunit:${htmlunitVersion}")
		optional("org.seleniumhq.selenium:selenium-htmlunit-driver:${seleniumVersion}")
1021 1022
		testCompile(project(":spring-context-support"))
		testCompile(project(":spring-oxm"))
1023
		testCompile("javax.mail:javax.mail-api:${javamailVersion}")
1024
		testCompile("javax.ejb:ejb-api:${ejbApiVersion}")
1025 1026
		testCompile("org.hibernate:hibernate-core:${hibernate4Version}")
		testCompile("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
1027
		testCompile("org.hibernate:hibernate-validator:${hibval5Version}")
1028
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
1029
		testCompile("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
1030
		testCompile("com.rometools:rome:${romeVersion}")
1031 1032
		testCompile("org.apache.tiles:tiles-api:${tiles3Version}")
		testCompile("org.apache.tiles:tiles-core:${tiles3Version}") {
1033 1034
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
1035
		testCompile("org.apache.tiles:tiles-servlet:${tiles3Version}") {
1036 1037
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
1038
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
S
Sam Brannen 已提交
1039
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
1040
		testCompile("org.apache.httpcomponents:httpclient:${httpclientVersion}")
1041
	}
1042 1043

	task testNG(type: Test) {
1044
		description = 'Runs TestNG tests.'
1045
		useTestNG()
1046
		scanForTestClasses = false
1047 1048
		include(["**/testng/**/*Tests.class", "**/testng/**/*Test.class"])
		// Show STD_OUT & STD_ERR of the test JVM(s) on the console:
1049
		// testLogging.showStandardStreams = true
1050
		// forkEvery 1
1051 1052 1053
	}

	test {
1054
		description = 'Runs JUnit tests.'
1055 1056
		dependsOn testNG
		useJUnit()
1057
		exclude "**/testng/**/*.*"
1058
	}
1059 1060

	task aggregateTestReports(type: TestReport) {
1061
		description = 'Aggregates JUnit and TestNG test reports.'
1062 1063 1064 1065 1066
		destinationDir = test.reports.html.destination
		reportOn test, testNG
	}

	check.dependsOn aggregateTestReports
C
Chris Beams 已提交
1067 1068
}

P
Phillip Webb 已提交
1069 1070 1071
project("spring-aspects") {
	description = "Spring Aspects"
	apply from: "aspects.gradle"
1072

1073
	dependencies {
1074
		aspects(project(":spring-orm"))
1075
		ajc("org.aspectj:aspectjtools:1.9.0.BETA-2")  // for the ability to build on JDK 9, not exposed in the POMs yet
J
Juergen Hoeller 已提交
1076
		rt("org.aspectj:aspectjrt:${aspectjVersion}")  // regular AspectJ version here, to be exposed in the POMs
1077
		compile("org.aspectj:aspectjweaver:${aspectjVersion}")
1078
		provided("org.eclipse.persistence:javax.persistence:2.0.0")
1079 1080 1081 1082 1083 1084
		optional(project(":spring-aop"))  // for @Async support
		optional(project(":spring-beans"))  // for @Configurable support
		optional(project(":spring-context"))  // for @Enable* support
		optional(project(":spring-context-support"))  // for JavaMail and JSR-107 support
		optional(project(":spring-orm"))  // for JPA exception translation support
		optional(project(":spring-tx"))  // for JPA, @Transactional support
1085
		optional("javax.transaction:javax.transaction-api:${jtaVersion}")  // for @javax.transaction.Transactional support
S
Stephane Nicoll 已提交
1086
		optional("javax.cache:cache-api:1.0.0")
1087
		testCompile(project(":spring-core"))  // for CodeStyleAspect
1088
		testCompile(project(":spring-test"))
1089
		testCompile("javax.mail:javax.mail-api:${javamailVersion}")
1090
	}
1091

1092
	eclipse.project {
P
Phillip Webb 已提交
1093
		natures += "org.eclipse.ajdt.ui.ajnature"
1094
		buildCommands = [new org.gradle.plugins.ide.eclipse.model.
P
Phillip Webb 已提交
1095
				BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
1096
	}
C
Chris Beams 已提交
1097 1098
}

1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133
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)
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

S
Stephane Nicoll 已提交
1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149
apply plugin: 'sonar-runner'

sonarRunner {
	sonarProperties {
		property "sonar.projectName", "Spring Framework"
		property "sonar.profile", "Spring Framework"
		property "sonar.jacoco.reportPath", "${buildDir.name}/jacoco.exec"
		property "sonar.links.homepage", linkHomepage
		property "sonar.links.ci", linkCi
		property "sonar.links.issue", linkIssue
		property "sonar.links.scm", linkScmUrl
		property "sonar.links.scm_dev", linkScmDevConnection
		property "sonar.java.coveragePlugin", "jacoco"
	}
}

1150
configure(rootProject) {
P
Phillip Webb 已提交
1151
	description = "Spring Framework"
1152

B
Brian Clozel 已提交
1153
	apply plugin: "org.asciidoctor.convert"
1154
	apply plugin: "docbook-reference"
1155
	apply plugin: "groovy"
R
Rob Winch 已提交
1156

1157
	// apply plugin: "detect-split-packages"
1158 1159
	apply from: "${gradleScriptDir}/jdiff.gradle"

R
Rob Winch 已提交
1160
	asciidoctor {
B
Brian Clozel 已提交
1161 1162
		sourceDir project.file('src/asciidoc')
		separateOutputDirs = false
1163
		backends = ['docbook']
B
Brian Clozel 已提交
1164
		options doctype: 'book', eruby: 'erubis'
1165 1166
		attributes 	'spring-version': project.version,
					'javadoc-baseurl' : "http://docs.spring.io/spring/docs/current/javadoc-api",
B
Brian Clozel 已提交
1167 1168
					revnumber : project.version,
					docinfo : ""
1169 1170
	}

1171 1172 1173
	reference {
		sourceDir = asciidoctor.outputDir
		pdfFilename = "spring-framework-reference.pdf"
1174
		epubFilename = "spring-framework-reference.epub"
1175 1176 1177 1178 1179 1180 1181
		expandPlaceholders = ""
	}

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

1182 1183 1184 1185 1186
	// 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")
	// }
1187

C
Chris Beams 已提交
1188
	// don't publish the default jar for the root project
1189 1190 1191
	configurations.archives.artifacts.clear()

	dependencies { // for integration tests
1192
		testCompile(project(":spring-aop"))
1193
		testCompile(project(":spring-beans"))
1194
		testCompile(project(":spring-context"))
1195 1196
		testCompile(project(":spring-core"))
		testCompile(project(":spring-expression"))
1197
		testCompile(project(":spring-jdbc"))
1198
		testCompile(project(":spring-orm"))
1199
		testCompile(project(":spring-test"))
1200
		testCompile(project(":spring-tx"))
1201 1202
		testCompile(project(":spring-web"))
		testCompile(project(":spring-webmvc-portlet"))
1203
		testCompile("javax.servlet:javax.servlet-api:3.0.1")
1204 1205 1206 1207
		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}")
1208
		testCompile("org.hibernate:hibernate-core:${hibernate4Version}")
P
Phillip Webb 已提交
1209
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
1210 1211 1212
	}

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

1217 1218 1219 1220 1221
		dependsOn {
			subprojects.collect {
				it.tasks.getByName("jar")
			}
		}
1222 1223 1224
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = rootProject.description
P
Phillip Webb 已提交
1225
		options.overview = "src/api/overview.html"
1226
		options.stylesheetFile = file("src/api/stylesheet.css")
1227
		options.splitIndex = true
C
Chris Beams 已提交
1228
		options.links(project.ext.javadocLinks)
1229
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
1230

1231 1232 1233
		source subprojects.collect { project ->
			project.sourceSets.main.allJava
		}
C
Chris Beams 已提交
1234

P
Phillip Webb 已提交
1235
		maxMemory = "1024m"
C
Chris Beams 已提交
1236
		destinationDir = new File(buildDir, "api")
1237 1238 1239

		doFirst {
			classpath = files(
1240
				// ensure Servlet 3.x and Hibernate 4.x have precedence on the javadoc
1241 1242 1243 1244 1245 1246 1247 1248
				// 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 })
		}
1249 1250
	}

1251
	task docsZip(type: Zip, dependsOn: 'reference') {
P
Phillip Webb 已提交
1252 1253 1254
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "docs"
1255 1256 1257
		description = "Builds -${classifier} archive containing api and reference " +
			"for deployment at http://static.springframework.org/spring-framework/docs."

P
Phillip Webb 已提交
1258 1259
		from("src/dist") {
			include "changelog.txt"
1260 1261 1262
		}

		from (api) {
1263
			into "javadoc-api"
1264 1265
		}

1266 1267
		from (reference) {
			into "spring-framework-reference"
1268 1269 1270 1271
		}
	}

	task schemaZip(type: Zip) {
P
Phillip Webb 已提交
1272 1273 1274
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "schema"
1275 1276
		description = "Builds -${classifier} archive containing all " +
			"XSDs for deployment at http://springframework.org/schema."
S
Stephane Nicoll 已提交
1277
		duplicatesStrategy 'exclude'
1278
		moduleProjects.each { subproject ->
1279 1280 1281
			def Properties schemas = new Properties();

			subproject.sourceSets.main.resources.find {
P
Phillip Webb 已提交
1282
				it.path.endsWith("META-INF/spring.schemas")
1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299
			}?.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 已提交
1300 1301 1302
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist"
1303 1304 1305 1306 1307
		description = "Builds -${classifier} archive, containing all jars and docs, " +
					"suitable for community download page."

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

P
Phillip Webb 已提交
1308 1309 1310 1311
		from("src/dist") {
			include "readme.txt"
			include "license.txt"
			include "notice.txt"
1312
			into "${baseDir}"
P
Phillip Webb 已提交
1313
			expand(copyright: new Date().format("yyyy"), version: project.version)
1314 1315 1316 1317 1318 1319 1320 1321 1322 1323
		}

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

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

1324
		moduleProjects.each { subproject ->
1325 1326
			into ("${baseDir}/libs") {
				from subproject.jar
P
Phillip Webb 已提交
1327
				if (subproject.tasks.findByPath("sourcesJar")) {
1328 1329
					from subproject.sourcesJar
				}
P
Phillip Webb 已提交
1330
				if (subproject.tasks.findByPath("javadocJar")) {
1331 1332 1333 1334 1335 1336
					from subproject.javadocJar
				}
			}
		}
	}

1337
	// Create a distribution that contains all dependencies (required and optional).
1338 1339
	// Not published by default; only for use when building from source.
	task depsZip(type: Zip, dependsOn: distZip) { zipTask ->
P
Phillip Webb 已提交
1340 1341 1342
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist-with-deps"
1343 1344 1345 1346 1347 1348 1349 1350 1351 1352
		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 ->
1353 1354
					(subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts +
					subproject.configurations.optional.resolvedConfiguration.resolvedArtifacts).each { artifact ->
1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375
						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 已提交
1376
		description = "Generates gradlew[.bat] scripts"
S
Sam Brannen 已提交
1377
		gradleVersion = "2.5"
1378 1379

		doLast() {
1380
			def gradleOpts = "-XX:MaxMetaspaceSize=1024m -Xmx1024m"
1381
			def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
P
Phillip Webb 已提交
1382
			File wrapperFile = file("gradlew")
1383 1384
			wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
				"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
P
Phillip Webb 已提交
1385
			File wrapperBatFile = file("gradlew.bat")
1386 1387 1388 1389
			wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
				"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
		}
	}
1390

1391
}
1392

S
Stephane Nicoll 已提交
1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407
configure([project(':spring-build-src'), project(':spring-framework-bom')]) {
	sonarRunner {
		skipProject = true
	}
}

configure(project(':spring-core')) {
	sonarRunner {
		sonarProperties {
			property "sonar.exclusions",
					"src/main/java/org/springframework/cglib/**/*,src/main/java/org/springframework/asm/**/*"
		}
	}
}

1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418
/*
 * 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-")) {
1419
			return version.replace('BUILD', qualifier)
1420 1421
		}
	}
1422
	return version
1423
}