build.gradle 49.8 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
}

13 14 15 16
plugins {
	id "org.sonarqube" version "1.1"
}

S
Stephane Nicoll 已提交
17 18 19 20 21 22
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'
23
	linkScmDevConnection = 'scm:git:ssh://git@github.com:spring-projects/spring-framework.git'
24

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

C
Chris Beams 已提交
30
configure(allprojects) { project ->
31 32
	group = "org.springframework"
	version = qualifyVersionIfNecessary(version)
33

34
	ext.aspectjVersion       = "1.8.9"
35
	ext.caffeineVersion      = "2.3.1"
36
	ext.eclipselinkVersion   = "2.4.2"
37
	ext.ehcacheVersion       = "2.10.2"
38
	ext.ehcachejcacheVersion = "1.0.1"
39
	ext.ehcache3Version      = "3.1.0"
40
	ext.ejbVersion           = "3.0"
41
	ext.fileuploadVersion    = "1.3.2"
42
	ext.freemarkerVersion    = "2.3.23"
J
Juergen Hoeller 已提交
43
	ext.groovyVersion        = "2.4.7"
44
	ext.gsonVersion          = "2.7"
45
	ext.guavaVersion         = "19.0"
46
	ext.hamcrestVersion      = "1.3"
47
	ext.hibernate3Version    = "3.6.10.Final"
48
	ext.hibernate4Version    = "4.3.11.Final"
J
Juergen Hoeller 已提交
49
	ext.hibernate5Version    = "5.2.1.Final"
50
	ext.hibval4Version       = "4.3.2.Final"
51
	ext.hibval5Version       = "5.2.4.Final"
52
	ext.hsqldbVersion        = "2.3.4"
53
	ext.httpasyncVersion     = "4.1.2"
54
	ext.httpclientVersion    = "4.5.2"
55
	ext.jackson2Version      = "2.8.0.rc2"
56
	ext.jasperreportsVersion = "6.2.1"  // our tests fail with JR-internal NPEs against 6.2.2 and higher
57
	ext.javamailVersion      = "1.5.5"
58
	ext.jettyVersion         = "9.3.10.v20160621"
59
	ext.jodaVersion          = "2.9.4"
60
	ext.jrubyVersion         = "1.7.25"  // JRuby 9000 only supported through JSR-223 (StandardScriptFactory)
61
	ext.jtaVersion           = "1.2"
J
Juergen Hoeller 已提交
62
	ext.junitVersion         = "4.12"
S
Sam Brannen 已提交
63
	ext.log4jVersion         = "1.2.17"
64
	ext.nettyVersion         = "4.1.1.Final"
65
	ext.okhttpVersion        = "2.7.5"
66
	ext.okhttp3Version       = "3.3.1"
67
	ext.openjpaVersion       = "2.4.1"
68
	ext.poiVersion           = "3.14"
R
Rossen Stoyanchev 已提交
69
	ext.reactorVersion       = "2.0.8.RELEASE"
70 71
	ext.romeVersion          = "1.6.0"
	ext.slf4jVersion         = "1.7.21"
72
	ext.snakeyamlVersion     = "1.17"
73
	ext.snifferVersion       = "1.15"
74
	ext.testngVersion        = "6.9.10"
75
	ext.tiles2Version        = "2.2.2"
76
	ext.tiles3Version        = "3.0.5"
77
	ext.tomcatVersion        = "8.5.3"
78
	ext.tyrusVersion         = "1.3.5"  // constrained by WebLogic 12.1.3 support
J
Juergen Hoeller 已提交
79
	ext.undertowVersion      = "1.4.0.CR2"
80
	ext.xmlunitVersion       = "1.6"
J
Juergen Hoeller 已提交
81
	ext.xstreamVersion       = "1.4.9"
82

83
	ext.gradleScriptDir = "${rootProject.projectDir}/gradle"
84

85
	apply plugin: "propdeps"
P
Phillip Webb 已提交
86
	apply plugin: "java"
87
	apply plugin: "test-source-set-dependencies"
88
	apply from: "${gradleScriptDir}/ide.gradle"
C
Chris Beams 已提交
89

S
Stephane Nicoll 已提交
90 91 92 93 94
	configurations {
		sniffer
		javaApiSignature
	}

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

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

110
	compileJava {
J
Juergen Hoeller 已提交
111 112
		sourceCompatibility = 1.6
		targetCompatibility = 1.6
113 114 115
	}

	compileTestJava {
J
Juergen Hoeller 已提交
116 117
		sourceCompatibility = 1.8
		targetCompatibility = 1.8
118
		options.compilerArgs += "-parameters"
J
Juergen Hoeller 已提交
119 120
	}

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

132
	repositories {
B
Brian Clozel 已提交
133
		maven { url "https://repo.spring.io/libs-release" }
134
	}
C
Chris Beams 已提交
135

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

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

	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
166

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

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

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

S
Stephane Nicoll 已提交
214 215 216 217 218
	configurations {
		jacoco
	}

	dependencies {
219
		jacoco("org.jacoco:org.jacoco.agent:0.7.5.201505241946:runtime")
S
Stephane Nicoll 已提交
220 221 222
	}

	gradle.taskGraph.whenReady {taskGraph ->
223
		if (taskGraph.hasTask(':sonarqube')) {
S
Stephane Nicoll 已提交
224 225 226 227
			test.jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=org.springframework.*"
		}
	}

228
	jar {
P
Phillip Webb 已提交
229 230 231 232
		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
233 234 235 236 237

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

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

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

		// 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
255 256
	}

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

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

	artifacts {
		archives sourcesJar
		archives javadocJar
	}
C
Chris Beams 已提交
272 273
}

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

	dependencies {
		compile gradleApi()
R
Rob Winch 已提交
280
		compile localGroovy()
281 282 283 284 285
	}

	configurations.archives.artifacts.clear()
}

