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

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

16 17
	ext.aspectjVersion    = "1.7.4"
	ext.groovyVersion     = "1.8.9"
18 19 20
	ext.hibernate3Version = "3.6.10.Final"
	ext.hibernate4Version = "4.2.8.Final"
	ext.hibValVersion     = "4.3.1.Final"
21
	ext.hsqldbVersion     = "2.3.1"
22 23 24 25
	ext.jackson1Version   = "1.9.13"
	ext.jackson2Version   = "2.3.1"
	ext.jettyVersion      = "9.1.1.v20140108"
	ext.jodaVersion       = "2.3"
26 27
	ext.junitVersion      = "4.11"
	ext.slf4jVersion      = "1.6.1"
S
Sam Brannen 已提交
28
	ext.xstreamVersion    = "1.4.6"
29

30
	ext.gradleScriptDir   = "${rootProject.projectDir}/gradle"
31

32
	apply plugin: "propdeps"
P
Phillip Webb 已提交
33
	apply plugin: "java"
34
	apply plugin: "test-source-set-dependencies"
35
	apply from: "${gradleScriptDir}/ide.gradle"
C
Chris Beams 已提交
36

P
Phillip Webb 已提交
37 38 39 40 41 42
	compileJava.options*.compilerArgs = [
		"-Xlint:serial", "-Xlint:varargs", "-Xlint:cast", "-Xlint:classfile",
		"-Xlint:dep-ann", "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally",
		"-Xlint:overrides", "-Xlint:path", "-Xlint:processing", "-Xlint:static",
		"-Xlint:try", "-Xlint:fallthrough", "-Xlint:rawtypes", "-Xlint:deprecation",
		"-Xlint:unchecked", "-Xlint:-options", "-Werror"
43
	]
C
Chris Beams 已提交
44

P
Phillip Webb 已提交
45 46 47 48 49 50 51
	compileTestJava.options*.compilerArgs = [
		"-Xlint:serial", "-Xlint:varargs", "-Xlint:cast", "-Xlint:classfile",
		"-Xlint:dep-ann", "-Xlint:divzero", "-Xlint:empty", "-Xlint:finally",
		"-Xlint:overrides", "-Xlint:path", "-Xlint:processing", "-Xlint:static",
		"-Xlint:try", "-Xlint:-fallthrough", "-Xlint:-rawtypes", "-Xlint:-deprecation",
		"-Xlint:-unchecked", "-Xlint:-options"]

52 53 54 55 56 57
	compileJava {
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

	compileTestJava {
J
Juergen Hoeller 已提交
58 59 60 61
		sourceCompatibility=1.7
		targetCompatibility=1.7
	}

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

C
Chris Beams 已提交
64 65
	test {
		systemProperty("java.awt.headless", "true")
66
		systemProperty("testGroups", project.properties.get("testGroups"))
67 68 69
		scanForTestClasses = false
		include '**/*Tests.*'
		exclude '**/*Abstract*.*'
C
Chris Beams 已提交
70
	}
C
Chris Beams 已提交
71

72
	repositories {
73 74
		maven { url "http://repo.spring.io/libs-release" }
		maven { url "http://repo.spring.io/milestone" }  // for AspectJ 1.8.0.M1
J
Juergen Hoeller 已提交
75
		maven { url "https://oss.sonatype.org/content/repositories/releases" }  // javax.cache
76
	}
C
Chris Beams 已提交
77

78
	dependencies {
79
		testCompile("junit:junit:${junitVersion}")
80
		testCompile("org.hamcrest:hamcrest-all:1.3")
81
		testCompile("org.mockito:mockito-core:1.9.5")
82
	}
C
Chris Beams 已提交
83 84

	ext.javadocLinks = [
P
Phillip Webb 已提交
85
		"http://docs.oracle.com/javase/7/docs/api/",
J
Juergen Hoeller 已提交
86 87 88 89
		"http://docs.oracle.com/javaee/6/api/",
		"http://docs.oracle.com/cd/E13222_01/wls/docs90/javadocs/", // CommonJ
		"http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.javadoc.doc/web/apidocs/",
		"http://glassfish.java.net/nonav/docs/v3/api/",
P
Phillip Webb 已提交
90 91
		"http://docs.jboss.org/jbossas/javadoc/4.0.5/connector/",
		"http://docs.jboss.org/jbossas/javadoc/7.1.2.Final/",
J
Juergen Hoeller 已提交
92 93 94 95 96
		"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/",
		"http://tiles.apache.org/framework/apidocs/",
P
Phillip Webb 已提交
97
		"http://aopalliance.sourceforge.net/doc/",
C
Chris Beams 已提交
98
		"http://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
J
Juergen Hoeller 已提交
99 100
		"http://ehcache.org/apidocs/",
		"http://quartz-scheduler.org/api/2.1.7/",
P
Phillip Webb 已提交
101
		"http://jackson.codehaus.org/1.9.4/javadoc/",
102 103
		"http://fasterxml.github.com/jackson-core/javadoc/2.3.0/",
		"http://fasterxml.github.com/jackson-databind/javadoc/2.3.0/",
P
Phillip Webb 已提交
104
		"http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs"
C
Chris Beams 已提交
105
	] as String[]
106 107
}

