build.gradle 31.9 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.1")
7
		classpath("org.springframework.build.gradle:docbook-reference-plugin:0.2.4")
8
	}
9 10
}

C
Chris Beams 已提交
11
configure(allprojects) { project ->
C
Chris Beams 已提交
12
	ext.aspectjVersion  = "1.7.1"
P
Phillip Webb 已提交
13 14 15 16
	ext.easymockVersion = "2.5.2"
	ext.hsqldbVersion   = "1.8.0.10"
	ext.junitVersion    = "4.11"
	ext.slf4jVersion    = "1.6.1"
17
	ext.gradleScriptDir = "${rootProject.projectDir}/gradle"
18

19 20 21 22 23 24 25 26
	if (rootProject.hasProperty("VERSION_QUALIFIER")) {
		def qualifier = rootProject.getProperty("VERSION_QUALIFIER")
		if (qualifier.startsWith("SPR-")) { // topic branch, e.g. SPR-1234
			// replace 3.2.0.BUILD-SNAPSHOT for 3.2.0.SPR-1234-SNAPSHOT
			version = version.replace('BUILD', qualifier)
		}
	}

27
	apply plugin: "propdeps"
P
Phillip Webb 已提交
28
	apply plugin: "java"
29 30
	apply plugin: "propdeps-eclipse"
	apply plugin: "propdeps-idea"
31
	apply plugin: "test-source-set-dependencies"
32
	apply from: "${gradleScriptDir}/ide.gradle"
C
Chris Beams 已提交
33

P
Phillip Webb 已提交
34
	group = "org.springframework"
35

36 37 38 39 40 41 42 43
	compileJava {
		sourceCompatibility=1.5
		targetCompatibility=1.5
	}
	compileTestJava {
		sourceCompatibility=1.7
		targetCompatibility=1.7
	}
C
Chris Beams 已提交
44

45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
	[compileJava, 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:-options",     // intentionally disabled
		"-Xlint:-fallthrough", // intentionally disabled
		"-Xlint:-rawtypes",    // TODO enable and fix warnings
		"-Xlint:-deprecation", // TODO enable and fix warnings
		"-Xlint:-unchecked"    // TODO enable and fix warnings
	]
C
Chris Beams 已提交
65

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

C
Chris Beams 已提交
68 69 70 71
	test {
		systemProperty("java.awt.headless", "true")
		systemProperty("testGroups", properties.get("testGroups"))
	}
C
Chris Beams 已提交
72

73 74 75
	repositories {
		maven { url "http://repo.springsource.org/libs-release" }
	}
C
Chris Beams 已提交
76

77
	dependencies {
78
		testCompile("junit:junit:${junitVersion}")
79
		testCompile("org.hamcrest:hamcrest-all:1.3")
80
		testCompile("org.mockito:mockito-core:1.9.5")
C
Chris Beams 已提交
81 82 83 84 85 86 87
		if (project.name in ["spring", "spring-jms", "spring-orm",
				"spring-orm-hibernate4", "spring-oxm", "spring-struts",
				"spring-test", "spring-test-mvc", "spring-tx", "spring-web",
				"spring-webmvc", "spring-webmvc-portlet", "spring-webmvc-tiles3"]) {
			testCompile("org.easymock:easymock:${easymockVersion}")
			testCompile "org.easymock:easymockclassextension:${easymockVersion}"
		}
88
	}
C
Chris Beams 已提交
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110

	ext.javadocLinks = [
		"http://docs.oracle.com/javase/6/docs/api",
		"http://docs.oracle.com/javaee/6/api",
		"http://portals.apache.org/pluto/portlet-2.0-apidocs/",
		"http://commons.apache.org/lang/api-2.5",
		"http://commons.apache.org/codec/apidocs",
		"http://docs.jboss.org/jbossas/javadoc/4.0.5/connector",
		"http://docs.jboss.org/jbossas/javadoc/7.1.2.Final",
		"http://aopalliance.sourceforge.net/doc",
		"http://glassfish.java.net/nonav/docs/v3/api",
		"http://docs.oracle.com/cd/E13222_01/wls/docs90/javadocs", // commonj
		"http://quartz-scheduler.org/api/2.1.5",
		"http://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
		"http://hc.apache.org/httpclient-3.x/apidocs",
		"http://fasterxml.github.com/jackson-core/javadoc/2.0.0",
		"http://jackson.codehaus.org/1.4.2/javadoc",
		"http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.javadoc.doc/web/apidocs",
		"http://ibatis.apache.org/docs/java/dev",
		"http://tiles.apache.org/framework/apidocs",
		"http://commons.apache.org/dbcp/api-1.2.2",
	] as String[]
111 112
}