P
Phillip Webb 已提交
286 287
project("spring-core") {
	description = "Spring Core"
288

289 290
	// As of Spring 4.0.3, spring-core includes asm 5.x and repackages cglib 3.2, inlining
	// both into the spring-core jar. cglib 3.2 itself depends on asm 5.x and is therefore
291
	// further transformed by the JarJar task to depend on org.springframework.asm; this
292
	// avoids including two different copies of asm unnecessarily.
J
Juergen Hoeller 已提交
293
	def cglibVersion = "3.2.4"
294
	def objenesisVersion = "2.4"
295 296 297 298

	configurations {
		jarjar
		cglib
299
		objenesis
300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
	}

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

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

344
	dependencies {
345
		cglib("cglib:cglib:${cglibVersion}@jar")
346
		objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
347
		jarjar("com.googlecode.jarjar:jarjar:1.3")
348

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

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

		dependsOn objenesisRepackJar
		from(zipTree(objenesisRepackJar.archivePath)) {
			include "org/springframework/objenesis/**"
		}
374
	}
C
Chris Beams 已提交
375 376
}

P
Phillip Webb 已提交
377 378
project("spring-beans") {
	description = "Spring Beans"
379

380
	dependencies {
381 382
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
383
		optional("javax.inject:javax.inject:1")
384
		optional("javax.el:javax.el-api:2.2.5")
385
		optional("org.yaml:snakeyaml:${snakeyamlVersion}")
S
Sam Brannen 已提交
386
		testCompile("log4j:log4j:${log4jVersion}")
387
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
J
Juergen Hoeller 已提交
388
	}
C
Chris Beams 已提交
389 390
}

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

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

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

	compileGroovy {
J
Juergen Hoeller 已提交
412 413
		sourceCompatibility = 1.6
		targetCompatibility = 1.6
414
	}
J
Juergen Hoeller 已提交
415 416
}