108
configure(subprojects - project(":spring-build-src")) { subproject ->
109
	apply plugin: "merge"
110 111 112
	apply from: "${gradleScriptDir}/publish-maven.gradle"

	jar {
P
Phillip Webb 已提交
113 114 115 116
		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
117 118 119 120 121

		from("${rootProject.projectDir}/src/dist") {
			include "license.txt"
			include "notice.txt"
			into "META-INF"
P
Phillip Webb 已提交
122
			expand(copyright: new Date().format("yyyy"), version: project.version)
123 124 125 126
		}
	}

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

129 130 131
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = project.name
C
Chris Beams 已提交
132
		options.links(project.ext.javadocLinks)
133
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
134 135 136 137 138

		// 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
139 140 141
	}

	task sourcesJar(type: Jar, dependsOn:classes) {
P
Phillip Webb 已提交
142
		classifier = "sources"
143
		from sourceSets.main.allJava.srcDirs
P
Phillip Webb 已提交
144
		include "**/*.java", "**/*.aj"
145 146 147
	}

	task javadocJar(type: Jar) {
P
Phillip Webb 已提交
148
		classifier = "javadoc"
149 150 151 152 153 154 155
		from javadoc
	}

	artifacts {
		archives sourcesJar
		archives javadocJar
	}
C
Chris Beams 已提交
156 157
}

158 159
project("spring-build-src") {
	description = "Exposes gradle buildSrc for IDE support"
160
	apply plugin: "groovy"
161 162 163

	dependencies {
		compile gradleApi()
R
Rob Winch 已提交
164
		compile localGroovy()
165 166 167 168 169
	}

	configurations.archives.artifacts.clear()
}

P
Phillip Webb 已提交
170 171
project("spring-core") {
	description = "Spring Core"
172

173 174
	// As of Spring 4.0, spring-core includes asm 4.2 and repackages cglib 3.1, inlining
	// both into the spring-core jar. cglib 3.1 itself depends on asm 4, and is therefore
175
	// further transformed by the JarJar task to depend on org.springframework.asm; this
176
	// avoids including two different copies of asm unnecessarily.
177 178
	def cglibVersion = "3.1"
	def objenesisVersion = "2.1"
179 180 181 182

	configurations {
		jarjar
		cglib
183
		objenesis
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
	}

	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 已提交
199 200
					rule(pattern: "net.sf.cglib.**", result: "org.springframework.cglib.@1")
					// as mentioned above, transform cglib"s internal asm dependencies from
201 202
					// 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 已提交
203
					rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
204 205 206 207 208
				}
			}
		}
	}

209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
	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")
				}
			}
		}
	}

228
	dependencies {
229
		cglib("cglib:cglib:${cglibVersion}@jar")
230
		objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
231
		jarjar("com.googlecode.jarjar:jarjar:1.3")
232

P
Phillip Webb 已提交
233
		compile(files(cglibRepackJar))
234
		compile("commons-logging:commons-logging:1.1.1")
235
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
236
		optional("net.sf.jopt-simple:jopt-simple:4.4")
237
		optional("log4j:log4j:1.2.17")
P
Phillip Webb 已提交
238
		testCompile("xmlunit:xmlunit:1.3")
P
Phillip Webb 已提交
239 240 241
		testCompile("org.codehaus.woodstox:wstx-asl:3.2.7") {
			exclude group: "stax", module: "stax-api"
		}
242 243 244
	}

	jar {
245
		// inline repackaged cglib classes directly into the spring-core jar
246 247
		dependsOn cglibRepackJar
		from(zipTree(cglibRepackJar.archivePath)) {
P
Phillip Webb 已提交
248
			include "org/springframework/cglib/**"
249
		}
250 251 252 253 254

		dependsOn objenesisRepackJar
		from(zipTree(objenesisRepackJar.archivePath)) {
			include "org/springframework/objenesis/**"
		}
255
	}
J
Juergen Hoeller 已提交
256 257 258 259 260 261

	compileTestJava {
		sourceCompatibility=1.8
		targetCompatibility=1.8
		compileTestJava.options.compilerArgs += "-parameters"
	}
C
Chris Beams 已提交
262 263
}

P
Phillip Webb 已提交
264 265
project("spring-beans") {
	description = "Spring Beans"
266

267
	dependencies {
268 269
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
270
		provided("javax.el:javax.el-api:2.2.4")
271 272
		provided("javax.inject:javax.inject:1")
		testCompile("log4j:log4j:1.2.17")
273
	}
C
Chris Beams 已提交
274 275
}

J
Juergen Hoeller 已提交
276 277 278
project('spring-beans-groovy') {
	description 'Groovy Bean Definitions'
	merge.into = project(":spring-beans")
279
	apply plugin: "groovy"
J
Juergen Hoeller 已提交
280 281 282

	dependencies {
		compile(project(":spring-core"))
283
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
J
Juergen Hoeller 已提交
284 285 286 287 288 289 290 291 292 293 294
	}

	// this module's Java and Groovy sources need to be compiled together
	compileJava.enabled=false
	sourceSets {
		main {
			groovy {
				srcDir 'src/main/java'
			}
		}
	}
295 296 297 298 299

	compileGroovy {
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}
J
Juergen Hoeller 已提交
300 301
}