113
configure(subprojects - project(":spring-build-src")) { subproject ->
114
	apply plugin: "merge"
115 116 117
	apply from: "${gradleScriptDir}/publish-maven.gradle"

	jar {
P
Phillip Webb 已提交
118 119 120 121
		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
122 123 124 125 126

		from("${rootProject.projectDir}/src/dist") {
			include "license.txt"
			include "notice.txt"
			into "META-INF"
P
Phillip Webb 已提交
127
			expand(copyright: new Date().format("yyyy"), version: project.version)
128 129 130 131
		}
	}

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

134 135 136
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = project.name
C
Chris Beams 已提交
137 138 139 140 141 142
		options.links(project.ext.javadocLinks)

		// 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
143 144 145
	}

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

	task javadocJar(type: Jar) {
P
Phillip Webb 已提交
152
		classifier = "javadoc"
153 154 155 156 157 158 159
		from javadoc
	}

	artifacts {
		archives sourcesJar
		archives javadocJar
	}
C
Chris Beams 已提交
160 161
}

162 163 164 165 166 167 168 169 170 171 172 173
project("spring-build-src") {
	description = "Exposes gradle buildSrc for IDE support"
	apply plugin: "groovy"

	dependencies {
		compile gradleApi()
		groovy localGroovy()
	}

	configurations.archives.artifacts.clear()
}

P
Phillip Webb 已提交
174 175
project("spring-core") {
	description = "Spring Core"
176 177 178 179 180 181 182

	// As of Spring 3.2 spring-core repackages both asm 4.0 and cglib 3.0 and inlines both
	// into the spring-core jar. cglib 3.0 itself depends on asm 4.0, and is therefore
	// further transformed by the JarJar task to depend on org.springframework.asm; this
	// avoids including two different copies of asm unnecessarily. If however future cglib
	// versions drift from the version of asm used by Spring internally, this duplication
	// will become necessary.
P
Phillip Webb 已提交
183 184
	def asmVersion = "4.0"
	def cglibVersion = "3.0"
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203

	configurations {
		jarjar
		asm
		cglib
	}

	task asmRepackJar(type: Jar) { repackJar ->
		repackJar.baseName = "spring-asm-repack"
		repackJar.version = asmVersion

		doLast() {
			project.ant {
				taskdef name: "jarjar", classname: "com.tonicsystems.jarjar.JarJarTask",
					classpath: configurations.jarjar.asPath
				jarjar(destfile: repackJar.archivePath) {
					configurations.asm.each { originalJar ->
						zipfileset(src: originalJar)
					}
P
Phillip Webb 已提交
204
					rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
				}
			}
		}
	}

	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 已提交
223 224
					rule(pattern: "net.sf.cglib.**", result: "org.springframework.cglib.@1")
					// as mentioned above, transform cglib"s internal asm dependencies from
225 226
					// 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 已提交
227
					rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
228 229 230 231 232 233
				}
			}
		}
	}

	dependencies {
234 235 236 237
		asm("org.ow2.asm:asm:${asmVersion}@jar")
		asm("org.ow2.asm:asm-commons:${asmVersion}@jar")
		cglib("cglib:cglib:${cglibVersion}@jar")
		jarjar("com.googlecode.jarjar:jarjar:1.3")
238

239 240
		compile(files(asmRepackJar))
		compile("commons-logging:commons-logging:1.1.1")
241
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
242
		optional("net.sf.jopt-simple:jopt-simple:3.0")
243
		optional("log4j:log4j:1.2.17")
P
Phillip Webb 已提交
244
		testCompile("xmlunit:xmlunit:1.3")
245
		testCompile("org.codehaus.woodstox:wstx-asl:3.2.7")
246 247 248 249 250 251
	}

	jar {
		// inline all repackaged asm and cglib classes directly into the spring-core jar
		dependsOn asmRepackJar
		from(zipTree(asmRepackJar.archivePath)) {
P
Phillip Webb 已提交
252
			include "org/springframework/asm/**"
253 254 255
		}
		dependsOn cglibRepackJar
		from(zipTree(cglibRepackJar.archivePath)) {
P
Phillip Webb 已提交
256
			include "org/springframework/cglib/**"
257 258
		}
	}
C
Chris Beams 已提交
259 260
}