P
Phillip Webb 已提交
417 418
project("spring-aop") {
	description = "Spring AOP"
419

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

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

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

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

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

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

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

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

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

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

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

	dependencies {
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
		compile(project(":spring-context"))
504
		optional(project(":spring-oxm"))
R
Rossen Stoyanchev 已提交
505
		optional("io.projectreactor:reactor-core:${reactorVersion}")
S
Stephane Maldini 已提交
506
		optional("io.projectreactor:reactor-net:${reactorVersion}") {
507 508
			exclude group: "io.netty", module: "netty-all"
		}
509
		optional("io.netty:netty-all:${nettyVersion}")
B
Brian Clozel 已提交
510
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
511 512
			exclude group: "javax.servlet", module: "javax.servlet-api"
		}
B
Brian Clozel 已提交
513
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
514
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
515
		testCompile("javax.inject:javax.inject-tck:1")
516
		testCompile("javax.servlet:javax.servlet-api:3.1.0")
517
		testCompile("javax.validation:validation-api:1.0.0.GA")
518
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
519 520 521 522 523
		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 已提交
524
		testCompile("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
525
			exclude group: "javax.servlet", module: "javax.servlet-api"
526
		}
527 528
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
		testCompile("org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}")
529
		testCompile("io.netty:netty-all:${nettyVersion}")
530
		testCompile("commons-dbcp:commons-dbcp:1.4")
S
Sam Brannen 已提交
531
		testCompile("log4j:log4j:${log4jVersion}")
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("javax.transaction:javax.transaction-api:${jtaVersion}")
546
		optional("javax.resource:connector-api:1.5")
547
		optional("javax.ejb:ejb-api:${ejbVersion}")
548
		optional("com.ibm.websphere:uow:6.0.2.17")
549
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
550
		testCompile("org.eclipse.persistence:javax.persistence:2.0.0")
551
		testCompile("org.codehaus.groovy:groovy-all:${groovyVersion}")
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
	dependencies {
567 568
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
569
		optional("org.codehaus.castor:castor-xml:1.4.1")  {
570
			exclude group: 'stax', module: 'stax-api'
571
			exclude group: "org.springframework", module: "spring-context"
572 573 574 575 576 577 578 579
		}
		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'
		}
580
		optional("org.jibx:jibx-run:1.2.6")
581
		testCompile(project(":spring-context"))
582
		testCompile("xmlunit:xmlunit:${xmlunitVersion}")
583 584
		testCompile("xpp3:xpp3:1.1.4c")
		testCompile("org.codehaus.jettison:jettison:1.3.7") {
585 586
			exclude group: 'stax', module: 'stax-api'
		}
587 588 589 590 591
		if (compileTestJava.enabled) {
			testCompile(files(genCastor.classesDir).builtBy(genCastor))
			testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
			testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
		}
592
	}
C
Chris Beams 已提交
593 594
}