P
Phillip Webb 已提交
302 303
project("spring-aop") {
	description = "Spring AOP"
304

305
	dependencies {
306
		compile(project(":spring-beans"))
307 308
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
309
		compile(files(project(":spring-core").objenesisRepackJar))
310
		compile("aopalliance:aopalliance:1.0")
311
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
312 313
		optional("commons-pool:commons-pool:1.5.3")
		optional("com.jamonapi:jamon:2.4")
314
	}
C
Chris Beams 已提交
315 316
}

P
Phillip Webb 已提交
317 318
project("spring-expression") {
	description = "Spring Expression Language (SpEL)"
319

320
	dependencies {
321
		compile(project(":spring-core"))
322
	}
C
Chris Beams 已提交
323 324
}

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

328
	jar {
P
Phillip Webb 已提交
329 330
		manifest.attributes["Premain-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
331 332
		manifest.attributes["Agent-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
333 334 335
		manifest.attributes["Can-Redefine-Classes"] = "true"
		manifest.attributes["Can-Retransform-Classes"] = "true"
		manifest.attributes["Can-Set-Native-Method-Prefix"] = "false"
336
	}
C
Chris Beams 已提交
337 338
}

P
Phillip Webb 已提交
339 340
project("spring-instrument-tomcat") {
	description = "Spring Instrument Tomcat"
341

342
	dependencies {
343
		provided("org.apache.tomcat:catalina:6.0.16")
344
	}
C
Chris Beams 已提交
345 346
}

P
Phillip Webb 已提交
347 348
project("spring-context") {
	description = "Spring Context"
349
	apply plugin: "groovy"
350

351
	dependencies {
352 353 354 355 356
		compile(project(":spring-aop"))
		compile(project(":spring-beans"))
		compile(project(":spring-expression"))
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
357
		optional(project(":spring-instrument"))
358
		optional("javax.inject:javax.inject:1")
359
		optional("javax.ejb:ejb-api:3.0")
360
		optional("javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0")
361
		optional("org.eclipse.persistence:javax.persistence:2.0.0")
362 363 364 365
		optional("javax.validation:validation-api:1.0.0.GA")
		optional("org.hibernate:hibernate-validator:${hibValVersion}")
		optional("joda-time:joda-time:${jodaVersion}")
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
J
Juergen Hoeller 已提交
366
		optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
367
		optional("org.beanshell:bsh:2.0b4")
368
		optional("org.jruby:jruby:1.7.2")
369
		optional("org.slf4j:slf4j-api:${slf4jVersion}")
370
		testCompile("commons-dbcp:commons-dbcp:1.2.2")
371
		testCompile("javax.inject:javax.inject-tck:1")
372 373
	}

374 375 376
	// pick up RmiInvocationWrapperRTD.xml in src/main
	sourceSets.main.resources.srcDirs += "src/main/java"

377
	test {
P
Phillip Webb 已提交
378
		jvmArgs = ["-disableassertions:org.aspectj.weaver.UnresolvedType"] // SPR-7989
379
	}
380 381 382 383 384 385 386 387 388
}

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

	dependencies {
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
		compile(project(":spring-context"))
R
Rossen Stoyanchev 已提交
389 390
		optional("org.projectreactor:reactor-core:1.0.0.RELEASE")
		optional("org.projectreactor:reactor-tcp:1.0.0.RELEASE")
B
Brian Clozel 已提交
391
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
392 393
			exclude group: "javax.servlet", module: "javax.servlet-api"
		}
B
Brian Clozel 已提交
394
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
395
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
396
		testCompile(project(":spring-test"))
397
		testCompile("javax.inject:javax.inject-tck:1")
398
		testCompile("javax.servlet:javax.servlet-api:3.1.0")
399
		testCompile("javax.validation:validation-api:1.0.0.GA")
400
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
401 402 403 404 405
		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 已提交
406
		testCompile("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
407
			exclude group: "javax.servlet", module: "javax.servlet-api"
408
		}
409 410
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:8.0.0-RC10")
		testCompile("org.apache.tomcat.embed:tomcat-embed-logging-juli:8.0.0-RC10")
411 412
		testCompile("commons-dbcp:commons-dbcp:1.2.2")
		testCompile("log4j:log4j:1.2.17")
413
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
414
	}
C
Chris Beams 已提交
415 416
}

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

420
	dependencies {
421 422
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
423
		provided("com.ibm.websphere:uow:6.0.2.17")
424 425 426
		optional(project(":spring-aop"))
		optional(project(":spring-context")) // for JCA, @EnableTransactionManagement
		optional("aopalliance:aopalliance:1.0")
427
		optional("javax.transaction:javax.transaction-api:1.2")
428
		optional("javax.resource:connector-api:1.5")
429 430
		optional("javax.ejb:ejb-api:3.0")
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
431
		testCompile("org.eclipse.persistence:javax.persistence:2.0.0")
432
	}
C
Chris Beams 已提交
433 434
}