P
Phillip Webb 已提交
261 262
project("spring-beans") {
	description = "Spring Beans"
263
	dependencies {
264 265
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
266 267 268
		provided("javax.el:el-api:1.0")
		provided("javax.inject:javax.inject:1")
		testCompile("log4j:log4j:1.2.17")
269
	}
C
Chris Beams 已提交
270 271
}

P
Phillip Webb 已提交
272 273
project("spring-aop") {
	description = "Spring AOP"
274
	dependencies {
275 276 277
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
		compile(project(":spring-beans"))
278
		compile("aopalliance:aopalliance:1.0")
279 280 281
		optional("com.jamonapi:jamon:2.4")
		optional("commons-pool:commons-pool:1.5.3")
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
282
	}
C
Chris Beams 已提交
283 284
}

P
Phillip Webb 已提交
285 286
project("spring-expression") {
	description = "Spring Expression Language (SpEL)"
287
	dependencies {
288
		compile(project(":spring-core"))
289
	}
C
Chris Beams 已提交
290 291
}

P
Phillip Webb 已提交
292 293
project("spring-instrument") {
	description = "Spring Instrument"
294
	dependencies {
295
		compile(project(":spring-core"))
296 297
	}
	jar {
P
Phillip Webb 已提交
298 299
		manifest.attributes["Premain-Class"] =
			"org.springframework.instrument.InstrumentationSavingAgent"
300
	}
C
Chris Beams 已提交
301 302
}

P
Phillip Webb 已提交
303 304
project("spring-instrument-tomcat") {
	description = "Spring Instrument Tomcat"
305
	dependencies {
306
		provided("org.apache.tomcat:catalina:6.0.16")
307
	}
C
Chris Beams 已提交
308 309
}

P
Phillip Webb 已提交
310 311
project("spring-context") {
	description = "Spring Context"
312
	dependencies {
313
		optional(project(":spring-instrument"))
314 315 316 317 318
		compile(project(":spring-aop"))
		compile(project(":spring-beans"))
		compile(project(":spring-expression"))
		compile(project(":spring-core"))
		compile(files(project(":spring-core").cglibRepackJar))
319 320 321 322 323 324 325 326 327 328 329
		optional("backport-util-concurrent:backport-util-concurrent:3.0")
		optional("javax.ejb:ejb-api:3.0")
		optional("javax.inject:javax.inject:1")
		optional("org.apache.geronimo.specs:geronimo-jms_1.1_spec:1.1")
		optional("javax.persistence:persistence-api:1.0")
		optional("javax.validation:validation-api:1.0.0.GA")
		optional("org.beanshell:bsh:2.0b4")
		optional("org.codehaus.groovy:groovy-all:1.8.8")
		optional("org.jruby:jruby:1.6.5.1")
		optional("joda-time:joda-time:2.1")
		optional("org.slf4j:slf4j-api:${slf4jVersion}")
330
		optional("org.hibernate:hibernate-validator:4.3.0.Final")
331 332
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
		optional("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1")
333
		testCompile("commons-dbcp:commons-dbcp:1.2.2")
334
		testCompile("javax.inject:javax.inject-tck:1")
335 336 337
	}

	test {
P
Phillip Webb 已提交
338
		jvmArgs = ["-disableassertions:org.aspectj.weaver.UnresolvedType"] // SPR-7989
339
	}
C
Chris Beams 已提交
340 341
}

P
Phillip Webb 已提交
342 343
project("spring-tx") {
	description = "Spring Transaction"
344
	dependencies {
345 346
		optional(project(":spring-context")) // for JCA, @EnableTransactionManagement
		optional(project(":spring-aop"))
347 348
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
349
		compile("aopalliance:aopalliance:1.0")
350 351 352 353 354 355
		provided("com.ibm.websphere:uow:6.0.2.17")
		optional("javax.resource:connector-api:1.5")
		optional("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1")
		optional("javax.ejb:ejb-api:3.0")
		testCompile("javax.persistence:persistence-api:1.0")
		testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
356
	}
C
Chris Beams 已提交
357 358
}

