|
|
|
buildscript {
|
|
|
|
repositories {
|
|
|
|
maven { url "http://repo.springsource.org/plugins-release" }
|
|
|
|
}
|
|
|
|
dependencies {
|
|
|
|
classpath("org.springframework.build.gradle:propdeps-plugin:0.0.6")
|
|
|
|
classpath("org.asciidoctor:asciidoctor-gradle-plugin:0.7.0")
|
|
|
|
classpath("org.springframework.build.gradle:docbook-reference-plugin:0.2.8")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
configure(allprojects) { project ->
|
|
|
|
group = "org.springframework"
|
|
|
|
version = qualifyVersionIfNecessary(version)
|
|
|
|
|
|
|
|
ext.aspectjVersion = "1.8.0"
|
|
|
|
ext.groovyVersion = "1.8.9"
|
|
|
|
ext.hibernate3Version = "3.6.10.Final"
|
|
|
|
ext.hibernate4Version = "4.3.5.Final"
|
|
|
|
ext.hibVal4Version = "4.3.1.Final"
|
|
|
|
ext.hibVal5Version = "5.1.0.Final"
|
|
|
|
ext.hsqldbVersion = "2.3.2"
|
|
|
|
ext.jackson2Version = "2.3.3"
|
|
|
|
ext.jasperReportsVersion = "5.5.1" // 5.5.2 has an unresolvable transitive dependency
|
|
|
|
ext.jettyVersion = "9.1.4.v20140401"
|
|
|
|
ext.jodaVersion = "2.3"
|
|
|
|
ext.junitVersion = "4.11"
|
|
|
|
ext.slf4jVersion = "1.7.7"
|
|
|
|
ext.snakeYamlVersion = "1.13"
|
|
|
|
ext.tiles2Version = "2.2.2"
|
|
|
|
ext.tiles3Version = "3.0.3"
|
|
|
|
ext.tomcatVersion = "8.0.5"
|
|
|
|
ext.xstreamVersion = "1.4.7"
|
|
|
|
ext.snifferVersion = "1.11"
|
|
|
|
|
|
|
|
ext.gradleScriptDir = "${rootProject.projectDir}/gradle"
|
|
|
|
|
|
|
|
apply plugin: "propdeps"
|
|
|
|
apply plugin: "java"
|
|
|
|
apply plugin: "test-source-set-dependencies"
|
|
|
|
apply from: "${gradleScriptDir}/ide.gradle"
|
|
|
|
|
|
|
|
configurations {
|
|
|
|
sniffer
|
|
|
|
javaApiSignature
|
|
|
|
}
|
|
|
|
|
|
|
|
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"
|
|
|
|
]
|
|
|
|
|
|
|
|
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"]
|
|
|
|
|
|
|
|
compileJava {
|
|
|
|
sourceCompatibility=1.6
|
|
|
|
targetCompatibility=1.6
|
|
|
|
}
|
|
|
|
|
|
|
|
compileTestJava {
|
|
|
|
sourceCompatibility=1.8
|
|
|
|
targetCompatibility=1.8
|
|
|
|
options.compilerArgs += "-parameters"
|
|
|
|
}
|
|
|
|
|
|
|
|
sourceSets.test.resources.srcDirs = ["src/test/resources", "src/test/java"]
|
|
|
|
|
|
|
|
test {
|
|
|
|
systemProperty("java.awt.headless", "true")
|
|
|
|
systemProperty("testGroups", project.properties.get("testGroups"))
|
|
|
|
scanForTestClasses = false
|
|
|
|
include(["**/*Tests.class", "**/*Test.class"])
|
|
|
|
// Since we set scanForTestClasses to false, we need to filter out inner
|
|
|
|
// classes with the "$" pattern; otherwise, using -Dtest.single=MyTests to
|
|
|
|
// run MyTests by itself will fail if MyTests contains any inner classes.
|
|
|
|
exclude(["**/Abstract*.class", '**/*$*'])
|
|
|
|
}
|
|
|
|
|
|
|
|
repositories {
|
|
|
|
maven { url "http://repo.spring.io/libs-release" }
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
testCompile("junit:junit:${junitVersion}") {
|
|
|
|
exclude group:'org.hamcrest', module:'hamcrest-core'
|
|
|
|
}
|
|
|
|
testCompile("org.mockito:mockito-core:1.9.5") {
|
|
|
|
exclude group:'org.hamcrest', module:'hamcrest-core'
|
|
|
|
}
|
|
|
|
testCompile("org.hamcrest:hamcrest-all:1.3")
|
|
|
|
testCompile("org.mockito:mockito-core:1.9.5")
|
|
|
|
|
|
|
|
sniffer("org.codehaus.mojo:animal-sniffer-ant-tasks:${snifferVersion}")
|
|
|
|
javaApiSignature("org.codehaus.mojo.signature:java16:1.1@signature") // As from Java6_18
|
|
|
|
}
|
|
|
|
|
|
|
|
task copyJavaApiSignature(type: Copy) {
|
|
|
|
ext.to = file("$buildDir/javaApiSignature/")
|
|
|
|
description "Copy the resolved Animal Sniffer signature dependency artifact to a known location and name"
|
|
|
|
from configurations.javaApiSignature
|
|
|
|
into to
|
|
|
|
rename '.*signature', 'javaApi.signature'
|
|
|
|
}
|
|
|
|
|
|
|
|
task sniff {
|
|
|
|
group = "Verification"
|
|
|
|
description = "Checks the Java API signatures"
|
|
|
|
|
|
|
|
dependsOn compileJava
|
|
|
|
dependsOn copyJavaApiSignature
|
|
|
|
|
|
|
|
inputs.dir sourceSets.main.output.classesDir
|
|
|
|
inputs.dir copyJavaApiSignature.to
|
|
|
|
outputs.upToDateWhen { true }
|
|
|
|
|
|
|
|
doLast {
|
|
|
|
ant.taskdef(
|
|
|
|
name: 'animalSniffer',
|
|
|
|
classname: 'org.codehaus.mojo.animal_sniffer.ant.CheckSignatureTask',
|
|
|
|
classpath: configurations.sniffer.asPath
|
|
|
|
)
|
|
|
|
|
|
|
|
ant.animalSniffer(
|
|
|
|
signature: "$buildDir/javaApiSignature/javaApi.signature",
|
|
|
|
classpath: sourceSets.main.compileClasspath.asPath) {
|
|
|
|
path(path: sourceSets.main.output.classesDir)
|
|
|
|
annotation(className: "org.springframework.core.UsesJava7")
|
|
|
|
annotation(className: "org.springframework.core.UsesJava8")
|
|
|
|
annotation(className: "org.springframework.core.UsesSunHttpServer")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
|
|
|
|
ext.javadocLinks = [
|
|
|
|
"http://docs.oracle.com/javase/7/docs/api/",
|
|
|
|
"http://docs.oracle.com/javaee/7/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/",
|
|
|
|
"http://docs.jboss.org/jbossas/javadoc/4.0.5/connector/",
|
|
|
|
"http://docs.jboss.org/jbossas/javadoc/7.1.2.Final/",
|
|
|
|
"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/tiles-request/apidocs/",
|
|
|
|
"http://tiles.apache.org/framework/apidocs/",
|
|
|
|
"http://aopalliance.sourceforge.net/doc/",
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
"http://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/",
|
|
|
|
"http://ehcache.org/apidocs/",
|
|
|
|
"http://quartz-scheduler.org/api/2.1.7/",
|
|
|
|
"http://fasterxml.github.com/jackson-core/javadoc/2.3.0/",
|
|
|
|
"http://fasterxml.github.com/jackson-databind/javadoc/2.3.0/",
|
|
|
|
"http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs"
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
] as String[]
|
Upgrade to JUnit 4.11 snapshot in support of JDK7
Class#getDeclaredMembers returns arbitrary results under JDK7. This
results in non-deterministic execution of JUnit test methods, often
revealing unintended dependencies between methods that rely on a
specific order to succeed.
JUnit 4.11 contains support for predictable test ordering [1], but at
the time of this commit, JUnit 4.11 has not yet been released.
Therefore we are testing against a snapshot version [2], which has been
uploaded to repo.springsource.org [3] for easy access. Note that this
artifact may be removed when JUnit 4.11 goes GA.
- Care has been taken to ensure that spring-test's compile-time
dependency on JUnit remains at 4.10. This means that the spring-test
pom.xml will continue to have an optional <dependency> on JUnit
4.10, instead of the 4.11 snapshot.
- For reasons not fully understood, the upgrade to the 4.11 snapshot
of junit-dep caused NoSuchMethodErrors around certain Hamcrest
types, particularly CoreMatchers and Matchers. import statements
have been updated accordingly throughout affected test cases.
- Runtime errors also occurred around uses of JUnit @Rule and
ExpectedException. These have been reverted to use simpler
mechanisms like @Test(expected) in the meantime.
- Some test methods with order-based dependencies on one another have
been renamed in order to fall in line with JUnit 4.11's new method
ordering (as opposed to actually fixing the inter-test
dependencies). In other areas, the fix was as simple as adding a
tearDown method and cleaning up state.
- For no apparent reason, the timeout in AspectJAutoProxyCreatorTests'
testAspectsAndAdvisorNotAppliedToPrototypeIsFastEnough method begins
to be exceeded. Prior to this commit the timeout value was 3000 ms;
on the CI server under Linux/JDK6 and JDK7, the test begins taking
anywhere from 3500-5500 ms with this commit. It is presumed that
this is an incidental artifact of the upgrade to JUnit 4.11. In any
case, there are no changes to src/main in this commit, so this
should not actually represent a performance risk for Spring
Framework users. The timeout has been increased to 6000 ms to
accommodate this situation.
[1]: https://github.com/KentBeck/junit/pull/293
[2]: https://github.com/downloads/KentBeck/junit/junit-dep-4.11-SNAPSHOT-20120805-1225.jar
[3]: https://repo.springsource.org/simple/ext-release-local/junit/junit-dep/4.11.20120805.1225
Issue: SPR-9783
12 years ago
|
|
|
}
|
|
|
|
|
|
|
|
configure(subprojects - project(":spring-build-src")) { subproject ->
|
|
|
|
apply plugin: "merge"
|
|
|
|
apply from: "${gradleScriptDir}/publish-maven.gradle"
|
|
|
|
|
|
|
|
jar {
|
|
|
|
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
|
|
|
|
|
|
|
|
from("${rootProject.projectDir}/src/dist") {
|
|
|
|
include "license.txt"
|
|
|
|
include "notice.txt"
|
|
|
|
into "META-INF"
|
|
|
|
expand(copyright: new Date().format("yyyy"), version: project.version)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
javadoc {
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
description = "Generates project-level javadoc for use in -javadoc jar"
|
|
|
|
|
|
|
|
options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
|
|
|
|
options.author = true
|
|
|
|
options.header = project.name
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
options.links(project.ext.javadocLinks)
|
|
|
|
options.addStringOption('Xdoclint:none', '-quiet')
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
|
|
|
|
// 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
|
|
|
|
}
|
|
|
|
|
|
|
|
task sourcesJar(type: Jar, dependsOn:classes) {
|
|
|
|
classifier = "sources"
|
|
|
|
from sourceSets.main.allJava.srcDirs
|
|
|
|
include "**/*.java", "**/*.aj"
|
|
|
|
}
|
|
|
|
|
|
|
|
task javadocJar(type: Jar) {
|
|
|
|
classifier = "javadoc"
|
|
|
|
from javadoc
|
|
|
|
}
|
|
|
|
|
|
|
|
artifacts {
|
|
|
|
archives sourcesJar
|
|
|
|
archives javadocJar
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-build-src") {
|
|
|
|
description = "Exposes gradle buildSrc for IDE support"
|
|
|
|
apply plugin: "groovy"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile gradleApi()
|
|
|
|
compile localGroovy()
|
|
|
|
}
|
|
|
|
|
|
|
|
configurations.archives.artifacts.clear()
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-core") {
|
|
|
|
description = "Spring Core"
|
|
|
|
|
|
|
|
// As of Spring 4.0.3, spring-core includes asm 5.0 and repackages cglib 3.1, inlining
|
|
|
|
// both into the spring-core jar. cglib 3.1 itself depends on asm 4+, and is therefore
|
|
|
|
// further transformed by the JarJar task to depend on org.springframework.asm; this
|
|
|
|
// avoids including two different copies of asm unnecessarily.
|
|
|
|
def cglibVersion = "3.1"
|
|
|
|
def objenesisVersion = "2.1"
|
|
|
|
|
|
|
|
configurations {
|
|
|
|
jarjar
|
|
|
|
cglib
|
|
|
|
objenesis
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
|
rule(pattern: "net.sf.cglib.**", result: "org.springframework.cglib.@1")
|
|
|
|
// as mentioned above, transform cglib"s internal asm dependencies from
|
|
|
|
// org.objectweb.asm => org.springframework.asm. Doing this counts on the
|
|
|
|
// the fact that Spring and cglib depend on the same version of asm!
|
|
|
|
rule(pattern: "org.objectweb.asm.**", result: "org.springframework.asm.@1")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
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")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
cglib("cglib:cglib:${cglibVersion}@jar")
|
|
|
|
objenesis("org.objenesis:objenesis:${objenesisVersion}@jar")
|
|
|
|
jarjar("com.googlecode.jarjar:jarjar:1.3")
|
|
|
|
|
|
|
|
compile(files(cglibRepackJar))
|
|
|
|
compile("commons-logging:commons-logging:1.1.3")
|
|
|
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
|
|
|
|
optional("net.sf.jopt-simple:jopt-simple:4.6")
|
|
|
|
optional("log4j:log4j:1.2.17")
|
|
|
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
|
|
|
|
testCompile("xmlunit:xmlunit:1.5")
|
|
|
|
testCompile("org.codehaus.woodstox:wstx-asl:3.2.7") {
|
|
|
|
exclude group: "stax", module: "stax-api"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
jar {
|
|
|
|
// inline repackaged cglib classes directly into the spring-core jar
|
|
|
|
dependsOn cglibRepackJar
|
|
|
|
from(zipTree(cglibRepackJar.archivePath)) {
|
|
|
|
include "org/springframework/cglib/**"
|
|
|
|
}
|
|
|
|
|
|
|
|
dependsOn objenesisRepackJar
|
|
|
|
from(zipTree(objenesisRepackJar.archivePath)) {
|
|
|
|
include "org/springframework/objenesis/**"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-beans") {
|
|
|
|
description = "Spring Beans"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(files(project(":spring-core").cglibRepackJar))
|
|
|
|
optional("javax.inject:javax.inject:1")
|
|
|
|
optional("javax.el:javax.el-api:2.2.4")
|
|
|
|
optional("org.yaml:snakeyaml:${snakeYamlVersion}")
|
|
|
|
testCompile("log4j:log4j:1.2.17")
|
|
|
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-beans-groovy") {
|
|
|
|
description "Groovy Bean Definitions"
|
|
|
|
merge.into = project(":spring-beans")
|
|
|
|
apply plugin: "groovy"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
|
|
|
|
}
|
|
|
|
|
|
|
|
// this module's Java and Groovy sources need to be compiled together
|
|
|
|
compileJava.enabled=false
|
|
|
|
sourceSets {
|
|
|
|
main {
|
|
|
|
groovy {
|
|
|
|
srcDir "src/main/java"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
compileGroovy {
|
|
|
|
sourceCompatibility=1.6
|
|
|
|
targetCompatibility=1.6
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-aop") {
|
|
|
|
description = "Spring AOP"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(files(project(":spring-core").cglibRepackJar))
|
|
|
|
compile(files(project(":spring-core").objenesisRepackJar))
|
|
|
|
compile("aopalliance:aopalliance:1.0")
|
|
|
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
|
|
|
|
optional("commons-pool:commons-pool:1.6")
|
|
|
|
optional("com.jamonapi:jamon:2.4")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-expression") {
|
|
|
|
description = "Spring Expression Language (SpEL)"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-instrument") {
|
|
|
|
description = "Spring Instrument"
|
|
|
|
|
|
|
|
jar {
|
|
|
|
manifest.attributes["Premain-Class"] =
|
|
|
|
"org.springframework.instrument.InstrumentationSavingAgent"
|
|
|
|
manifest.attributes["Agent-Class"] =
|
|
|
|
"org.springframework.instrument.InstrumentationSavingAgent"
|
|
|
|
manifest.attributes["Can-Redefine-Classes"] = "true"
|
|
|
|
manifest.attributes["Can-Retransform-Classes"] = "true"
|
|
|
|
manifest.attributes["Can-Set-Native-Method-Prefix"] = "false"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-instrument-tomcat") {
|
|
|
|
description = "Spring Instrument Tomcat"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
provided("org.apache.tomcat:catalina:6.0.16")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-context") {
|
|
|
|
description = "Spring Context"
|
|
|
|
apply plugin: "groovy"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-aop"))
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-expression"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(files(project(":spring-core").cglibRepackJar))
|
|
|
|
optional(project(":spring-instrument"))
|
|
|
|
optional("javax.inject:javax.inject:1")
|
|
|
|
optional("javax.ejb:ejb-api:3.0")
|
|
|
|
optional("javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0")
|
|
|
|
optional("org.eclipse.persistence:javax.persistence:2.0.0")
|
|
|
|
optional("javax.validation:validation-api:1.0.0.GA")
|
|
|
|
optional("org.hibernate:hibernate-validator:${hibVal4Version}")
|
|
|
|
optional("joda-time:joda-time:${jodaVersion}")
|
|
|
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
|
|
|
|
optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
|
|
|
|
optional("org.beanshell:bsh:2.0b4")
|
|
|
|
optional("org.jruby:jruby:1.7.12")
|
|
|
|
testCompile("javax.inject:javax.inject-tck:1")
|
|
|
|
testCompile("commons-dbcp:commons-dbcp:1.4")
|
|
|
|
testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
|
|
|
|
}
|
|
|
|
|
|
|
|
// pick up RmiInvocationWrapperRTD.xml in src/main
|
|
|
|
sourceSets.main.resources.srcDirs += "src/main/java"
|
|
|
|
|
|
|
|
test {
|
|
|
|
jvmArgs = ["-disableassertions:org.aspectj.weaver.UnresolvedType"] // SPR-7989
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-messaging") {
|
|
|
|
description = "Spring Messaging"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(project(":spring-context"))
|
|
|
|
optional("org.projectreactor:reactor-core:1.1.0.RELEASE")
|
|
|
|
optional("org.projectreactor:reactor-net:1.1.0.RELEASE")
|
|
|
|
optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") {
|
|
|
|
exclude group: "javax.servlet", module: "javax.servlet-api"
|
|
|
|
}
|
|
|
|
optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}")
|
|
|
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
|
|
|
|
testCompile(project(":spring-test"))
|
|
|
|
testCompile("javax.inject:javax.inject-tck:1")
|
|
|
|
testCompile("javax.servlet:javax.servlet-api:3.1.0")
|
|
|
|
testCompile("javax.validation:validation-api:1.0.0.GA")
|
|
|
|
testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
|
|
|
|
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")
|
|
|
|
testCompile("org.eclipse.jetty:jetty-webapp:${jettyVersion}") {
|
|
|
|
exclude group: "javax.servlet", module: "javax.servlet-api"
|
|
|
|
}
|
|
|
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}")
|
|
|
|
testCompile("org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}")
|
|
|
|
testCompile("org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}")
|
|
|
|
testCompile("commons-dbcp:commons-dbcp:1.4")
|
|
|
|
testCompile("log4j:log4j:1.2.17")
|
|
|
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-tx") {
|
|
|
|
description = "Spring Transaction"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
optional(project(":spring-aop"))
|
|
|
|
optional(project(":spring-context")) // for JCA, @EnableTransactionManagement
|
|
|
|
optional("aopalliance:aopalliance:1.0")
|
|
|
|
optional("javax.transaction:javax.transaction-api:1.2")
|
|
|
|
optional("javax.resource:connector-api:1.5")
|
|
|
|
optional("javax.ejb:ejb-api:3.0")
|
|
|
|
optional("com.ibm.websphere:uow:6.0.2.17")
|
|
|
|
testCompile("org.aspectj:aspectjweaver:${aspectjVersion}")
|
|
|
|
testCompile("org.eclipse.persistence:javax.persistence:2.0.0")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-oxm") {
|
|
|
|
description = "Spring Object/XML Marshalling"
|
|
|
|
apply from: "oxm.gradle"
|
|
|
|
|
|
|
|
compileTestJava {
|
|
|
|
// necessary to avoid java.lang.VerifyError on jibx compilation
|
|
|
|
// see http://jira.codehaus.org/browse/JIBX-465
|
|
|
|
sourceCompatibility=1.6
|
|
|
|
targetCompatibility=1.6
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
optional("org.codehaus.castor:castor-xml:1.3.3") {
|
|
|
|
exclude group: 'stax', module: 'stax-api'
|
|
|
|
exclude group: "org.springframework", module: "spring-context"
|
|
|
|
}
|
|
|
|
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'
|
|
|
|
}
|
|
|
|
optional("org.jibx:jibx-run:1.2.5")
|
|
|
|
testCompile(project(":spring-context"))
|
|
|
|
testCompile("xmlunit:xmlunit:1.5")
|
|
|
|
testCompile("xpp3:xpp3:1.1.3.4.O")
|
|
|
|
testCompile("org.codehaus.jettison:jettison:1.0.1") {
|
|
|
|
exclude group: 'stax', module: 'stax-api'
|
|
|
|
}
|
|
|
|
testCompile(files(genCastor.classesDir).builtBy(genCastor))
|
|
|
|
testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
|
|
|
|
testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-jms") {
|
|
|
|
description = "Spring JMS"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-aop"))
|
|
|
|
compile(project(":spring-context"))
|
|
|
|
compile(project(":spring-messaging"))
|
|
|
|
compile(project(":spring-tx"))
|
|
|
|
provided("javax.jms:jms-api:1.1-rev-1")
|
|
|
|
optional(project(":spring-oxm"))
|
|
|
|
optional("aopalliance:aopalliance:1.0")
|
|
|
|
optional("javax.transaction:javax.transaction-api:1.2")
|
|
|
|
optional("javax.resource:connector-api:1.5")
|
|
|
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-jdbc") {
|
|
|
|
description = "Spring JDBC"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(project(":spring-tx"))
|
|
|
|
optional(project(":spring-context")) // for JndiDataSourceLookup
|
|
|
|
optional("javax.transaction:javax.transaction-api:1.2")
|
|
|
|
optional("com.mchange:c3p0:0.9.2.1")
|
|
|
|
optional("org.hsqldb:hsqldb:${hsqldbVersion}")
|
|
|
|
optional("com.h2database:h2:1.3.176")
|
|
|
|
optional("org.apache.derby:derby:10.10.2.0")
|
|
|
|
optional("org.apache.derby:derbyclient:10.10.2.0")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-context-support") {
|
|
|
|
description = "Spring Context Support"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-context"))
|
|
|
|
optional(project(":spring-jdbc")) // for Quartz support
|
|
|
|
optional(project(":spring-tx")) // for Quartz support
|
|
|
|
optional("javax.mail:javax.mail-api:1.4.7")
|
|
|
|
optional("javax.cache:cache-api:1.0.0")
|
|
|
|
optional("com.google.guava:guava:17.0")
|
|
|
|
optional("net.sf.ehcache:ehcache-core:2.6.5")
|
|
|
|
optional("org.quartz-scheduler:quartz:2.1.7")
|
|
|
|
optional("org.codehaus.fabric3.api:commonj:1.1.0")
|
|
|
|
optional("org.apache.velocity:velocity:1.7")
|
|
|
|
optional("org.freemarker:freemarker:2.3.20")
|
|
|
|
optional("com.lowagie:itext:2.1.7")
|
|
|
|
optional("net.sf.jasperreports:jasperreports:$jasperReportsVersion") {
|
|
|
|
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"
|
|
|
|
}
|
|
|
|
testCompile("org.apache.poi:poi:3.10-FINAL")
|
|
|
|
testCompile("commons-beanutils:commons-beanutils:1.8.0") // for Velocity/JasperReports
|
|
|
|
testCompile("commons-digester:commons-digester:1.8.1") // for Velocity/JasperReports
|
|
|
|
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
|
|
|
|
testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
|
|
|
|
testRuntime("com.sun.mail:javax.mail:1.4.7")
|
|
|
|
}
|
|
|
|
|
|
|
|
// pick up **/*.types files in src/main
|
|
|
|
sourceSets.main.resources.srcDirs += "src/main/java"
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-web") {
|
|
|
|
description = "Spring Web"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-aop")) // for JaxWsPortProxyFactoryBean
|
|
|
|
compile(project(":spring-beans")) // for MultiPartFilter
|
|
|
|
compile(project(":spring-context"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
provided("javax.servlet:javax.servlet-api:3.0.1")
|
|
|
|
optional(project(":spring-oxm")) // for MarshallingHttpMessageConverter
|
|
|
|
optional("javax.servlet.jsp:javax.servlet.jsp-api:2.2.1")
|
|
|
|
optional("javax.portlet:portlet-api:2.0")
|
|
|
|
optional("javax.el:javax.el-api:2.2.4")
|
|
|
|
optional("javax.faces:javax.faces-api:2.2")
|
|
|
|
optional("aopalliance:aopalliance:1.0")
|
|
|
|
optional("com.caucho:hessian:4.0.38")
|
|
|
|
optional("commons-fileupload:commons-fileupload:1.3.1")
|
|
|
|
optional("org.apache.httpcomponents:httpclient:4.3.3")
|
|
|
|
optional("org.apache.httpcomponents:httpasyncclient:4.0.1")
|
|
|
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
|
|
|
|
optional("rome:rome:1.0")
|
|
|
|
optional("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
|
|
|
|
exclude group: "javax.servlet", module: "javax.servlet-api"
|
|
|
|
}
|
|
|
|
optional("org.eclipse.jetty:jetty-server:${jettyVersion}") {
|
|
|
|
exclude group: "javax.servlet", module: "javax.servlet-api"
|
|
|
|
}
|
|
|
|
optional("log4j:log4j:1.2.17")
|
|
|
|
testCompile(project(":spring-context-support")) // for JafMediaTypeFactory
|
|
|
|
testCompile("xmlunit:xmlunit:1.5")
|
|
|
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
|
|
|
|
testCompile("org.apache.taglibs:taglibs-standard-jstlel:1.2.1") {
|
|
|
|
exclude group: "org.apache.taglibs", module: "taglibs-standard-spec"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// pick up ContextLoader.properties in src/main
|
|
|
|
sourceSets.main.resources.srcDirs += "src/main/java"
|
|
|
|
}
|
|
|
|
|
|
|
|
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-websocket-core:1.2.1")
|
|
|
|
optional("org.glassfish.tyrus:tyrus-container-servlet:1.2.1")
|
|
|
|
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("io.undertow:undertow-core:1.0.1.Final")
|
|
|
|
optional("io.undertow:undertow-servlet:1.0.1.Final") {
|
|
|
|
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:1.0.1.Final") {
|
|
|
|
exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.0_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("org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}")
|
|
|
|
testCompile("org.projectreactor:reactor-core:1.1.0.RELEASE")
|
|
|
|
testCompile("org.projectreactor:reactor-net:1.1.0.RELEASE")
|
|
|
|
testCompile("log4j:log4j:1.2.17")
|
|
|
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-orm") {
|
|
|
|
description = "Spring Object/Relational Mapping"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(project(":spring-jdbc"))
|
|
|
|
compile(project(":spring-tx"))
|
|
|
|
optional(project(":spring-aop"))
|
|
|
|
optional(project(":spring-context"))
|
|
|
|
optional(project(":spring-web"))
|
|
|
|
optional("aopalliance:aopalliance:1.0")
|
|
|
|
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") {
|
|
|
|
exclude group: 'org.eclipse.persistence', module: 'javax.persistence'
|
|
|
|
}
|
|
|
|
optional("org.hibernate:hibernate-core:${hibernate3Version}") {
|
|
|
|
exclude group: 'org.hibernate.javax.persistence', module: 'hibernate-jpa-2.0-api'
|
|
|
|
exclude group: 'javax.transaction', module: 'jta'
|
|
|
|
}
|
|
|
|
optional("org.hibernate:hibernate-entitymanager:${hibernate3Version}") {
|
|
|
|
exclude group: 'org.hibernate.javax.persistence', module: 'hibernate-jpa-2.0-api'
|
|
|
|
}
|
|
|
|
optional("org.apache.openjpa:openjpa:2.2.1") {
|
|
|
|
exclude group: 'junit', module: 'junit'
|
|
|
|
exclude group: 'org.apache.geronimo.specs', module: 'geronimo-jpa_2.0_spec'
|
|
|
|
exclude group: 'org.apache.geronimo.specs', module: 'geronimo-jta_1.1_spec'
|
|
|
|
exclude group: 'org.apache.geronimo.specs', module: 'geronimo-jms_1.1_spec'
|
|
|
|
}
|
|
|
|
optional("javax.jdo:jdo-api:3.0") {
|
|
|
|
exclude group: 'javax.transaction', module: 'transaction-api'
|
|
|
|
}
|
|
|
|
optional("javax.servlet:javax.servlet-api:3.0.1")
|
|
|
|
testCompile("commons-dbcp:commons-dbcp:1.4")
|
|
|
|
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
|
|
|
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-orm-hibernate4") {
|
|
|
|
description = "Spring Object/Relational Mapping - Hibernate 4 support"
|
|
|
|
merge.into = project(":spring-orm")
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
provided(project(":spring-jdbc"))
|
|
|
|
provided(project(":spring-tx"))
|
|
|
|
optional(project(":spring-web"))
|
|
|
|
optional("org.hibernate:hibernate-core:${hibernate4Version}")
|
|
|
|
optional("org.hibernate:hibernate-entitymanager:${hibernate4Version}")
|
|
|
|
optional("javax.servlet:javax.servlet-api:3.0.1")
|
|
|
|
optional("aopalliance:aopalliance:1.0")
|
|
|
|
testCompile("javax.validation:validation-api:1.1.0.GA")
|
|
|
|
testCompile("org.hibernate:hibernate-validator:${hibVal5Version}")
|
|
|
|
testCompile("javax.el:javax.el-api:2.2.4")
|
|
|
|
testCompile("org.glassfish.web:javax.el:2.2.4")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-webmvc") {
|
|
|
|
description = "Spring Web MVC"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-context"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(files(project(":spring-core").objenesisRepackJar))
|
|
|
|
compile(project(":spring-expression"))
|
|
|
|
compile(project(":spring-web"))
|
|
|
|
provided("javax.servlet:javax.servlet-api:3.0.1")
|
|
|
|
optional(project(":spring-context-support")) // for Velocity support
|
|
|
|
optional(project(":spring-oxm")) // for MarshallingView
|
|
|
|
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("net.sourceforge.jexcelapi:jxl:2.6.12")
|
|
|
|
optional("org.apache.poi:poi:3.10-FINAL")
|
|
|
|
optional("org.apache.velocity:velocity:1.7")
|
|
|
|
optional("velocity-tools:velocity-tools-view:1.4")
|
|
|
|
optional("org.freemarker:freemarker:2.3.20")
|
|
|
|
optional("com.lowagie:itext:2.1.7")
|
|
|
|
optional("net.sf.jasperreports:jasperreports:$jasperReportsVersion") {
|
|
|
|
exclude group: "xml-apis", module: "xml-apis"
|
|
|
|
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"
|
|
|
|
}
|
|
|
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
|
|
|
|
optional("rome:rome:1.0")
|
|
|
|
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(project(":spring-aop"))
|
|
|
|
testCompile("rhino:js:1.7R1")
|
|
|
|
testCompile("xmlunit:xmlunit:1.5")
|
|
|
|
testCompile("dom4j:dom4j:1.6.1") {
|
|
|
|
exclude group: "xml-apis", module: "xml-apis"
|
|
|
|
}
|
|
|
|
testCompile("jaxen:jaxen:1.1.1") {
|
|
|
|
exclude group: "xml-apis", module: "xml-apis"
|
|
|
|
exclude group: "xom", module: "xom"
|
|
|
|
exclude group: "xerces", module: "xercesImpl"
|
|
|
|
}
|
|
|
|
testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") {
|
|
|
|
exclude group: "javax.servlet", module: "javax.servlet"
|
|
|
|
}
|
|
|
|
testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") {
|
|
|
|
exclude group: "javax.servlet", module: "javax.servlet"
|
|
|
|
}
|
|
|
|
testCompile("javax.validation:validation-api:1.0.0.GA")
|
|
|
|
testCompile("org.hibernate:hibernate-validator:${hibVal4Version}")
|
|
|
|
testCompile("org.apache.httpcomponents:httpclient:4.3.3")
|
|
|
|
testCompile("commons-fileupload:commons-fileupload:1.3.1")
|
|
|
|
testCompile("commons-io:commons-io:1.3")
|
|
|
|
testCompile("joda-time:joda-time:${jodaVersion}")
|
|
|
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
|
|
|
|
}
|
|
|
|
|
|
|
|
// pick up DispatcherServlet.properties in src/main
|
|
|
|
sourceSets.main.resources.srcDirs += "src/main/java"
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-webmvc-tiles3") {
|
|
|
|
description = "Spring Framework Tiles3 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("javax.el:javax.el-api:2.2.4")
|
|
|
|
optional("org.apache.tiles:tiles-api:${tiles3Version}")
|
|
|
|
optional("org.apache.tiles:tiles-core:${tiles3Version}") {
|
|
|
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
|
|
|
}
|
|
|
|
optional("org.apache.tiles:tiles-servlet:${tiles3Version}") {
|
|
|
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
|
|
|
}
|
|
|
|
optional("org.apache.tiles:tiles-jsp:${tiles3Version}") {
|
|
|
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
|
|
|
}
|
|
|
|
optional("org.apache.tiles:tiles-el:${tiles3Version}") {
|
|
|
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
|
|
|
}
|
|
|
|
optional("org.apache.tiles:tiles-extras:${tiles3Version}") {
|
|
|
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
|
|
|
exclude group: "org.springframework", module: "spring-web"
|
|
|
|
}
|
|
|
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-webmvc-portlet") {
|
|
|
|
description = "Spring Web Portlet"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-beans"))
|
|
|
|
compile(project(":spring-context"))
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
compile(project(":spring-web"))
|
|
|
|
compile(project(":spring-webmvc"))
|
|
|
|
provided("javax.servlet:javax.servlet-api:3.0.1")
|
|
|
|
provided("javax.portlet:portlet-api:2.0")
|
|
|
|
optional("commons-fileupload:commons-fileupload:1.3.1")
|
|
|
|
}
|
|
|
|
|
|
|
|
// pick up DispatcherPortlet.properties in src/main
|
|
|
|
sourceSets.main.resources.srcDirs += "src/main/java"
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-test") {
|
|
|
|
description = "Spring TestContext Framework"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
compile(project(":spring-core"))
|
|
|
|
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"))
|
|
|
|
optional("junit:junit:${junitVersion}")
|
|
|
|
optional("org.testng:testng:6.8.8")
|
|
|
|
optional("javax.inject:javax.inject:1")
|
|
|
|
optional("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.taglibs:taglibs-standard-jstlel:1.2.1") {
|
|
|
|
exclude group: "org.apache.taglibs", module: "taglibs-standard-spec"
|
|
|
|
}
|
|
|
|
optional("javax.portlet:portlet-api:2.0")
|
|
|
|
optional("javax.el:javax.el-api:2.2.4")
|
|
|
|
optional("org.eclipse.persistence:javax.persistence:2.0.0")
|
|
|
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
|
|
|
|
optional("org.hamcrest:hamcrest-core:1.3")
|
|
|
|
optional("com.jayway.jsonpath:json-path:0.9.0")
|
|
|
|
optional("xmlunit:xmlunit:1.5")
|
|
|
|
testCompile(project(":spring-context-support"))
|
|
|
|
testCompile(project(":spring-oxm"))
|
|
|
|
testCompile(project(":spring-webmvc-tiles3"))
|
|
|
|
testCompile("javax.mail:javax.mail-api:1.4.7")
|
Introduce EJB-based transactional tests in the TCF
This commit introduces transactional integration tests executing
against both JUnit and TestNG in the TestContext framework (TCF) using
@TransactionAttribute in EJBs instead of Spring’s @Transactional
annotation.
These tests disprove the claims raised in SPR-6132 by demonstrating that
transaction support in the TCF works as expected when a transactional
EJB method that is configured with TransactionAttribute.REQUIRES_NEW is
invoked. Specifically:
- The transaction managed by the TCF is suspended while such an EJB
method is invoked.
- Any work performed within the new transaction for the EJB method is
committed after the method invocation completes.
- The transaction managed by the TCF is resumed and subsequently
either rolled back or committed as necessary based on the
configuration of @Rollback and @TransactionConfiguration.
The configuration for the JUnit-based tests is straightforward and self
explanatory; however, the configuration for the TestNG tests is less
intuitive.
In order for the TCF to function properly, the developer must ensure
that test methods within a given TestNG test (whether defined locally,
in a superclass, or somewhere else in the suite) are executed in the
proper order. In a stand-alone test class this is straightforward;
however, in a test class hierarchy (or test suite) with dependent
methods, it is necessary to configure TestNG so that all methods within
an individual test are executed in isolation from test methods in other
tests. This can be achieved by configuring a test class to run in its
own uniquely identified suite (e.g., by annotating each concrete
TestNG-based test class with @Test(suiteName = "< Some Unique Suite
Name >")).
For example, without specifying a unique suite name for the TestNG
tests introduced in this commit, test methods will be executed in the
following (incorrect) order:
- CommitForRequiredEjbTxDaoTestNGTests.test1InitialState()
- CommitForRequiresNewEjbTxDaoTestNGTests.test1InitialState()
- RollbackForRequiresNewEjbTxDaoTestNGTests.test1InitialState()
- RollbackForRequiredEjbTxDaoTestNGTests.test1InitialState()
- CommitForRequiredEjbTxDaoTestNGTests.test2IncrementCount1()
The reason for this ordering is that test2IncrementCount1() depends on
test1InitialState(); however, the intention of the developer is that
the tests for an individual test class are independent of those in
other test classes. So by specifying unique suite names for each test
class, the following (correct) ordering is achieved:
- RollbackForRequiresNewEjbTxDaoTestNGTests.test1InitialState()
- RollbackForRequiresNewEjbTxDaoTestNGTests.test2IncrementCount1()
- RollbackForRequiresNewEjbTxDaoTestNGTests.test3IncrementCount2()
- CommitForRequiredEjbTxDaoTestNGTests.test1InitialState()
- CommitForRequiredEjbTxDaoTestNGTests.test2IncrementCount1()
- CommitForRequiredEjbTxDaoTestNGTests.test3IncrementCount2()
- RollbackForRequiredEjbTxDaoTestNGTests.test1InitialState()
- RollbackForRequiredEjbTxDaoTestNGTests.test2IncrementCount1()
- RollbackForRequiredEjbTxDaoTestNGTests.test3IncrementCount2()
- CommitForRequiresNewEjbTxDaoTestNGTests.test1InitialState()
- CommitForRequiresNewEjbTxDaoTestNGTests.test2IncrementCount1()
- CommitForRequiresNewEjbTxDaoTestNGTests.test3IncrementCount2()
See the JIRA issue for more detailed log output.
Furthermore, @DirtiesContext(classMode = ClassMode.AFTER_CLASS) has
been used in both the JUnit and TestNG tests introduced in this commit
in order to ensure that the in-memory database is reinitialized between
each test class.
Issue: SPR-6132
11 years ago
|
|
|
testCompile("javax.ejb:ejb-api:3.0")
|
|
|
|
testCompile("org.hibernate:hibernate-core:${hibernate3Version}") {
|
|
|
|
exclude group: 'org.hibernate.javax.persistence', module: 'hibernate-jpa-2.0-api'
|
|
|
|
}
|
|
|
|
testCompile("org.hibernate:hibernate-entitymanager:${hibernate3Version}")
|
|
|
|
testCompile("org.hibernate:hibernate-validator:${hibVal4Version}")
|
|
|
|
testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}")
|
|
|
|
testCompile("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}")
|
|
|
|
testCompile("rome:rome:1.0")
|
|
|
|
testCompile("org.apache.tiles:tiles-api:${tiles3Version}")
|
|
|
|
testCompile("org.apache.tiles:tiles-core:${tiles3Version}") {
|
|
|
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
|
|
|
}
|
|
|
|
testCompile("org.apache.tiles:tiles-servlet:${tiles3Version}") {
|
|
|
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
|
|
|
}
|
|
|
|
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
|
|
|
|
testCompile "org.slf4j:slf4j-jcl:${slf4jVersion}"
|
|
|
|
}
|
|
|
|
|
|
|
|
task testNG(type: Test) {
|
|
|
|
useTestNG()
|
|
|
|
scanForTestClasses = false
|
|
|
|
include(["**/testng/**/*Tests.class", "**/testng/**/*Test.class"])
|
|
|
|
// Show STD_OUT & STD_ERR of the test JVM(s) on the console:
|
|
|
|
// testLogging.showStandardStreams = true
|
|
|
|
// forkEvery 1
|
|
|
|
}
|
|
|
|
|
|
|
|
test {
|
|
|
|
dependsOn testNG
|
|
|
|
useJUnit()
|
|
|
|
exclude "**/testng/**/*.*"
|
|
|
|
}
|
|
|
|
|
|
|
|
task aggregateTestReports(type: TestReport) {
|
|
|
|
destinationDir = test.reports.html.destination
|
|
|
|
reportOn test, testNG
|
|
|
|
}
|
|
|
|
|
|
|
|
check.dependsOn aggregateTestReports
|
|
|
|
}
|
|
|
|
|
|
|
|
project("spring-aspects") {
|
|
|
|
description = "Spring Aspects"
|
|
|
|
apply from: "aspects.gradle"
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
aspects(project(":spring-orm"))
|
|
|
|
ajc("org.aspectj:aspectjtools:${aspectjVersion}")
|
|
|
|
rt("org.aspectj:aspectjrt:${aspectjVersion}")
|
|
|
|
compile("org.aspectj:aspectjweaver:${aspectjVersion}") // exposing regular AspectJ version to users
|
|
|
|
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 and JSR-107 support
|
|
|
|
optional(project(":spring-orm")) // for JPA exception translation support
|
|
|
|
optional(project(":spring-tx")) // for JPA, @Transactional support
|
|
|
|
optional("javax.cache:cache-api:1.0.0")
|
|
|
|
testCompile(project(":spring-core")) // for CodeStyleAspect
|
|
|
|
testCompile(project(":spring-test"))
|
|
|
|
testCompile("javax.mail:javax.mail-api:1.4.7")
|
|
|
|
}
|
|
|
|
|
|
|
|
eclipse.project {
|
|
|
|
natures += "org.eclipse.ajdt.ui.ajnature"
|
|
|
|
buildCommands = [new org.gradle.plugins.ide.eclipse.model.
|
|
|
|
BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
configure(rootProject) {
|
|
|
|
description = "Spring Framework"
|
|
|
|
|
|
|
|
apply plugin: "asciidoctor"
|
|
|
|
apply plugin: "docbook-reference"
|
|
|
|
apply plugin: "groovy"
|
|
|
|
|
|
|
|
// apply plugin: "detect-split-packages"
|
|
|
|
apply from: "${gradleScriptDir}/jdiff.gradle"
|
|
|
|
|
|
|
|
asciidoctor {
|
|
|
|
baseDir = project.file('src/asciidoc')
|
|
|
|
backend = 'docbook5'
|
|
|
|
options = [
|
|
|
|
eruby: 'erubis',
|
|
|
|
attributes: [
|
|
|
|
doctype: 'book',
|
|
|
|
'spring-version' : project.version,
|
|
|
|
revnumber : project.version,
|
|
|
|
docinfo : ""
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
reference {
|
|
|
|
sourceDir = asciidoctor.outputDir
|
|
|
|
pdfFilename = "spring-framework-reference.pdf"
|
|
|
|
expandPlaceholders = ""
|
|
|
|
}
|
|
|
|
|
|
|
|
afterEvaluate {
|
|
|
|
tasks.findAll { it.name.startsWith("reference") }.each{ it.dependsOn.add("asciidoctor") }
|
|
|
|
}
|
|
|
|
|
|
|
|
// 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")
|
|
|
|
// }
|
|
|
|
|
|
|
|
// don't publish the default jar for the root project
|
|
|
|
configurations.archives.artifacts.clear()
|
|
|
|
|
|
|
|
dependencies { // for integration tests
|
|
|
|
testCompile(project(":spring-aop"))
|
|
|
|
testCompile(project(":spring-beans"))
|
|
|
|
testCompile(project(":spring-context"))
|
|
|
|
testCompile(project(":spring-core"))
|
|
|
|
testCompile(project(":spring-expression"))
|
|
|
|
testCompile(project(":spring-jdbc"))
|
|
|
|
testCompile(project(":spring-orm"))
|
|
|
|
testCompile(project(":spring-test"))
|
|
|
|
testCompile(project(":spring-tx"))
|
|
|
|
testCompile(project(":spring-web"))
|
|
|
|
testCompile(project(":spring-webmvc-portlet"))
|
|
|
|
testCompile("javax.servlet:javax.servlet-api:3.0.1")
|
|
|
|
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("org.hibernate:hibernate-core:${hibernate4Version}")
|
|
|
|
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}")
|
|
|
|
}
|
|
|
|
|
|
|
|
task api(type: Javadoc) {
|
|
|
|
group = "Documentation"
|
|
|
|
description = "Generates aggregated Javadoc API documentation."
|
|
|
|
title = "${rootProject.description} ${version} API"
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
|
|
|
|
dependsOn {
|
|
|
|
subprojects.collect {
|
|
|
|
it.tasks.getByName("jar")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED
|
|
|
|
options.author = true
|
|
|
|
options.header = rootProject.description
|
|
|
|
options.overview = "src/api/overview.html"
|
|
|
|
options.stylesheetFile = file("src/api/stylesheet.css")
|
|
|
|
options.splitIndex = true
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
options.links(project.ext.javadocLinks)
|
|
|
|
options.addStringOption('Xdoclint:none', '-quiet')
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
|
|
|
|
source subprojects.collect { project ->
|
|
|
|
project.sourceSets.main.allJava
|
|
|
|
}
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
|
|
|
|
maxMemory = "1024m"
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
destinationDir = new File(buildDir, "api")
|
|
|
|
|
|
|
|
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 })
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
task docsZip(type: Zip, dependsOn: 'reference') {
|
|
|
|
group = "Distribution"
|
|
|
|
baseName = "spring-framework"
|
|
|
|
classifier = "docs"
|
|
|
|
description = "Builds -${classifier} archive containing api and reference " +
|
|
|
|
"for deployment at http://static.springframework.org/spring-framework/docs."
|
|
|
|
|
|
|
|
from("src/dist") {
|
|
|
|
include "changelog.txt"
|
|
|
|
}
|
|
|
|
|
|
|
|
from (api) {
|
|
|
|
into "javadoc-api"
|
|
|
|
}
|
|
|
|
|
|
|
|
from (reference) {
|
|
|
|
into "spring-framework-reference"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
task schemaZip(type: Zip) {
|
|
|
|
group = "Distribution"
|
|
|
|
baseName = "spring-framework"
|
|
|
|
classifier = "schema"
|
|
|
|
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 {
|
|
|
|
it.path.endsWith("META-INF/spring.schemas")
|
|
|
|
}?.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]) {
|
|
|
|
group = "Distribution"
|
|
|
|
baseName = "spring-framework"
|
|
|
|
classifier = "dist"
|
|
|
|
description = "Builds -${classifier} archive, containing all jars and docs, " +
|
|
|
|
"suitable for community download page."
|
|
|
|
|
|
|
|
ext.baseDir = "${baseName}-${project.version}";
|
|
|
|
|
|
|
|
from("src/dist") {
|
|
|
|
include "readme.txt"
|
|
|
|
include "license.txt"
|
|
|
|
include "notice.txt"
|
|
|
|
into "${baseDir}"
|
|
|
|
expand(copyright: new Date().format("yyyy"), version: project.version)
|
|
|
|
}
|
|
|
|
|
|
|
|
from(zipTree(docsZip.archivePath)) {
|
|
|
|
into "${baseDir}/docs"
|
|
|
|
}
|
|
|
|
|
|
|
|
from(zipTree(schemaZip.archivePath)) {
|
|
|
|
into "${baseDir}/schema"
|
|
|
|
}
|
|
|
|
|
|
|
|
subprojects.each { subproject ->
|
|
|
|
into ("${baseDir}/libs") {
|
|
|
|
from subproject.jar
|
|
|
|
if (subproject.tasks.findByPath("sourcesJar")) {
|
|
|
|
from subproject.sourcesJar
|
|
|
|
}
|
|
|
|
if (subproject.tasks.findByPath("javadocJar")) {
|
|
|
|
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 ->
|
|
|
|
group = "Distribution"
|
|
|
|
baseName = "spring-framework"
|
|
|
|
classifier = "dist-with-deps"
|
|
|
|
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 ->
|
|
|
|
(subproject.configurations.runtime.resolvedConfiguration.resolvedArtifacts +
|
|
|
|
subproject.configurations.optional.resolvedConfiguration.resolvedArtifacts).each { artifact ->
|
|
|
|
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) {
|
|
|
|
description = "Generates gradlew[.bat] scripts"
|
|
|
|
gradleVersion = "1.12"
|
|
|
|
|
|
|
|
doLast() {
|
|
|
|
def gradleOpts = "-XX:MaxMetaspaceSize=1024m -Xmx1024m"
|
|
|
|
def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m"
|
|
|
|
File wrapperFile = file("gradlew")
|
|
|
|
wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=",
|
|
|
|
"GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=")
|
|
|
|
File wrapperBatFile = file("gradlew.bat")
|
|
|
|
wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=",
|
|
|
|
"set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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-")) {
|
|
|
|
return version.replace('BUILD', qualifier)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return version
|
|
|
|
}
|