P
Phillip Webb 已提交
435 436 437
project("spring-oxm") {
	description = "Spring Object/XML Marshalling"
	apply from: "oxm.gradle"
438

P
Phillip Webb 已提交
439 440 441 442
	// The following is a work-around until the Gradle build uses
	// Ant 1.9.x by default. This is necessary to avoid the genCastor
	// "Class not found: javac1.8" issue with Ant versions prior to 1.9.x
	ant.properties["build.compiler"] = "javac1.7"
J
Juergen Hoeller 已提交
443

P
Phillip Webb 已提交
444
	compileTestJava {
445 446 447 448 449 450
		// necessary to avoid java.lang.VerifyError on jibx compilation
		// see http://jira.codehaus.org/browse/JIBX-465
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

451
	dependencies {
452 453
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
454
		optional("com.thoughtworks.xstream:xstream:${xstreamVersion}")
455 456
		optional("org.jibx:jibx-run:1.2.5")
		optional("org.apache.xmlbeans:xmlbeans:2.6.0")
457
		optional("org.codehaus.castor:castor-xml:1.3.2")
458
		testCompile(project(":spring-context"))
459
		testCompile("org.codehaus.jettison:jettison:1.0.1")
P
Phillip Webb 已提交
460
		testCompile("xmlunit:xmlunit:1.3")
461
		testCompile("xmlpull:xmlpull:1.1.3.4a")
462 463 464 465
		testCompile(files(genCastor.classesDir).builtBy(genCastor))
		testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
		testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
	}
C
Chris Beams 已提交
466 467
}

P
Phillip Webb 已提交
468 469
project("spring-jms") {
	description = "Spring JMS"
470

471
	dependencies {
472 473 474 475 476
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-aop"))
		compile(project(":spring-context"))
		compile(project(":spring-tx"))
477
		provided("org.apache.geronimo.specs:geronimo-jms_1.1_spec:1.1")
478 479
		optional(project(":spring-oxm"))
		optional("aopalliance:aopalliance:1.0")
480 481
		optional("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1")
		optional("javax.resource:connector-api:1.5")
482 483
		optional("org.codehaus.jackson:jackson-mapper-asl:${jackson1Version}")
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
484
	}
C
Chris Beams 已提交
485 486
}

P
Phillip Webb 已提交
487 488
project("spring-jdbc") {
	description = "Spring JDBC"
489

490
	dependencies {
491
		compile(project(":spring-beans"))
492
		compile(project(":spring-core"))
493
		compile(project(":spring-tx"))
494 495
		optional(project(":spring-context")) // for JndiDataSourceLookup
		optional("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1")
496
		optional("c3p0:c3p0:0.9.1.2")
P
Phillip Webb 已提交
497
		optional("org.hsqldb:hsqldb:${hsqldbVersion}")
498
		optional("com.h2database:h2:1.0.71")
499 500
		optional("org.apache.derby:derby:10.10.1.1")
		optional("org.apache.derby:derbyclient:10.10.1.1")
501
	}
C
Chris Beams 已提交
502 503
}

P
Phillip Webb 已提交
504 505
project("spring-context-support") {
	description = "Spring Context Support"
506

507
	dependencies {
508 509 510
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
511 512
		optional(project(":spring-jdbc")) // for Quartz support
		optional(project(":spring-tx")) // for Quartz support
513
		optional("javax.mail:mail:1.4.7")
J
Juergen Hoeller 已提交
514
		optional("javax.cache:cache-api:1.0.0-RC1")
515
		optional("com.google.guava:guava:16.0")
516 517
		optional("net.sf.ehcache:ehcache-core:2.6.5")
		optional("org.quartz-scheduler:quartz:1.8.6") {
518 519
			exclude group: "org.slf4j", module: "slf4j-log4j12"
		}
520
		optional("org.codehaus.fabric3.api:commonj:1.1.0")
521
		optional("org.apache.velocity:velocity:1.7")
522
		optional("org.freemarker:freemarker:2.3.20")
523
		optional("com.lowagie:itext:2.1.7")
524
		optional("net.sf.jasperreports:jasperreports:5.5.0")
525
		optional("org.slf4j:slf4j-api:${slf4jVersion}")
526
		testCompile("org.apache.poi:poi:3.9")
527 528
		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 已提交
529
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
530 531 532
	}

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

P
Phillip Webb 已提交
536 537
project("spring-web") {
	description = "Spring Web"
538

539
	dependencies {
540
		compile(project(":spring-aop")) // for JaxWsPortProxyFactoryBean
541
		compile(project(":spring-beans")) // for MultiPartFilter
542
		compile(project(":spring-context"))
543
		compile(project(":spring-core"))
544
		provided("javax.el:javax.el-api:2.2.4")
545
		provided("javax.faces:javax.faces-api:2.2")
546 547 548
		provided("javax.portlet:portlet-api:2.0")
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.servlet.jsp:jsp-api:2.1")
549 550
		optional(project(":spring-oxm")) // for MarshallingHttpMessageConverter
		optional("aopalliance:aopalliance:1.0")
551
		optional("com.caucho:hessian:4.0.7")
552
		optional("commons-fileupload:commons-fileupload:1.3")
553 554
		optional("org.apache.httpcomponents:httpclient:4.3.1")
		optional("org.apache.httpcomponents:httpasyncclient:4.0")
555 556 557
		optional("org.codehaus.jackson:jackson-mapper-asl:${jackson1Version}")
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
		optional("rome:rome:1.0")
558
		optional("taglibs:standard:1.1.2")
B
Brian Clozel 已提交
559
		optional("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
560
			exclude group: "javax.servlet", module: "javax.servlet-api"
561
		}
B
Brian Clozel 已提交
562
		optional("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
563
			exclude group: "javax.servlet", module: "javax.servlet-api"
564
		}
565
		optional("log4j:log4j:1.2.17")
566
		testCompile(project(":spring-context-support"))  // for JafMediaTypeFactory
P
Phillip Webb 已提交
567
		testCompile("xmlunit:xmlunit:1.3")
568 569
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
		testCompile("log4j:log4j:1.2.17")
570 571 572
	}

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

576
project("spring-websocket") {
577
	description = "Spring WebSocket"
578 579 580 581 582

	dependencies {
		compile(project(":spring-core"))
		compile(project(":spring-context"))
		compile(project(":spring-web"))
583
		optional(project(":spring-messaging"))
584
		optional(project(":spring-webmvc"))
585
		optional("javax.servlet:javax.servlet-api:3.1.0")
586
		optional("javax.websocket:javax.websocket-api:1.0")
587
		optional("org.apache.tomcat:tomcat-websocket:8.0.0-RC10") {
588 589 590
			exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
			exclude group: "org.apache.tomcat", module: "tomcat-servlet-api"
		}
591 592
		optional("org.glassfish.tyrus:tyrus-websocket-core:1.2.1")
		optional("org.glassfish.tyrus:tyrus-container-servlet:1.2.1")
B
Brian Clozel 已提交
593
		optional("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
B
Brian Clozel 已提交
594 595
			exclude group: "javax.servlet", module: "javax.servlet"
		}
B
Brian Clozel 已提交
596
		optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
B
Brian Clozel 已提交
597
			exclude group: "javax.servlet", module: "javax.servlet"
598
		}
B
Brian Clozel 已提交
599
		optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
600 601 602 603 604 605 606
		optional("io.undertow:undertow-core:1.0.0.Beta31")
		optional("io.undertow:undertow-servlet:1.0.0.Beta31") {
			exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_3.1_spec"
		}
		optional("io.undertow:undertow-websockets-jsr:1.0.0.Beta31") {
			exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.0_spec"
		}
607
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
608
		testCompile("org.apache.tomcat.embed:tomcat-embed-core:8.0.0-RC10")
609 610
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
		testCompile("log4j:log4j:1.2.17")
611 612
		testCompile("org.projectreactor:reactor-core:1.0.0.RELEASE")
		testCompile("org.projectreactor:reactor-tcp:1.0.0.RELEASE")
613 614 615
	}
}

P
Phillip Webb 已提交
616 617
project("spring-orm") {
	description = "Spring Object/Relational Mapping"
618

619
	dependencies {
620 621 622 623 624 625 626 627 628
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
		compile(project(":spring-jdbc"))
		compile(project(":spring-tx"))
		provided("javax.servlet:javax.servlet-api:3.0.1")
		optional(project(":spring-aop"))
		optional(project(":spring-context"))
		optional(project(":spring-web"))
		optional("aopalliance:aopalliance:1.0")
629 630 631
		optional("org.eclipse.persistence:javax.persistence:2.0.0")
		optional("org.eclipse.persistence:org.eclipse.persistence.core:2.4.0")
		optional("org.eclipse.persistence:org.eclipse.persistence.jpa:2.4.0")
632 633
		optional("org.hibernate:hibernate-core:${hibernate3Version}")
		optional("org.hibernate:hibernate-entitymanager:${hibernate3Version}")
634
		optional("org.apache.openjpa:openjpa:2.2.1")
635
		optional("javax.jdo:jdo-api:3.0")
636
		testCompile("commons-dbcp:commons-dbcp:1.2.2")
P
Phillip Webb 已提交
637
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
638
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
639
	}
C
Chris Beams 已提交
640 641
}

P
Phillip Webb 已提交
642 643
project("spring-orm-hibernate4") {
	description = "Spring Object/Relational Mapping - Hibernate 4 support"
644
	merge.into = project(":spring-orm")
645

646
	dependencies {
647 648
		provided(project(":spring-tx"))
		provided(project(":spring-jdbc"))
649
		optional(project(":spring-web"))
650 651
		optional("org.hibernate:hibernate-core:${hibernate4Version}")
		optional("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
652
		optional("javax.servlet:javax.servlet-api:3.0.1")
653
	}
654 655
}

P
Phillip Webb 已提交
656 657
project("spring-webmvc") {
	description = "Spring Web MVC"
658

659
	dependencies {
660 661
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
662
		compile(project(":spring-core"))
663
		compile(files(project(":spring-core").objenesisRepackJar))
664 665
		compile(project(":spring-expression"))
		compile(project(":spring-web"))
666 667 668
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.servlet.jsp:jsp-api:2.1")
		provided("javax.servlet:jstl:1.2")
669 670
		optional(project(":spring-context-support")) // for Velocity support
		optional(project(":spring-oxm")) // for MarshallingView
671
		optional("net.sourceforge.jexcelapi:jxl:2.6.12")
672
		optional("org.apache.poi:poi:3.9")
673 674
		optional("org.apache.velocity:velocity:1.7")
		optional("velocity-tools:velocity-tools-view:1.4")
675
		optional("org.freemarker:freemarker:2.3.20")
676 677 678 679 680 681 682
		optional("com.lowagie:itext:2.1.7")
		optional("net.sf.jasperreports:jasperreports:5.5.0") {
			exclude group: "xml-apis", module: "xml-apis"
		}
		optional("org.codehaus.jackson:jackson-mapper-asl:${jackson1Version}")
		optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
		optional("rome:rome:1.0")
683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699
		optional("org.apache.tiles:tiles-api:2.2.2")
		optional("org.apache.tiles:tiles-core:2.2.2") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-servlet:2.2.2") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-jsp:2.2.2") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-el:2.2.2") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		optional("org.apache.tiles:tiles-extras:2.2.2") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
			exclude group: "org.springframework", module: "spring-web"
		}
700 701 702
		testCompile(project(":spring-aop"))
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
		testCompile("rhino:js:1.7R1")
P
Phillip Webb 已提交
703
		testCompile("xmlunit:xmlunit:1.3")
704
		testCompile("dom4j:dom4j:1.6.1") {
P
Phillip Webb 已提交
705
			exclude group: "xml-apis", module: "xml-apis"
706 707
		}
		testCompile("jaxen:jaxen:1.1.1") {
P
Phillip Webb 已提交
708 709 710
			exclude group: "xml-apis", module: "xml-apis"
			exclude group: "xom", module: "xom"
			exclude group: "xerces", module: "xercesImpl"
711
		}
B
Brian Clozel 已提交
712
		testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
B
Brian Clozel 已提交
713
			exclude group: "javax.servlet", module: "javax.servlet"
714
		}
B
Brian Clozel 已提交
715
		testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") {
B
Brian Clozel 已提交
716
			exclude group: "javax.servlet", module: "javax.servlet"
717 718
		}
		testCompile("javax.validation:validation-api:1.0.0.GA")
719 720
		testCompile("org.hibernate:hibernate-validator:${hibValVersion}")
		testCompile("org.apache.httpcomponents:httpclient:4.3.1")
721
		testCompile("commons-fileupload:commons-fileupload:1.3")
722
		testCompile("commons-io:commons-io:1.3")
723
		testCompile("joda-time:joda-time:${jodaVersion}")
724 725 726
	}

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