P
Phillip Webb 已提交
595 596
project("spring-jms") {
	description = "Spring JMS"
597

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

P
Phillip Webb 已提交
613 614
project("spring-jdbc") {
	description = "Spring JDBC"
615

616
	dependencies {
617
		compile(project(":spring-beans"))
618
		compile(project(":spring-core"))
619
		compile(project(":spring-tx"))
620
		optional(project(":spring-context"))  // for JndiDataSourceLookup
621
		optional("javax.transaction:javax.transaction-api:${jtaVersion}")
622
		optional("com.mchange:c3p0:0.9.5.2")
P
Phillip Webb 已提交
623
		optional("org.hsqldb:hsqldb:${hsqldbVersion}")
624
		optional("com.h2database:h2:1.4.192")
625 626
		optional("org.apache.derby:derby:10.12.1.1")
		optional("org.apache.derby:derbyclient:10.12.1.1")
627
	}
C
Chris Beams 已提交
628 629
}

P
Phillip Webb 已提交
630 631
project("spring-context-support") {
	description = "Spring Context Support"
632

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

P
Phillip Webb 已提交
668 669
project("spring-web") {
	description = "Spring Web"
670
	apply plugin: "groovy"
671

672 673 674 675 676 677 678 679 680 681 682 683 684 685 686
	// 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"
	}

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

P
Phillip Webb 已提交
734 735
project("spring-orm") {
	description = "Spring Object/Relational Mapping"
736

737
	dependencies {
738 739 740 741 742 743 744
		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"))
745
		optional("org.eclipse.persistence:javax.persistence:2.0.5")
746 747
		optional("org.eclipse.persistence:org.eclipse.persistence.core:${eclipselinkVersion}")
		optional("org.eclipse.persistence:org.eclipse.persistence.jpa:${eclipselinkVersion}") {
748 749 750 751 752 753 754 755 756
			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'
		}
757
		optional("org.apache.openjpa:openjpa:${openjpaVersion}") {
758 759 760 761 762
			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'
		}
763
		optional("javax.jdo:jdo-api:3.1") {
764 765
			exclude group: 'javax.transaction', module: 'transaction-api'
		}
766
		optional("javax.servlet:javax.servlet-api:3.0.1")
767
		testCompile("commons-dbcp:commons-dbcp:1.4")
S
Sam Brannen 已提交
768
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
P
Phillip Webb 已提交
769
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
770
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
771
	}
C
Chris Beams 已提交
772 773
}

P
Phillip Webb 已提交
774 775
project("spring-orm-hibernate4") {
	description = "Spring Object/Relational Mapping - Hibernate 4 support"
776
	merge.into = project(":spring-orm")
777

778
	dependencies {
779
		provided(project(":spring-jdbc"))
780
		provided(project(":spring-tx"))
781
		optional(project(":spring-web"))
782 783
		optional("org.hibernate:hibernate-core:${hibernate4Version}")
		optional("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
784
		optional("javax.servlet:javax.servlet-api:3.0.1")
785
		testCompile("javax.validation:validation-api:1.1.0.GA")
786
		testCompile("org.hibernate:hibernate-validator:${hibval5Version}")
787 788
		testCompile("javax.el:javax.el-api:2.2.5")
		testCompile("org.glassfish.web:javax.el:2.2.6")
789
	}
790 791
}

792 793 794 795 796 797 798 799
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"))
800
		optional("org.hibernate:hibernate-core:${hibernate5Version}")
801
		optional("javax.servlet:javax.servlet-api:3.0.1")
802
		optional("javax.transaction:javax.transaction-api:${jtaVersion}")
803 804 805
	}
}

P
Phillip Webb 已提交
806 807
project("spring-webmvc") {
	description = "Spring Web MVC"
808

809
	dependencies {
810
		compile(project(":spring-aop"))
811 812
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
813
		compile(project(":spring-core"))
814
		compile(files(project(":spring-core").objenesisRepackJar))
815 816
		compile(project(":spring-expression"))
		compile(project(":spring-web"))
817
		provided("javax.servlet:javax.servlet-api:3.1.0")
818 819
		optional(project(":spring-context-support"))  // for Velocity support
		optional(project(":spring-oxm"))  // for MarshallingView
820 821
		optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
		optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1")
822
		optional("net.sourceforge.jexcelapi:jxl:2.6.12")
823 824
		optional("org.apache.poi:poi:${poiVersion}")
		optional("org.apache.poi:poi-ooxml:${poiVersion}")
825 826
		optional("org.apache.velocity:velocity:1.7")
		optional("velocity-tools:velocity-tools-view:1.4")
827
		optional("org.freemarker:freemarker:${freemarkerVersion}")
828
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
829
		optional("com.lowagie:itext:2.1.7")
830
		optional("net.sf.jasperreports:jasperreports:$jasperreportsVersion") {
831 832 833
			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"
834 835
			exclude group: "org.olap4j", module: "olap4j"
			exclude group: "xml-apis", module: "xml-apis"
A
Andy Wilkinson 已提交
836
			exclude group: "org.springframework", module: "spring-context"
837 838
		}
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
839
		optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jackson2Version}")
840
		optional("com.rometools:rome:${romeVersion}")
841 842 843
		optional("javax.el:javax.el-api:2.2.5")
		optional("org.apache.tiles:tiles-api:${tiles3Version}")
		optional("org.apache.tiles:tiles-core:${tiles3Version}") {
844 845
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
846
		optional("org.apache.tiles:tiles-servlet:${tiles3Version}") {
847 848
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
849
		optional("org.apache.tiles:tiles-jsp:${tiles3Version}") {
850 851
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
852
		optional("org.apache.tiles:tiles-el:${tiles3Version}") {
853 854
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
855
		optional("org.apache.tiles:tiles-extras:${tiles3Version}") {
856 857 858
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
			exclude group: "org.springframework", module: "spring-web"
		}
859 860
		optional('org.webjars:webjars-locator:0.30')
		testCompile("org.mozilla:rhino:1.7.7.1")
861
		testCompile("xmlunit:xmlunit:${xmlunitVersion}")
862
		testCompile("dom4j:dom4j:1.6.1") {
P
Phillip Webb 已提交
863
			exclude group: "xml-apis", module: "xml-apis"
864 865
		}
		testCompile("jaxen:jaxen:1.1.1") {
P
Phillip Webb 已提交
866 867 868
			exclude group: "xml-apis", module: "xml-apis"
			exclude group: "xom", module: "xom"
			exclude group: "xerces", module: "xercesImpl"
869
		}
B
Brian Clozel 已提交
870
		testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
871
			exclude group: "javax.servlet", module: "javax.servlet"
872
		}
B
Brian Clozel 已提交
873
		testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
874
			exclude group: "javax.servlet", module: "javax.servlet"
875 876
		}
		testCompile("javax.validation:validation-api:1.0.0.GA")
877 878 879
		testCompile("org.hibernate:hibernate-validator:${hibval4Version}")
		testCompile("org.apache.httpcomponents:httpclient:${httpclientVersion}")
		testCompile("commons-fileupload:commons-fileupload:${fileuploadVersion}")
880
		testCompile("commons-io:commons-io:1.3")
881
		testCompile("joda-time:joda-time:${jodaVersion}")
882
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
883 884
		testCompile("org.jruby:jruby:${jrubyVersion}")
		testCompile("org.python:jython-standalone:2.5.3")
885
		testCompile("org.webjars:underscorejs:1.8.3")
886
	}
C
Chris Beams 已提交
887 888
}

889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920
project("spring-webmvc-tiles2") {
	description = "Spring Framework Tiles2 Integration"
	merge.into = project(":spring-webmvc")

	dependencies {
		provided(project(":spring-context"))
		provided(project(":spring-web"))
		provided("javax.servlet:javax.servlet-api:3.0.1")
		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.tiles:tiles-api:${tiles2Version}")
		optional("org.apache.tiles:tiles-core:${tiles2Version}") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-servlet:${tiles2Version}") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-jsp:${tiles2Version}") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-el:${tiles2Version}") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-extras:${tiles2Version}") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
			exclude group: "org.apache.velocity", module: "velocity-tools"
			exclude group: "org.springframework", module: "spring-web"
		}
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
	}
}