P
Phillip Webb 已提交
359 360 361
project("spring-oxm") {
	description = "Spring Object/XML Marshalling"
	apply from: "oxm.gradle"
362 363 364 365 366 367 368 369

	compileTestJava {
		// necessary to avoid java.lang.VerifyError on jibx compilation
		// see http://jira.codehaus.org/browse/JIBX-465
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

370
	dependencies {
371 372
		compile(project(":spring-beans"))
		compile(project(":spring-core"))
373
		optional(project(":spring-context")) // for Jaxb2Marshaller
374
		compile("commons-lang:commons-lang:2.5")
375 376 377 378 379
		optional("com.thoughtworks.xstream:xstream:1.3.1")
		optional("com.sun.xml.bind:jaxb-impl:2.1.7")
		optional("org.jibx:jibx-run:1.2.3")
		optional("org.apache.xmlbeans:xmlbeans:2.4.0")
		optional("org.codehaus.castor:castor-xml:1.3.2")
380
		testCompile("org.codehaus.jettison:jettison:1.0.1")
P
Phillip Webb 已提交
381
		testCompile("xmlunit:xmlunit:1.3")
382
		testCompile("xmlpull:xmlpull:1.1.3.4a")
383 384 385 386
		testCompile(files(genCastor.classesDir).builtBy(genCastor))
		testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
		testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
	}
C
Chris Beams 已提交
387 388
}

P
Phillip Webb 已提交
389 390
project("spring-jms") {
	description = "Spring JMS"
391
	dependencies {
392 393 394 395 396
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-aop"))
		compile(project(":spring-context"))
		compile(project(":spring-tx"))
397
		optional(project(":spring-oxm"))
398
		compile("aopalliance:aopalliance:1.0")
399 400 401
		provided("org.apache.geronimo.specs:geronimo-jms_1.1_spec:1.1")
		optional("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1")
		optional("javax.resource:connector-api:1.5")
402 403
		optional("org.codehaus.jackson:jackson-mapper-asl:1.4.2")
		optional("com.fasterxml.jackson.core:jackson-databind:2.0.1")
404
	}
C
Chris Beams 已提交
405 406
}

P
Phillip Webb 已提交
407 408
project("spring-jdbc") {
	description = "Spring JDBC"
409
	dependencies {
410 411
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
412
		optional(project(":spring-context")) // for JndiDataSourceLookup
413
		compile(project(":spring-tx"))
414 415 416 417 418 419
		optional("c3p0:c3p0:0.9.1.2")
		optional("hsqldb:hsqldb:${hsqldbVersion}")
		optional("com.h2database:h2:1.0.71")
		optional("org.apache.derby:derby:10.5.3.0_1")
		optional("org.apache.derby:derbyclient:10.5.3.0_1")
		optional("org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1")
420
	}
C
Chris Beams 已提交
421 422
}

P
Phillip Webb 已提交
423 424
project("spring-context-support") {
	description = "Spring Context Support"
425
	dependencies {
426 427 428
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
429 430 431 432 433 434 435 436 437 438
		optional(project(":spring-jdbc")) // for Quartz support
		optional(project(":spring-tx")) // for Quartz support
		optional("javax.mail:mail:1.4")
		optional("javax.cache:cache-api:0.5")
		optional("net.sf.ehcache:ehcache-core:2.0.0")
		optional("opensymphony:quartz:1.6.2")
		optional("org.codehaus.fabric3.api:commonj:1.1.0")
		optional("velocity:velocity:1.5")
		optional("org.freemarker:freemarker:2.3.15")
		optional("com.lowagie:itext:2.1.7")
439
		optional("jasperreports:jasperreports:2.0.5")
440 441
		optional("org.slf4j:slf4j-api:${slf4jVersion}")
		provided("javax.activation:activation:1.1")
442
		testCompile("org.apache.poi:poi:3.0.2-FINAL")
443 444
		testCompile("commons-beanutils:commons-beanutils:1.8.0") // for Velocity/JasperReports
		testCompile("commons-digester:commons-digester:1.8.1") // for Velocity/JasperReports
445
		testCompile("hsqldb:hsqldb:${hsqldbVersion}")
446 447 448
	}

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

P
Phillip Webb 已提交
452 453
project("spring-web") {
	description = "Spring Web"
454
	dependencies {
455 456 457 458
		compile(project(":spring-core"))
		compile(project(":spring-beans")) // for MultiPartFilter
		compile(project(":spring-aop")) // for JaxWsPortProxyFactoryBean
		compile(project(":spring-context"))
459
		optional(project(":spring-oxm")) // for MarshallingHttpMessageConverter
460
		compile("aopalliance:aopalliance:1.0")
461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478
		optional("com.caucho:hessian:3.2.1")
		optional("rome:rome:1.0")
		optional("javax.el:el-api:1.0")
		optional("javax.faces:jsf-api:1.2_08")
		provided("javax.portlet:portlet-api:2.0")
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.servlet.jsp:jsp-api:2.1")
		optional("javax.xml:jaxrpc-api:1.1")
		provided("javax.xml.soap:saaj-api:1.3")
		provided("javax.activation:activation:1.1")
		optional("commons-fileupload:commons-fileupload:1.2")
		optional("commons-io:commons-io:1.3")
		optional("commons-httpclient:commons-httpclient:3.1")
		optional("org.apache.httpcomponents:httpclient:4.2")
		optional("org.codehaus.jackson:jackson-mapper-asl:1.4.2")
		optional("com.fasterxml.jackson.core:jackson-databind:2.0.1")
		optional("taglibs:standard:1.1.2")
		optional("org.eclipse.jetty:jetty-servlet:8.1.5.v20120716") {
P
Phillip Webb 已提交
479
			exclude group: "org.eclipse.jetty.orbit", module: "javax.servlet"
480
		}
481
		optional("org.eclipse.jetty:jetty-server:8.1.5.v20120716") {
P
Phillip Webb 已提交
482
			exclude group: "org.eclipse.jetty.orbit", module: "javax.servlet"
483
		}
484
		optional("log4j:log4j:1.2.17")
485
		testCompile(project(":spring-context-support"))  // for JafMediaTypeFactory
P
Phillip Webb 已提交
486
		testCompile("xmlunit:xmlunit:1.3")
487 488 489
	}

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

P
Phillip Webb 已提交
493 494
project("spring-orm") {
	description = "Spring Object/Relational Mapping"
495 496 497 498 499 500 501 502

	compileTestJava {
		// necessary to avoid java.lang.VerifyError on toplink compilation
		// TODO: remove this block when we remove toplink
		sourceCompatibility=1.6
		targetCompatibility=1.6
	}

503 504
	dependencies {
		compile("aopalliance:aopalliance:1.0")
505 506 507 508 509 510 511 512 513 514 515 516
		optional("org.hibernate:hibernate-core:3.3.2.GA")
		optional("org.hibernate:hibernate-annotations:3.4.0.GA")
		optional("org.hibernate:hibernate-entitymanager:3.4.0.GA")
		optional("org.apache.openjpa:openjpa:1.1.0")
		optional("org.eclipse.persistence:org.eclipse.persistence.core:1.0.1")
		optional("org.eclipse.persistence:org.eclipse.persistence.jpa:1.0.1")
		optional("toplink.essentials:toplink-essentials:2.0-41b")
		optional("javax.jdo:jdo-api:3.0")
		optional("org.apache.ibatis:ibatis-sqlmap:2.3.4.726")
		optional("javax.persistence:persistence-api:1.0")
		provided("javax.servlet:servlet-api:2.5")
		testCompile("javax.servlet:javax.servlet-api:3.0.1")
517 518 519 520
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
		testCompile("commons-dbcp:commons-dbcp:1.2.2")
		testCompile("org.eclipse.persistence:org.eclipse.persistence.asm:1.0.1")
		testCompile("org.eclipse.persistence:org.eclipse.persistence.antlr:1.0.1")
521
		testCompile("hsqldb:hsqldb:${hsqldbVersion}")
522 523
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
524 525
		optional(project(":spring-aop"))
		optional(project(":spring-context"))
526 527
		compile(project(":spring-tx"))
		compile(project(":spring-jdbc"))
528
		optional(project(":spring-web"))
529
	}
C
Chris Beams 已提交
530 531
}

P
Phillip Webb 已提交
532 533
project("spring-orm-hibernate4") {
	description = "Spring Object/Relational Mapping - Hibernate 4 support"
534
	merge.into = project(":spring-orm")
535
	dependencies {
536 537
		compile(project(":spring-tx"))
		compile(project(":spring-jdbc"))
538 539
		optional("org.hibernate:hibernate-core:4.1.0.Final")
		optional("org.hibernate:hibernate-entitymanager:4.1.0.Final")
540
		optional(project(":spring-web"))
541
		optional("javax.servlet:servlet-api:2.5")
542
	}
543 544
}

P
Phillip Webb 已提交
545 546
project("spring-webmvc") {
	description = "Spring Web MVC"
547
	dependencies {
548 549 550 551 552
		compile(project(":spring-core"))
		compile(project(":spring-expression"))
		compile(project(":spring-beans"))
		compile(project(":spring-web"))
		compile(project(":spring-context"))
553 554 555 556 557 558 559 560 561 562 563 564
		optional(project(":spring-context-support")) // for Velocity support
		optional(project(":spring-oxm")) // for MarshallingView
		optional("org.apache.tiles:tiles-api:2.1.2")
		optional("org.apache.tiles:tiles-core:2.1.2")
		optional("org.apache.tiles:tiles-jsp:2.1.2")
		optional("org.apache.tiles:tiles-servlet:2.1.2")
		optional("velocity-tools:velocity-tools-view:1.4")
		optional("net.sourceforge.jexcelapi:jxl:2.6.3")
		optional("org.apache.poi:poi:3.0.2-FINAL")
		optional("com.lowagie:itext:2.1.7")
		optional("jasperreports:jasperreports:2.0.5") {
			exclude group: "xml-apis", module: "xml-apis"
565
		}
566 567 568 569 570 571 572 573
		optional("rome:rome:1.0")
		optional("velocity:velocity:1.5")
		optional("org.freemarker:freemarker:2.3.15")
		optional("org.codehaus.jackson:jackson-mapper-asl:1.4.2")
		optional("com.fasterxml.jackson.core:jackson-databind:2.0.1")
		provided("javax.servlet:jstl:1.2")
		provided("javax.servlet:javax.servlet-api:3.0.1")
		provided("javax.servlet.jsp:jsp-api:2.1")
574 575 576
		testCompile(project(":spring-aop"))
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
		testCompile("rhino:js:1.7R1")
P
Phillip Webb 已提交
577
		testCompile("xmlunit:xmlunit:1.3")
578
		testCompile("dom4j:dom4j:1.6.1") {
P
Phillip Webb 已提交
579
			exclude group: "xml-apis", module: "xml-apis"
580 581
		}
		testCompile("jaxen:jaxen:1.1.1") {
P
Phillip Webb 已提交
582 583 584
			exclude group: "xml-apis", module: "xml-apis"
			exclude group: "xom", module: "xom"
			exclude group: "xerces", module: "xercesImpl"
585
		}
586 587 588 589 590 591 592 593 594 595 596
		testCompile("org.eclipse.jetty:jetty-servlet:8.1.5.v20120716") {
			exclude group: "org.eclipse.jetty.orbit", module: "javax.servlet"
		}
		testCompile("org.eclipse.jetty:jetty-server:8.1.5.v20120716") {
			exclude group: "org.eclipse.jetty.orbit", module: "javax.servlet"
		}
		testCompile("javax.validation:validation-api:1.0.0.GA")
		testCompile("commons-fileupload:commons-fileupload:1.2")
		testCompile("commons-io:commons-io:1.3")
		testCompile("org.hibernate:hibernate-validator:4.3.0.Final")
		testCompile("org.apache.httpcomponents:httpclient:4.2")
597
		testCompile(project(":spring-web").sourceSets.test.output)
598 599 600
	}

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

P
Phillip Webb 已提交
604 605
project("spring-webmvc-tiles3") {
	description = "Spring Framework Tiles3 Integration"
606
	merge.into = project(":spring-webmvc")
607
	dependencies {
608
		compile(project(":spring-context"))
609 610 611 612 613 614
		provided("javax.el:el-api:1.0")
		provided("javax.servlet:jstl:1.2")
		provided("javax.servlet.jsp:jsp-api:2.1")
		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 已提交
615
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
616
		}
617
		optional("org.apache.tiles:tiles-servlet:3.0.1") {
P
Phillip Webb 已提交
618
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
619
		}
620
		optional("org.apache.tiles:tiles-jsp:3.0.1") {
P
Phillip Webb 已提交
621
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
622
		}
623
		optional("org.apache.tiles:tiles-el:3.0.1") {
P
Phillip Webb 已提交
624
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
625
		}
626
		provided("javax.servlet:javax.servlet-api:3.0.1")
627
		compile(project(":spring-web").sourceSets*.output) // mock request & response
628
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
629
	}
630 631
}

P
Phillip Webb 已提交
632 633
project("spring-webmvc-portlet") {
	description = "Spring Web Portlet"
634
	dependencies {
635 636
		provided("javax.servlet:servlet-api:2.5")
		provided("javax.portlet:portlet-api:2.0")
637 638 639 640 641
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
		compile(project(":spring-web"))
		compile(project(":spring-webmvc"))
642
		optional("commons-fileupload:commons-fileupload:1.2")
643 644 645
	}

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

P
Phillip Webb 已提交
649 650
project("spring-test") {
	description = "Spring TestContext Framework"
651
	dependencies {
652
		compile(project(":spring-core"))
653 654 655 656 657 658 659 660
		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"))
		optional(project(":spring-webmvc-portlet"), )
661 662
		optional("junit:junit:${junitVersion}")
		optional("org.testng:testng:6.5.2")
663 664 665 666 667 668 669 670 671 672 673
		optional("javax.servlet:servlet-api:2.5")
		optional("javax.servlet.jsp:jsp-api:2.1")
		optional("javax.portlet:portlet-api:2.0")
		optional("javax.persistence:persistence-api:1.0")
		optional("org.aspectj:aspectjweaver:${aspectjVersion}")
		testCompile("org.hibernate:hibernate-core:3.3.2.GA")
		provided("javax.inject:javax.inject:1")
		provided("javax.activation:activation:1.1")
		provided("javax.servlet:jstl:1.2")
		testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
		testCompile("hsqldb:hsqldb:${hsqldbVersion}")
674
	}
C
Chris Beams 已提交
675 676
}

P
Phillip Webb 已提交
677 678
project("spring-test-mvc") {
	description = "Spring Test MVC Framework"
679
	merge.into = project(":spring-test")
680
	dependencies {
681
		optional(project(":spring-context"))
682
		compile(project(":spring-webmvc"))
683 684 685
		provided("javax.servlet:javax.servlet-api:3.0.1")
		optional("org.hamcrest:hamcrest-core:1.3")
		optional("com.jayway.jsonpath:json-path:0.8.1")
P
Phillip Webb 已提交
686
		optional("xmlunit:xmlunit:1.3")
687
		testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
688 689 690
		testCompile("javax.servlet:jstl:1.2")
		testCompile("org.hibernate:hibernate-validator:4.3.0.Final")
		testCompile("org.codehaus.jackson:jackson-mapper-asl:1.4.2")
691 692
		testCompile("com.fasterxml.jackson.core:jackson-databind:2.0.1")
		testCompile(project(":spring-context-support"))
693 694 695 696
		testCompile(project(":spring-oxm"))
		testCompile("com.thoughtworks.xstream:xstream:1.3.1")
		testCompile("cglib:cglib-nodep:2.2")
		testCompile("rome:rome:1.0")
697 698
		testCompile("javax.activation:activation:1.1")
		testCompile("javax.mail:mail:1.4")
699 700 701
		testCompile("javax.xml.bind:jaxb-api:2.2.6")
		testCompile("org.apache.tiles:tiles-request-api:1.0.1")
		testCompile("org.apache.tiles:tiles-api:3.0.1")
702
		testCompile("org.apache.tiles:tiles-core:3.0.1") {
P
Phillip Webb 已提交
703
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
704 705
		}
		testCompile("org.apache.tiles:tiles-servlet:3.0.1") {
P
Phillip Webb 已提交
706
			exclude group: "org.slf4j", module: "jcl-over-slf4j"
707 708
		}
	}
R
Rob Winch 已提交
709 710
}

P
Phillip Webb 已提交
711 712
project("spring-struts") {
	description = "Spring Struts"
713
	dependencies {
714 715 716 717 718 719 720
		compile(project(":spring-core"))
		compile(project(":spring-beans"))
		compile(project(":spring-context"))
		compile(project(":spring-web"))
		compile(project(":spring-webmvc"))
		compile("struts:struts:1.2.9")
		compile("commons-beanutils:commons-beanutils:1.7.0")
721 722
		provided("javax.servlet:servlet-api:2.5")
		provided("javax.servlet:jstl:1.2")
723
		testCompile(project(":spring-test"))
724
	}
C
Chris Beams 已提交
725 726
}

P
Phillip Webb 已提交
727 728 729
project("spring-aspects") {
	description = "Spring Aspects"
	apply from: "aspects.gradle"
730
	dependencies {
731 732 733 734 735 736
		optional(project(":spring-beans")) // for @Configurable support
		optional(project(":spring-aop")) // for @Async support
		optional(project(":spring-context")) // for @Enable* support
		compile(project(":spring-context-support")) // for JavaMail support
		optional(project(":spring-tx")) // for JPA, @Transactional support
		optional(project(":spring-orm")) // for JPA exception translation support
737
		aspects(project(":spring-orm"))
738 739
		provided("javax.persistence:persistence-api:1.0")
		testCompile("javax.mail:mail:1.4")
740
		ajc("org.aspectj:aspectjtools:${aspectjVersion}")
C
Chris Beams 已提交
741
		rt("org.aspectj:aspectjrt:${aspectjVersion}")
742 743 744 745
		compile("org.aspectj:aspectjweaver:${aspectjVersion}")
		testCompile(project(":spring-core")) // for CodeStyleAspect
		compile(project(":spring-beans")) // for "p" namespace visibility
		testCompile(project(":spring-test"))
746 747
	}
	eclipse.project {
P
Phillip Webb 已提交
748
		natures += "org.eclipse.ajdt.ui.ajnature"
749
		buildCommands = [new org.gradle.plugins.ide.eclipse.model.
P
Phillip Webb 已提交
750
				BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
751
	}
C
Chris Beams 已提交
752 753
}

754
configure(rootProject) {
P
Phillip Webb 已提交
755
	description = "Spring Framework"
756

P
Phillip Webb 已提交
757
	apply plugin: "docbook-reference"
758
	apply plugin: "groovy"
759 760 761
	apply from: "${gradleScriptDir}/jdiff.gradle"

	reference {
P
Phillip Webb 已提交
762 763
		sourceDir = file("src/reference/docbook")
		pdfFilename = "spring-framework-reference.pdf"
764 765
	}

P
Phillip Webb 已提交
766
	// don"t publish the default jar for the root project
767 768 769
	configurations.archives.artifacts.clear()

	dependencies { // for integration tests
770
		testCompile(project(":spring-core"))
771
		testCompile(project(":spring-core").sourceSets.test.output)
772 773 774 775 776 777 778 779 780
		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"))
781
		testCompile(project(":spring-orm"))
782 783
		testCompile("org.hibernate:hibernate-core:4.1.0.Final")
		testCompile("javax.servlet:servlet-api:2.5")
784 785 786 787 788
		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}")
		testCompile("hsqldb:hsqldb:${hsqldbVersion}")
789 790 791
	}

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

796 797 798
		options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
		options.author = true
		options.header = rootProject.description
P
Phillip Webb 已提交
799
		options.overview = "src/api/overview.html"
800
		options.splitIndex = true
C
Chris Beams 已提交
801 802
		options.links(project.ext.javadocLinks)

803 804 805
		source subprojects.collect { project ->
			project.sourceSets.main.allJava
		}
C
Chris Beams 已提交
806 807 808 809 810 811 812 813 814 815 816

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

P
Phillip Webb 已提交
817
		maxMemory = "1024m"
C
Chris Beams 已提交
818
		destinationDir = new File(buildDir, "api")
819 820 821
	}

	task docsZip(type: Zip) {
P
Phillip Webb 已提交
822 823 824
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "docs"
825 826 827
		description = "Builds -${classifier} archive containing api and reference " +
			"for deployment at http://static.springframework.org/spring-framework/docs."

P
Phillip Webb 已提交
828 829
		from("src/dist") {
			include "changelog.txt"
830 831 832
		}

		from (api) {
833
			into "javadoc-api"
834 835 836
		}

		from (reference) {
837
			into "spring-framework-reference"
838 839 840 841
		}
	}

	task schemaZip(type: Zip) {
P
Phillip Webb 已提交
842 843 844
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "schema"
845 846 847 848 849 850 851
		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 已提交
852
				it.path.endsWith("META-INF/spring.schemas")
853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869
			}?.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 已提交
870 871 872
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist"
873 874 875 876 877
		description = "Builds -${classifier} archive, containing all jars and docs, " +
					"suitable for community download page."

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

P
Phillip Webb 已提交
878 879 880 881
		from("src/dist") {
			include "readme.txt"
			include "license.txt"
			include "notice.txt"
882
			into "${baseDir}"
P
Phillip Webb 已提交
883
			expand(copyright: new Date().format("yyyy"), version: project.version)
884 885 886 887 888 889 890 891 892 893 894 895 896
		}

		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 已提交
897
				if (subproject.tasks.findByPath("sourcesJar")) {
898 899
					from subproject.sourcesJar
				}
P
Phillip Webb 已提交
900
				if (subproject.tasks.findByPath("javadocJar")) {
901 902 903 904 905 906 907 908 909
					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 已提交
910 911 912
		group = "Distribution"
		baseName = "spring-framework"
		classifier = "dist-with-deps"
913 914 915 916 917 918 919 920 921 922
		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 ->
923 924
					(subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts +
					subproject.configurations.optional.resolvedConfiguration.resolvedArtifacts).each { artifact ->
925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945
						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 已提交
946 947
		description = "Generates gradlew[.bat] scripts"
		gradleVersion = "1.3"
948 949 950 951

		doLast() {
			def gradleOpts = "-XX:MaxPermSize=1024m -Xmx1024m"
			def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
P
Phillip Webb 已提交
952
			File wrapperFile = file("gradlew")
953 954
			wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
				"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
P
Phillip Webb 已提交
955
			File wrapperBatFile = file("gradlew.bat")
956 957 958 959
			wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
				"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
		}
	}
960
}