P
Phillip Webb 已提交
730 731
project("spring-webmvc-tiles3") {
	description = "Spring Framework Tiles3 Integration"
732
	merge.into = project(":spring-webmvc")
733

734
	dependencies {
735 736
		provided(project(":spring-context"))
		provided(project(":spring-web"))
737
		provided("javax.el:javax.el-api:2.2.4")
738
		provided("javax.servlet:javax.servlet-api:3.0.1")
739
		provided("javax.servlet.jsp:jsp-api:2.1")
740
		provided("javax.servlet:jstl:1.2")
741 742 743
		optional("org.apache.tiles:tiles-request-api:1.0.1")
		optional("org.apache.tiles:tiles-api:3.0.1")
		optional("org.apache.tiles:tiles-core:3.0.1") {
P
Phillip Webb 已提交
744
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
745
		}
746
		optional("org.apache.tiles:tiles-servlet:3.0.1") {
P
Phillip Webb 已提交
747
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
748
		}
749
		optional("org.apache.tiles:tiles-jsp:3.0.1") {
P
Phillip Webb 已提交
750
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
751
		}
752
		optional("org.apache.tiles:tiles-el:3.0.1") {
753
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
754
		}
755
		optional("org.apache.tiles:tiles-extras:3.0.1") {
P
Phillip Webb 已提交
756
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
757
			exclude group: "org.springframework", module: "spring-web"
758
		}
759
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
760
	}
761 762
}