P
Phillip Webb 已提交
921 922
project("spring-webmvc-portlet") {
	description = "Spring Web Portlet"
923

924
	dependencies {
925 926
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
927
		compile(project(":spring-core"))
928 929
		compile(project(":spring-web"))
		compile(project(":spring-webmvc"))
930 931
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.portlet:portlet-api:2.0")
932
		optional("commons-fileupload:commons-fileupload:${fileuploadVersion}")
933
	}
C
Chris Beams 已提交
934 935
}

936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975
project("spring-websocket") {
	description = "Spring WebSocket"

	dependencies {
		compile(project(":spring-core"))
		compile(project(":spring-context"))
		compile(project(":spring-web"))
		optional(project(":spring-messaging"))
		optional(project(":spring-webmvc"))
		optional("javax.servlet:javax.servlet-api:3.1.0")
		optional("javax.websocket:javax.websocket-api:1.0")
		optional("org.apache.tomcat:tomcat-websocket:${tomcatVersion}") {
			exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
			exclude group: "org.apache.tomcat", module: "tomcat-servlet-api"
		}
		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}")
		optional("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
			exclude group: "javax.servlet", module: "javax.servlet"
		}
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
			exclude group: "javax.servlet", module: "javax.servlet"
		}
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
		optional("org.eclipse.jetty:jetty-client:${jettyVersion}")
		optional("io.undertow:undertow-core:${undertowVersion}")
		optional("io.undertow:undertow-servlet:${undertowVersion}") {
			exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_3.1_spec"
			exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
		}
		optional("io.undertow:undertow-websockets-jsr:${undertowVersion}") {
			exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.1_spec"
		}
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
		testCompile("org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}")
		testCompile("io.projectreactor:reactor-net:${reactorVersion}")
		testCompile("io.netty:netty-all:${nettyVersion}")
S
Sam Brannen 已提交
976
		testCompile("log4j:log4j:${log4jVersion}")
977 978 979 980
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
	}
}

P
Phillip Webb 已提交
981 982
project("spring-test") {
	description = "Spring TestContext Framework"
983

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

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

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

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

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

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

1072
	dependencies {
1073
		aspects(project(":spring-orm"))
1074 1075 1076
		ajc("org.aspectj:aspectjtools:${aspectjVersion}")
		rt("org.aspectj:aspectjrt:${aspectjVersion}")
		compile("org.aspectj:aspectjweaver:${aspectjVersion}")
1077
		provided("org.eclipse.persistence:javax.persistence:2.0.0")
1078 1079 1080 1081 1082 1083
		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
1084
		optional("javax.transaction:javax.transaction-api:${jtaVersion}")  // for @javax.transaction.Transactional support
S
Stephane Nicoll 已提交
1085
		optional("javax.cache:cache-api:1.0.0")
1086
		testCompile(project(":spring-core"))  // for CodeStyleAspect
1087
		testCompile(project(":spring-test"))
1088
		testCompile("javax.mail:javax.mail-api:${javamailVersion}")
1089
	}
1090

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

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

1132 1133
sonarqube {
	properties {
S
Stephane Nicoll 已提交
1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145
		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"
	}
}

1146
configure(rootProject) {
P
Phillip Webb 已提交
1147
	description = "Spring Framework"
1148

B
Brian Clozel 已提交
1149
	apply plugin: "org.asciidoctor.convert"
1150
	apply plugin: "docbook-reference"
1151
	apply plugin: "groovy"
R
Rob Winch 已提交
1152

1153
	// apply plugin: "detect-split-packages"
1154 1155
	apply from: "${gradleScriptDir}/jdiff.gradle"

R
Rob Winch 已提交
1156
	asciidoctor {
B
Brian Clozel 已提交
1157 1158
		sourceDir project.file('src/asciidoc')
		separateOutputDirs = false
1159
		backends = ['docbook']
B
Brian Clozel 已提交
1160
		options doctype: 'book', eruby: 'erubis'
J
Juergen Hoeller 已提交
1161
		attributes 'spring-version': project.version, 'revnumber': project.version, 'docinfo': ""
1162 1163
	}

1164 1165 1166
	reference {
		sourceDir = asciidoctor.outputDir
		pdfFilename = "spring-framework-reference.pdf"
1167
		epubFilename = "spring-framework-reference.epub"
1168 1169 1170 1171 1172 1173 1174
		expandPlaceholders = ""
	}

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

1175 1176 1177 1178 1179
	// 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")
	// }
1180

C
Chris Beams 已提交
1181
	// don't publish the default jar for the root project
1182 1183 1184
	configurations.archives.artifacts.clear()

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

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

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

1224 1225 1226
		source subprojects.collect { project ->
			project.sourceSets.main.allJava
		}
C
Chris Beams 已提交
1227

P
Phillip Webb 已提交
1228
		maxMemory = "1024m"
C
Chris Beams 已提交
1229
		destinationDir = new File(buildDir, "api")
1230 1231 1232

		doFirst {
			classpath = files(
1233
				// ensure Servlet 3.x and Hibernate 4.x have precedence on the javadoc
1234 1235 1236 1237 1238 1239 1240 1241
				// 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 })
		}
1242 1243
	}

1244
	task docsZip(type: Zip, dependsOn: 'reference') {
P
Phillip Webb 已提交
1245 1246 1247
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "docs"
1248 1249 1250
		description = "Builds -${classifier} archive containing api and reference " +
			"for deployment at http://static.springframework.org/spring-framework/docs."

P
Phillip Webb 已提交
1251 1252
		from("src/dist") {
			include "changelog.txt"
1253 1254 1255
		}

		from (api) {
1256
			into "javadoc-api"
1257 1258
		}

1259 1260
		from (reference) {
			into "spring-framework-reference"
1261 1262 1263 1264
		}
	}

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

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

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

P
Phillip Webb 已提交
1301 1302 1303 1304
		from("src/dist") {
			include "readme.txt"
			include "license.txt"
			include "notice.txt"
1305
			into "${baseDir}"
P
Phillip Webb 已提交
1306
			expand(copyright: new Date().format("yyyy"), version: project.version)
1307 1308 1309 1310 1311 1312 1313 1314 1315 1316
		}

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

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

1317
		moduleProjects.each { subproject ->
1318 1319
			into ("${baseDir}/libs") {
				from subproject.jar
P
Phillip Webb 已提交
1320
				if (subproject.tasks.findByPath("sourcesJar")) {
1321 1322
					from subproject.sourcesJar
				}
P
Phillip Webb 已提交
1323
				if (subproject.tasks.findByPath("javadocJar")) {
1324 1325 1326 1327 1328 1329
					from subproject.javadocJar
				}
			}
		}
	}

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

		doLast() {
1373
			def gradleOpts = "-XX:MaxMetaspaceSize=1024m -Xmx1024m"
1374
			def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
P
Phillip Webb 已提交
1375
			File wrapperFile = file("gradlew")
1376 1377
			wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
				"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
P
Phillip Webb 已提交
1378
			File wrapperBatFile = file("gradlew.bat")
1379 1380 1381 1382
			wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
				"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
		}
	}
1383

1384
}
1385

S
Stephane Nicoll 已提交
1386
configure([project(':spring-build-src'), project(':spring-framework-bom')]) {
1387
	sonarqube {
S
Stephane Nicoll 已提交
1388 1389 1390 1391 1392
		skipProject = true
	}
}

configure(project(':spring-core')) {
1393 1394
	sonarqube {
		properties {
S
Stephane Nicoll 已提交
1395 1396 1397 1398 1399 1400
			property "sonar.exclusions",
					"src/main/java/org/springframework/cglib/**/*,src/main/java/org/springframework/asm/**/*"
		}
	}
}

1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411
/*
 * 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-")) {
1412
			return version.replace('BUILD', qualifier)
1413 1414
		}
	}
1415
	return version
1416
}