P
Phillip Webb 已提交
763 764
project("spring-webmvc-portlet") {
	description = "Spring Web Portlet"
765

766
	dependencies {
767 768
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
769
		compile(project(":spring-core"))
770 771
		compile(project(":spring-web"))
		compile(project(":spring-webmvc"))
772 773
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.portlet:portlet-api:2.0")
774
		optional("commons-fileupload:commons-fileupload:1.3")
775 776 777
	}

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

P
Phillip Webb 已提交
781 782
project("spring-test") {
	description = "Spring TestContext Framework"
783

784
	dependencies {
785
		compile(project(":spring-core"))
786 787
		provided("javax.inject:javax.inject:1")
		provided("javax.servlet:jstl:1.2")
788 789 790 791 792 793 794
		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 已提交
795
		optional(project(":spring-webmvc-portlet"))
796
		optional("junit:junit:${junitVersion}")
797
		optional("org.testng:testng:6.8.7")
798
		optional("javax.portlet:portlet-api:2.0")
799
		optional("javax.servlet:javax.servlet-api:3.0.1")
800
		optional("javax.servlet.jsp:jsp-api:2.1")
801
		optional("org.eclipse.persistence:javax.persistence:2.0.0")
802
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
803 804 805 806 807 808
		optional("org.hamcrest:hamcrest-core:1.3")
		optional("com.jayway.jsonpath:json-path:0.9.0")
		optional("xmlunit:xmlunit:1.3")
		testCompile(project(":spring-context-support"))
		testCompile(project(":spring-oxm"))
		testCompile(project(":spring-webmvc-tiles3"))
809
		testCompile("javax.mail:mail:1.4.7")
810
		testCompile("javax.ejb:ejb-api:3.0")
811
		testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
P
Phillip Webb 已提交
812
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
813 814 815
		testCompile("org.hibernate:hibernate-core:${hibernate3Version}")
		testCompile("org.hibernate:hibernate-entitymanager:${hibernate3Version}")
		testCompile("org.hibernate:hibernate-validator:${hibValVersion}")
816
		testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
817 818
		testCompile("org.codehaus.jackson:jackson-mapper-asl:${jackson1Version}")
		testCompile("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
819 820 821 822 823 824 825 826 827
		testCompile("rome:rome:1.0")
		testCompile("org.apache.tiles:tiles-request-api:1.0.1")
		testCompile("org.apache.tiles:tiles-api:3.0.1")
		testCompile("org.apache.tiles:tiles-core:3.0.1") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
		testCompile("org.apache.tiles:tiles-servlet:3.0.1") {
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
		}
828
	}
829 830 831

	task testNG(type: Test) {
		useTestNG()
832
		// forkEvery 1
833
		scanForTestClasses = false
834
		include "**/testng/**/*.*"
835 836 837 838
		exclude "**/FailingBeforeAndAfterMethodsTests.class"
		// "TestCase" classes are run by other test classes, not the build.
		exclude "**/*TestCase.class"
		// Generate TestNG reports alongside JUnit reports.
839
		getReports().getHtml().setEnabled(true)
840 841
		// show standard out and standard error of the test JVM(s) on the console
		// testLogging.showStandardStreams = true
842 843 844 845 846
	}

	test {
		dependsOn testNG
		useJUnit()
847 848
		exclude "**/testng/**/*.*"
		include "**/testng/FailingBeforeAndAfterMethodsTests"
849 850 851
		// "TestCase" classes are run by other test classes, not the build.
		exclude(["**/*TestCase.class", "**/*TestSuite.class"])
	}
C
Chris Beams 已提交
852 853
}

P
Phillip Webb 已提交
854 855 856
project("spring-aspects") {
	description = "Spring Aspects"
	apply from: "aspects.gradle"
857

858
	dependencies {
859
		aspects(project(":spring-orm"))
860 861 862
		ajc("org.aspectj:aspectjtools:1.8.0.M1") // needed for ajc on JDK 8 only
		rt("org.aspectj:aspectjrt:1.8.0.M1") // needed for ajc on JDK 8 only
		compile("org.aspectj:aspectjweaver:${aspectjVersion}") // exposing regular AspectJ version to users
863 864 865 866 867 868 869
		provided("org.eclipse.persistence:javax.persistence:2.0.0")
		optional(project(":spring-aop")) // for @Async support
		optional(project(":spring-beans")) // for @Configurable support
		optional(project(":spring-context")) // for @Enable* support
		optional(project(":spring-context-support")) // for JavaMail support
		optional(project(":spring-orm")) // for JPA exception translation support
		optional(project(":spring-tx")) // for JPA, @Transactional support
870 871
		testCompile(project(":spring-core")) // for CodeStyleAspect
		testCompile(project(":spring-test"))
872
		testCompile("javax.mail:mail:1.4.7")
873
	}
874

875
	eclipse.project {
P
Phillip Webb 已提交
876
		natures += "org.eclipse.ajdt.ui.ajnature"
877
		buildCommands = [new org.gradle.plugins.ide.eclipse.model.
P
Phillip Webb 已提交
878
				BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
879
	}
C
Chris Beams 已提交
880 881
}

882 883 884 885 886 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
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)
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

917
configure(rootProject) {
P
Phillip Webb 已提交
918
	description = "Spring Framework"
919

P
Phillip Webb 已提交
920
	apply plugin: "asciidoctor"
921
	apply plugin: "docbook-reference"
922
	apply plugin: "groovy"
R
Rob Winch 已提交
923

924
	// apply plugin: "detect-split-packages"
925 926
	apply from: "${gradleScriptDir}/jdiff.gradle"

R
Rob Winch 已提交
927
	asciidoctor {
928 929
		baseDir = project.file('src/asciidoc')
		backend = 'docbook5'
R
Rob Winch 已提交
930
		options = [
931 932 933 934 935 936 937
			eruby: 'erubis',
			attributes: [
				doctype: 'book',
				'spring-version' : project.version,
				revnumber : project.version,
				docinfo : ""
			]
R
Rob Winch 已提交
938
		]
939 940
	}

941 942 943 944 945 946 947 948 949 950
	reference {
		sourceDir = asciidoctor.outputDir
		pdfFilename = "spring-framework-reference.pdf"
		expandPlaceholders = ""
	}

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

951 952 953 954 955
	// 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")
	// }
956

C
Chris Beams 已提交
957
	// don't publish the default jar for the root project
958 959 960
	configurations.archives.artifacts.clear()

	dependencies { // for integration tests
961 962 963 964 965 966 967 968 969 970
		testCompile(project(":spring-core"))
		testCompile(project(":spring-beans"))
		testCompile(project(":spring-aop"))
		testCompile(project(":spring-expression"))
		testCompile(project(":spring-context"))
		testCompile(project(":spring-tx"))
		testCompile(project(":spring-jdbc"))
		testCompile(project(":spring-test"))
		testCompile(project(":spring-web"))
		testCompile(project(":spring-webmvc-portlet"))
971
		testCompile(project(":spring-orm"))
J
Juergen Hoeller 已提交
972
		testCompile("org.hibernate:hibernate-core:4.2.2.Final")
973
		testCompile("javax.servlet:javax.servlet-api:3.0.1")
974 975 976 977
		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}")
P
Phillip Webb 已提交
978
		testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
979 980 981
	}

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

986 987 988 989 990
		dependsOn {
			subprojects.collect {
				it.tasks.getByName("jar")
			}
		}
991 992 993
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = rootProject.description
P
Phillip Webb 已提交
994
		options.overview = "src/api/overview.html"
995
		options.stylesheetFile = file("src/api/stylesheet.css")
996
		options.splitIndex = true
C
Chris Beams 已提交
997
		options.links(project.ext.javadocLinks)
998
		options.addStringOption('Xdoclint:none', '-quiet')
C
Chris Beams 已提交
999

1000 1001 1002
		source subprojects.collect { project ->
			project.sourceSets.main.allJava
		}
C
Chris Beams 已提交
1003

P
Phillip Webb 已提交
1004
		maxMemory = "1024m"
C
Chris Beams 已提交
1005
		destinationDir = new File(buildDir, "api")
1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017

		doFirst {
			classpath = files(
				// ensure servlet 3.x and Hibernate 4.x have precedence on the Javadoc
				// 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 })
		}
1018 1019
	}

1020
	task docsZip(type: Zip, dependsOn: 'reference') {
P
Phillip Webb 已提交
1021 1022 1023
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "docs"
1024 1025 1026
		description = "Builds -${classifier} archive containing api and reference " +
			"for deployment at http://static.springframework.org/spring-framework/docs."

P
Phillip Webb 已提交
1027 1028
		from("src/dist") {
			include "changelog.txt"
1029 1030 1031
		}

		from (api) {
1032
			into "javadoc-api"
1033 1034
		}

1035 1036
		from (reference) {
			into "spring-framework-reference"
1037 1038 1039 1040
		}
	}

	task schemaZip(type: Zip) {
P
Phillip Webb 已提交
1041 1042 1043
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "schema"
1044 1045 1046 1047 1048 1049 1050
		description = "Builds -${classifier} archive containing all " +
			"XSDs for deployment at http://springframework.org/schema."

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

			subproject.sourceSets.main.resources.find {
P
Phillip Webb 已提交
1051
				it.path.endsWith("META-INF/spring.schemas")
1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068
			}?.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 已提交
1069 1070 1071
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist"
1072 1073 1074 1075 1076
		description = "Builds -${classifier} archive, containing all jars and docs, " +
					"suitable for community download page."

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

P
Phillip Webb 已提交
1077 1078 1079 1080
		from("src/dist") {
			include "readme.txt"
			include "license.txt"
			include "notice.txt"
1081
			into "${baseDir}"
P
Phillip Webb 已提交
1082
			expand(copyright: new Date().format("yyyy"), version: project.version)
1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095
		}

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

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

		subprojects.each { subproject ->
			into ("${baseDir}/libs") {
				from subproject.jar
P
Phillip Webb 已提交
1096
				if (subproject.tasks.findByPath("sourcesJar")) {
1097 1098
					from subproject.sourcesJar
				}
P
Phillip Webb 已提交
1099
				if (subproject.tasks.findByPath("javadocJar")) {
1100 1101 1102 1103 1104 1105 1106 1107 1108
					from subproject.javadocJar
				}
			}
		}
	}

	// Create an distribution that contains all dependencies (required and optional).
	// Not published by default; only for use when building from source.
	task depsZip(type: Zip, dependsOn: distZip) { zipTask ->
P
Phillip Webb 已提交
1109 1110 1111
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist-with-deps"
1112 1113 1114 1115 1116 1117 1118 1119 1120 1121
		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 ->
1122 1123
					(subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts +
					subproject.configurations.optional.resolvedConfiguration.resolvedArtifacts).each { artifact ->
1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144
						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 已提交
1145
		description = "Generates gradlew[.bat] scripts"
P
Phillip Webb 已提交
1146
		gradleVersion = "1.9"
1147 1148

		doLast() {
1149
			def gradleOpts = "-XX:MaxMetaspaceSize=1024m -Xmx1024m"
1150
			def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
P
Phillip Webb 已提交
1151
			File wrapperFile = file("gradlew")
1152 1153
			wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
				"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
P
Phillip Webb 已提交
1154
			File wrapperBatFile = file("gradlew.bat")
1155 1156 1157 1158
			wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
				"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
		}
	}
1159

1160
}
1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172

/*
 * 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-")) {
1173
			return version.replace('BUILD', qualifier)
1174 1175
		}
	}
1176
	return version
1177
}