You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1527 lines
56 KiB
1527 lines
56 KiB
buildscript { |
|
repositories { |
|
maven { url "https://repo.spring.io/plugins-release" } |
|
} |
|
dependencies { |
|
classpath("io.spring.gradle:dependency-management-plugin:1.0.0.RELEASE") |
|
classpath("io.spring.gradle:propdeps-plugin:0.0.8") |
|
classpath("io.spring.gradle:docbook-reference-plugin:0.3.1") |
|
classpath("org.asciidoctor:asciidoctor-gradle-plugin:1.5.3") |
|
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") |
|
} |
|
} |
|
|
|
plugins { |
|
id "org.sonarqube" version "2.2.1" |
|
} |
|
|
|
ext { |
|
linkHomepage = 'https://projects.spring.io/spring-framework' |
|
linkCi = 'https://build.spring.io/browse/SPR' |
|
linkIssue = 'https://jira.spring.io/browse/SPR' |
|
linkScmUrl = 'https://github.com/spring-projects/spring-framework' |
|
linkScmConnection = 'scm:git:git://github.com/spring-projects/spring-framework.git' |
|
linkScmDevConnection = 'scm:git:ssh://git@github.com:spring-projects/spring-framework.git' |
|
|
|
moduleProjects = subprojects.findAll { |
|
!it.name.equals('spring-build-src') && !it.name.equals('spring-framework-bom') |
|
} |
|
} |
|
|
|
configure(allprojects) { project -> |
|
group = "org.springframework" |
|
version = qualifyVersionIfNecessary(version) |
|
|
|
ext.activationApiVersion = "1.1.1" |
|
ext.annotationApiVersion = "1.2" |
|
ext.aspectjVersion = "1.9.0.BETA-5" |
|
ext.beanvalVersion = "1.1.0.Final" |
|
ext.cacheApiVersion = "1.0.0" |
|
ext.caffeineVersion = "2.4.0" |
|
ext.eclipselinkVersion = "2.6.4" |
|
ext.ehcacheVersion = "2.10.3" |
|
ext.ehcachejcacheVersion = "1.0.1" |
|
ext.ehcache3Version = "3.3.0" |
|
ext.ejbApiVersion = "3.2" |
|
ext.elApiVersion = "3.0.1-b04" |
|
ext.fileuploadVersion = "1.3.2" |
|
ext.freemarkerVersion = "2.3.25-incubating" |
|
ext.groovyVersion = "2.4.9" |
|
ext.gsonVersion = "2.8.0" |
|
ext.hamcrestVersion = "1.3" |
|
ext.hibernate5Version = "5.2.8.Final" |
|
ext.hibval5Version = "5.4.0.Final" |
|
ext.hsqldbVersion = "2.3.4" |
|
ext.httpasyncVersion = "4.1.3" |
|
ext.httpclientVersion = "4.5.3" |
|
ext.interceptorApiVersion = "1.2" |
|
ext.jackson2Version = "2.9.0.pr1" |
|
ext.javamailVersion = "1.5.6" |
|
ext.jaxbVersion = "2.2.11" |
|
ext.jaxwsVersion = "2.2.11" |
|
ext.jcaVersion = "1.7" |
|
ext.jettyVersion = "9.4.2.v20170220" |
|
ext.jmsVersion = "2.0.1" |
|
ext.jodaVersion = "2.9.7" |
|
ext.jpaVersion = "2.1.1" |
|
ext.jsfVersion = "2.2" |
|
ext.jspVersion = "2.3.2-b02" |
|
ext.jtaVersion = "1.2" |
|
ext.junitVersion = "4.12" |
|
ext.junitJupiterVersion = '5.0.0-M3' |
|
ext.junitPlatformVersion = '1.0.0-M3' |
|
ext.kotlinVersion = "1.1.0" // also change kotlin-gradle-plugin version when upgrading |
|
ext.log4jVersion = '2.8.1' |
|
ext.nettyVersion = "4.1.8.Final" |
|
ext.okhttp3Version = "3.6.0" |
|
ext.poiVersion = "3.15" |
|
ext.protobufVersion = "3.2.0" |
|
ext.quartzVersion = "2.2.3" |
|
ext.reactorVersion = "Aluminium-SR1" |
|
ext.romeVersion = "1.7.1" |
|
ext.rxjavaVersion = '1.2.7' |
|
ext.rxjavaAdapterVersion = '1.2.1' |
|
ext.rxjava2Version = '2.0.7' |
|
ext.rxnettyVersion = '0.5.2' |
|
ext.servletVersion = "3.1.0" |
|
ext.slf4jVersion = "1.7.24" |
|
ext.snakeyamlVersion = "1.18" |
|
ext.snifferVersion = "1.15" |
|
ext.testngVersion = "6.10" |
|
ext.tiles3Version = "3.0.7" |
|
ext.tomcatVersion = "8.5.11" |
|
ext.tyrusVersion = "1.13.1" |
|
ext.undertowVersion = "1.4.11.Final" |
|
ext.websocketVersion = "1.1" |
|
ext.woodstoxVersion = "5.0.3" |
|
ext.xmlunitVersion = "2.3.0" |
|
ext.xnioVersion = "3.4.3.Final" |
|
ext.xstreamVersion = "1.4.9" |
|
|
|
ext.gradleScriptDir = "${rootProject.projectDir}/gradle" |
|
|
|
apply plugin: "propdeps" |
|
apply plugin: "java" |
|
apply plugin: "test-source-set-dependencies" |
|
apply from: "${gradleScriptDir}/ide.gradle" |
|
|
|
// Kotlin compiler does not support JDK 9 yet, see https://youtrack.jetbrains.com/issue/KT-14988 |
|
if (!JavaVersion.current().java9Compatible) { |
|
apply plugin: "kotlin" |
|
compileKotlin { |
|
kotlinOptions.jvmTarget = "1.8" |
|
} |
|
compileTestKotlin { |
|
kotlinOptions.jvmTarget = "1.8" |
|
} |
|
} |
|
|
|
configurations { |
|
sniffer |
|
javaApiSignature |
|
} |
|
|
|
configurations.all { |
|
// Check for updates every build |
|
resolutionStrategy.cacheChangingModulesFor 0, 'seconds' |
|
|
|
// Consistent netty version (e.g. clashes between netty-all vs netty-common) |
|
resolutionStrategy.eachDependency { DependencyResolveDetails details -> |
|
if (details.requested.group == 'io.netty') { |
|
details.useVersion nettyVersion |
|
} |
|
} |
|
} |
|
|
|
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.8 |
|
targetCompatibility = 1.8 |
|
options.encoding = 'UTF-8' |
|
} |
|
|
|
compileTestJava { |
|
sourceCompatibility = 1.8 |
|
targetCompatibility = 1.8 |
|
options.encoding = 'UTF-8' |
|
options.compilerArgs += "-parameters" |
|
} |
|
|
|
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", '**/*$*']) |
|
reports.junitXml.destination = file("$buildDir/test-results") |
|
} |
|
|
|
repositories { |
|
maven { url "https://repo.spring.io/libs-release" } |
|
maven { url "https://repo.spring.io/milestone" } |
|
} |
|
|
|
dependencies { |
|
testCompile("junit:junit:${junitVersion}") { |
|
exclude group:'org.hamcrest', module:'hamcrest-core' |
|
} |
|
testCompile("org.mockito:mockito-core:2.6.1") { |
|
exclude group:'org.hamcrest', module:'hamcrest-core' |
|
} |
|
testCompile("org.hamcrest:hamcrest-all:${hamcrestVersion}") |
|
testRuntime("org.apache.logging.log4j:log4j-core:${log4jVersion}") |
|
testRuntime("org.apache.logging.log4j:log4j-jcl:${log4jVersion}") |
|
|
|
sniffer("org.codehaus.mojo:animal-sniffer-ant-tasks:${snifferVersion}") |
|
javaApiSignature("org.codehaus.mojo.signature:java18:1.0@signature") |
|
} |
|
|
|
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 |
|
|
|
doLast { |
|
ant.taskdef( |
|
name: 'animalSniffer', |
|
classname: 'org.codehaus.mojo.animal_sniffer.ant.CheckSignatureTask', |
|
classpath: configurations.sniffer.asPath |
|
) |
|
|
|
// TODO: Animal Sniffer currently chokes on optional JDK 9 bytecode in AspectJ 1.9 beta 5 |
|
// ant.animalSniffer( |
|
// signature: "$buildDir/javaApiSignature/javaApi.signature", |
|
// classpath: sourceSets.main.compileClasspath.asPath) { |
|
// path(path: sourceSets.main.output.classesDir) |
|
// annotation(className: "org.springframework.lang.UsesSunHttpServer") |
|
// } |
|
} |
|
} |
|
|
|
ext.javadocLinks = [ |
|
"http://docs.oracle.com/javase/8/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://tiles.apache.org/tiles-request/apidocs/", |
|
"http://tiles.apache.org/framework/apidocs/", |
|
"http://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/", |
|
"http://ehcache.org/apidocs/${ehcacheVersion}", |
|
"http://ehcache.org/apidocs/${ehcache3Version}", |
|
"http://quartz-scheduler.org/api/2.2.1/", |
|
"http://fasterxml.github.io/jackson-core/javadoc/2.8/", |
|
"http://fasterxml.github.io/jackson-databind/javadoc/2.8/", |
|
"http://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.8/", |
|
"http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/" |
|
] as String[] |
|
} |
|
|
|
configure(subprojects - project(":spring-build-src")) { subproject -> |
|
apply plugin: "merge" |
|
apply from: "${gradleScriptDir}/publish-maven.gradle" |
|
apply plugin: "io.spring.dependency-management" |
|
|
|
dependencyManagement { |
|
imports { |
|
mavenBom "io.projectreactor:reactor-bom:${reactorVersion}" |
|
} |
|
resolutionStrategy { |
|
cacheChangingModulesFor 0, 'seconds' |
|
} |
|
applyMavenExclusions = false |
|
} |
|
|
|
configurations { |
|
jacoco |
|
} |
|
dependencies { |
|
jacoco("org.jacoco:org.jacoco.agent:0.7.5.201505241946:runtime") |
|
} |
|
|
|
gradle.taskGraph.whenReady {taskGraph -> |
|
if (taskGraph.hasTask(':sonarqube')) { |
|
test.jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=org.springframework.*" |
|
} |
|
} |
|
|
|
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 { |
|
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 |
|
options.links(project.ext.javadocLinks) |
|
options.addStringOption('Xdoclint:none', '-quiet') |
|
|
|
// 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.allSource |
|
// Don't include or exclude anything explicitly by default. See SPR-12085. |
|
} |
|
|
|
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.x and repackages cglib 3.2, inlining |
|
// both into the spring-core jar. cglib 3.2 itself depends on asm 5.x and is therefore |
|
// further transformed by the JarJar task to depend on org.springframework.asm; this |
|
// avoids including two different copies of asm unnecessarily. |
|
def cglibVersion = "3.2.5" |
|
def objenesisVersion = "2.5.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(files(objenesisRepackJar)) |
|
compile("commons-logging:commons-logging:1.2") |
|
optional("net.sf.jopt-simple:jopt-simple:5.0.3") |
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}") |
|
optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") |
|
optional("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}") |
|
optional("org.reactivestreams:reactive-streams") |
|
optional("io.projectreactor:reactor-core") |
|
optional "io.reactivex:rxjava:${rxjavaVersion}" |
|
optional "io.reactivex.rxjava2:rxjava:${rxjava2Version}" |
|
optional "io.reactivex:rxjava-reactive-streams:${rxjavaAdapterVersion}" |
|
optional("io.netty:netty-buffer:${nettyVersion}") |
|
testCompile("io.projectreactor.addons:reactor-test") |
|
testCompile("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}") |
|
testCompile("org.xmlunit:xmlunit-matchers:${xmlunitVersion}") |
|
testCompile("com.fasterxml.woodstox:woodstox-core:${woodstoxVersion}") { |
|
exclude group: "stax", module: "stax-api" |
|
} |
|
} |
|
|
|
jar { |
|
// Inline repackaged cglib classes directly into 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("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") |
|
optional("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}") |
|
optional("org.yaml:snakeyaml:${snakeyamlVersion}") |
|
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.8 |
|
targetCompatibility = 1.8 |
|
} |
|
} |
|
|
|
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)) |
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}") |
|
optional("org.apache.commons:commons-pool2:2.4.2") |
|
optional("com.jamonapi:jamon:2.81") |
|
} |
|
} |
|
|
|
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-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.annotation:javax.annotation-api:${annotationApiVersion}") |
|
optional("javax.xml.ws:jaxws-api:${jaxwsVersion}") |
|
optional("javax.ejb:javax.ejb-api:${ejbApiVersion}") |
|
optional("javax.interceptor:javax.interceptor-api:${interceptorApiVersion}") |
|
optional("javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0") |
|
optional("javax.money:money-api:1.0.1") |
|
optional("org.eclipse.persistence:javax.persistence:${jpaVersion}") |
|
optional("javax.validation:validation-api:${beanvalVersion}") |
|
optional("org.hibernate:hibernate-validator:${hibval5Version}") |
|
optional("joda-time:joda-time:${jodaVersion}") |
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}") |
|
optional("org.codehaus.groovy:groovy-all:${groovyVersion}") |
|
optional("org.beanshell:bsh:2.0b5") |
|
optional("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}") |
|
testCompile("org.apache.commons:commons-pool2:2.4.2") |
|
testCompile("org.slf4j:slf4j-api:${slf4jVersion}") |
|
testCompile("javax.inject:javax.inject-tck:1") |
|
testRuntime("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
testRuntime("javax.el:javax.el-api:${elApiVersion}") |
|
testRuntime("org.glassfish:javax.el:3.0.1-b08") |
|
testRuntime("org.javamoney:moneta:1.1") |
|
} |
|
} |
|
|
|
project("spring-oxm") { |
|
description = "Spring Object/XML Marshalling" |
|
apply from: "oxm.gradle" |
|
|
|
dependencies { |
|
compile(project(":spring-beans")) |
|
compile(project(":spring-core")) |
|
optional("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
optional("javax.activation:activation:${activationApiVersion}") |
|
optional("org.codehaus.castor:castor-xml:1.4.1") { |
|
exclude group: 'stax', module: 'stax-api' |
|
exclude group: "org.springframework", module: "spring-context" |
|
} |
|
optional("com.thoughtworks.xstream:xstream:${xstreamVersion}") { |
|
exclude group: 'xpp3', module: 'xpp3_min' |
|
exclude group: 'xmlpull', module: 'xmlpull' |
|
} |
|
optional("org.jibx:jibx-run:1.2.6") |
|
testCompile(project(":spring-context")) |
|
testCompile("xpp3:xpp3:1.1.4c") |
|
testCompile("org.codehaus.jettison:jettison:1.3.8") { |
|
exclude group: 'stax', module: 'stax-api' |
|
} |
|
testCompile("org.xmlunit:xmlunit-matchers:${xmlunitVersion}") |
|
testCompile(files(genCastor.classesDir).builtBy(genCastor)) |
|
testCompile(files(genJaxb.classesDir).builtBy(genJaxb)) |
|
testRuntime("xerces:xercesImpl:2.11.0") // for Castor |
|
testRuntime("com.sun.xml.bind:jaxb-core:${jaxbVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-impl:${jaxbVersion}") |
|
} |
|
} |
|
|
|
project("spring-messaging") { |
|
description = "Spring Messaging" |
|
|
|
dependencies { |
|
compile(project(":spring-beans")) |
|
compile(project(":spring-core")) |
|
compile(project(":spring-context")) |
|
optional(project(":spring-oxm")) |
|
optional("io.projectreactor:reactor-core") |
|
optional("io.projectreactor.ipc:reactor-netty") |
|
optional("io.netty:netty-all:${nettyVersion}") |
|
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}") |
|
optional("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
testCompile("javax.inject:javax.inject-tck:1") |
|
testCompile("javax.servlet:javax.servlet-api:${servletVersion}") |
|
testCompile("javax.validation:validation-api:${beanvalVersion}") |
|
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("io.netty:netty-all:${nettyVersion}") |
|
testCompile("org.xmlunit:xmlunit-matchers:${xmlunitVersion}") |
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}") |
|
testCompile("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") |
|
testCompile("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}") |
|
testRuntime("javax.activation:activation:${activationApiVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-core:${jaxbVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-impl:${jaxbVersion}") |
|
} |
|
|
|
if (JavaVersion.current().java9Compatible) { |
|
// Reactor2TcpClient's use of Netty requires access to sun.nio.ch.SelectorImpl |
|
test.jvmArgs(["--add-exports", "java.base/sun.nio.ch=ALL-UNNAMED"]) |
|
} |
|
} |
|
|
|
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("javax.transaction:javax.transaction-api:${jtaVersion}") |
|
optional("javax.resource:javax.resource-api:${jcaVersion}") |
|
optional("javax.ejb:javax.ejb-api:${ejbApiVersion}") |
|
optional("javax.interceptor:javax.interceptor-api:${interceptorApiVersion}") |
|
optional("com.ibm.websphere:uow:6.0.2.17") |
|
testCompile("org.aspectj:aspectjweaver:${aspectjVersion}") |
|
testCompile("org.eclipse.persistence:javax.persistence:${jpaVersion}") |
|
testCompile("org.codehaus.groovy:groovy-all:${groovyVersion}") |
|
} |
|
} |
|
|
|
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:javax.jms-api:${jmsVersion}") |
|
optional(project(":spring-oxm")) |
|
optional("javax.transaction:javax.transaction-api:${jtaVersion}") |
|
optional("javax.resource:javax.resource-api:${jcaVersion}") |
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") |
|
testRuntime("javax.activation:activation:${activationApiVersion}") |
|
} |
|
} |
|
|
|
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:${jtaVersion}") |
|
optional("org.hsqldb:hsqldb:${hsqldbVersion}") |
|
optional("com.h2database:h2:1.4.193") |
|
optional("org.apache.derby:derby:10.13.1.1") |
|
optional("org.apache.derby:derbyclient:10.13.1.1") |
|
optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") |
|
optional("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}") |
|
} |
|
} |
|
|
|
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.activation:activation:${activationApiVersion}") |
|
optional("javax.mail:javax.mail-api:${javamailVersion}") |
|
optional("javax.cache:cache-api:${cacheApiVersion}") |
|
optional("com.github.ben-manes.caffeine:caffeine:${caffeineVersion}") |
|
optional("net.sf.ehcache:ehcache:${ehcacheVersion}") |
|
optional("org.quartz-scheduler:quartz:${quartzVersion}") |
|
optional("org.codehaus.fabric3.api:commonj:1.1.0") |
|
optional("org.freemarker:freemarker:${freemarkerVersion}") |
|
optional("com.lowagie:itext:2.1.7") |
|
testCompile(project(":spring-context")) |
|
testCompile("org.apache.poi:poi:${poiVersion}") |
|
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}") |
|
testCompile("org.slf4j:slf4j-api:${slf4jVersion}") |
|
testRuntime("com.sun.mail:javax.mail:${javamailVersion}") |
|
testRuntime("org.ehcache:jcache:${ehcachejcacheVersion}") |
|
} |
|
} |
|
|
|
project("spring-context-indexer") { |
|
description = "Spring Context Indexer" |
|
|
|
dependencies { |
|
testCompile(project(":spring-context")) |
|
testCompile("javax.inject:javax.inject:1") |
|
testCompile("javax.annotation:javax.annotation-api:${annotationApiVersion}") |
|
testCompile("org.eclipse.persistence:javax.persistence:${jpaVersion}") |
|
} |
|
} |
|
|
|
project("spring-web") { |
|
description = "Spring Web" |
|
|
|
apply plugin: "groovy" |
|
|
|
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:${servletVersion}" |
|
optional(project(":spring-oxm")) // for MarshallingHttpMessageConverter |
|
optional("javax.servlet.jsp:javax.servlet.jsp-api:${jspVersion}") |
|
optional("javax.el:javax.el-api:${elApiVersion}") |
|
optional("javax.faces:javax.faces-api:${jsfVersion}") |
|
optional("javax.validation:validation-api:${beanvalVersion}") |
|
optional("javax.activation:activation:${activationApiVersion}") |
|
optional("org.codehaus.groovy:groovy-all:${groovyVersion}") |
|
optional("com.caucho:hessian:4.0.38") |
|
optional("commons-fileupload:commons-fileupload:${fileuploadVersion}") |
|
optional("org.reactivestreams:reactive-streams") |
|
optional("io.projectreactor:reactor-core") |
|
optional("io.projectreactor.ipc:reactor-netty") |
|
optional("io.reactivex:rxnetty-http:${rxnettyVersion}") { |
|
exclude group: 'io.reactivex', module: 'rxjava' |
|
} |
|
optional("io.reactivex:rxjava:${rxjavaVersion}") |
|
optional "io.reactivex.rxjava2:rxjava:${rxjava2Version}" |
|
optional("io.reactivex:rxjava-reactive-streams:${rxjavaAdapterVersion}") |
|
optional("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}") |
|
optional("io.undertow:undertow-core:${undertowVersion}") |
|
optional("org.jboss.xnio:xnio-api:${xnioVersion}") |
|
optional("io.netty:netty-buffer:${nettyVersion}") // temporarily for JsonObjectDecoder |
|
optional("com.fasterxml.woodstox:woodstox-core:${woodstoxVersion}") { // woodstox before aalto |
|
exclude group: "stax", module: "stax-api" |
|
} |
|
optional("com.fasterxml:aalto-xml:1.0.0") |
|
optional("org.apache.httpcomponents:httpclient:${httpclientVersion}") |
|
optional("org.apache.httpcomponents:httpasyncclient:${httpasyncVersion}") |
|
optional("io.netty:netty-all:${nettyVersion}") |
|
optional("com.squareup.okhttp3:okhttp:${okhttp3Version}") |
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") |
|
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jackson2Version}") |
|
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jackson2Version}") |
|
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${jackson2Version}") |
|
optional("com.google.code.gson:gson:${gsonVersion}") |
|
optional("com.rometools:rome:${romeVersion}") |
|
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("com.google.protobuf:protobuf-java:${protobufVersion}") |
|
optional("com.google.protobuf:protobuf-java-util:${protobufVersion}") |
|
optional("com.googlecode.protobuf-java-format:protobuf-java-format:1.4") |
|
optional("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
optional("javax.xml.ws:jaxws-api:${jaxwsVersion}") |
|
optional("javax.mail:javax.mail-api:${javamailVersion}") |
|
optional("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}") |
|
testCompile(project(":spring-context-support")) // for JafMediaTypeFactory |
|
testCompile("io.projectreactor.addons:reactor-test") |
|
testCompile("org.apache.taglibs:taglibs-standard-jstlel:1.2.1") { |
|
exclude group: "org.apache.taglibs", module: "taglibs-standard-spec" |
|
} |
|
testCompile("com.fasterxml.jackson.datatype:jackson-datatype-joda:${jackson2Version}") |
|
testCompile("com.fasterxml.jackson.datatype:jackson-datatype-jdk8:${jackson2Version}") |
|
testCompile("com.fasterxml.jackson.module:jackson-module-kotlin:${jackson2Version}") |
|
testCompile("org.apache.tomcat:tomcat-util:${tomcatVersion}") |
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}") |
|
testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") |
|
testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") |
|
testCompile("com.squareup.okhttp3:mockwebserver:${okhttp3Version}") |
|
testCompile("org.xmlunit:xmlunit-matchers:${xmlunitVersion}") |
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}") |
|
testCompile("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") |
|
testRuntime("com.sun.mail:javax.mail:${javamailVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-core:${jaxbVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-impl:${jaxbVersion}") |
|
testRuntime("org.jboss.xnio:xnio-nio:${xnioVersion}") |
|
testRuntime("org.jboss.logging:jboss-logging:3.3.0.Final") |
|
} |
|
|
|
if (JavaVersion.current().java9Compatible) { |
|
// Netty4ClientHttpRequestFactory requires access to sun.nio.ch.SelectorImpl |
|
test.jvmArgs(["--add-exports", "java.base/sun.nio.ch=ALL-UNNAMED"]) |
|
} |
|
} |
|
|
|
project("spring-webflux") { |
|
description = "Spring WebFlux" |
|
|
|
dependencies { |
|
compile(project(":spring-core")) |
|
compile(project(":spring-web")) |
|
compile "org.reactivestreams:reactive-streams" |
|
compile "io.projectreactor:reactor-core" |
|
optional(project(":spring-context-support")) // for FreeMarker support |
|
provided "javax.servlet:javax.servlet-api:${servletVersion}" |
|
optional("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") |
|
optional("org.freemarker:freemarker:${freemarkerVersion}") |
|
optional "org.apache.httpcomponents:httpclient:${httpclientVersion}" |
|
optional('org.webjars:webjars-locator:0.32') |
|
optional("io.projectreactor.ipc:reactor-netty") |
|
optional("io.reactivex:rxnetty-http:${rxnettyVersion}") { |
|
exclude group: 'io.reactivex', module: 'rxjava' |
|
} |
|
optional("io.reactivex:rxjava:${rxjavaVersion}") |
|
optional("io.reactivex:rxjava-reactive-streams:${rxjavaAdapterVersion}") |
|
optional("javax.websocket:javax.websocket-api:${websocketVersion}") |
|
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.eclipse.jetty.websocket:websocket-server:${jettyVersion}") { |
|
exclude group: "javax.servlet", module: "javax.servlet" |
|
} |
|
optional("io.undertow:undertow-websockets-jsr:${undertowVersion}") { |
|
exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.1_spec" |
|
} |
|
optional("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}") |
|
optional("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlinVersion}") |
|
testCompile("io.projectreactor.addons:reactor-test") |
|
testCompile("javax.validation:validation-api:${beanvalVersion}") |
|
testCompile("org.hibernate:hibernate-validator:${hibval5Version}") |
|
testCompile("org.apache.tomcat:tomcat-util:${tomcatVersion}") |
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}") |
|
testCompile("org.eclipse.jetty:jetty-server:${jettyVersion}") |
|
testCompile("org.eclipse.jetty:jetty-servlet:${jettyVersion}") |
|
testCompile "io.reactivex.rxjava2:rxjava:${rxjava2Version}" |
|
testCompile("io.undertow:undertow-core:${undertowVersion}") |
|
testCompile("org.jboss.xnio:xnio-api:${xnioVersion}") |
|
testCompile("com.fasterxml:aalto-xml:1.0.0") |
|
testCompile("org.xmlunit:xmlunit-matchers:${xmlunitVersion}") |
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}") |
|
testCompile("com.squareup.okhttp3:mockwebserver:${okhttp3Version}") |
|
testRuntime("javax.el:javax.el-api:${elApiVersion}") |
|
testRuntime("org.glassfish:javax.el:3.0.1-b08") |
|
testRuntime("com.sun.xml.bind:jaxb-core:${jaxbVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-impl:${jaxbVersion}") |
|
testRuntime("javax.activation:activation:${activationApiVersion}") |
|
testRuntime("org.jboss.xnio:xnio-nio:${xnioVersion}") |
|
testRuntime("org.jboss.logging:jboss-logging:3.3.0.Final") |
|
testRuntime("org.webjars:underscorejs:1.8.3") |
|
testRuntime("org.jruby:jruby:9.1.8.0") |
|
testRuntime("org.python:jython-standalone:2.5.3") |
|
testRuntime("org.jetbrains.kotlin:kotlin-compiler:${kotlinVersion}") |
|
testCompile("org.jetbrains.kotlin:kotlin-script-runtime:${kotlinVersion}") |
|
testRuntime("org.jetbrains.kotlin:kotlin-script-util:${kotlinVersion}") |
|
} |
|
|
|
if (JavaVersion.current().java9Compatible) { |
|
// ReactorClientHttpConnector requires access to sun.nio.ch.SelectorImpl |
|
test.jvmArgs(["--add-exports", "java.base/sun.nio.ch=ALL-UNNAMED"]) |
|
} |
|
} |
|
|
|
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("org.eclipse.persistence:javax.persistence:${jpaVersion}") |
|
optional("org.eclipse.persistence:org.eclipse.persistence.core:${eclipselinkVersion}") |
|
optional("org.eclipse.persistence:org.eclipse.persistence.jpa:${eclipselinkVersion}") { |
|
exclude group: 'org.eclipse.persistence', module: 'javax.persistence' |
|
} |
|
optional("org.hibernate:hibernate-core:${hibernate5Version}") |
|
optional("javax.servlet:javax.servlet-api:${servletVersion}") |
|
testCompile("org.aspectj:aspectjweaver:${aspectjVersion}") |
|
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}") |
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}") |
|
testRuntime("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
} |
|
} |
|
|
|
project("spring-webmvc") { |
|
description = "Spring Web MVC" |
|
|
|
dependencies { |
|
compile(project(":spring-aop")) |
|
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:${servletVersion}") |
|
optional(project(":spring-context-support")) // for FreeMarker support |
|
optional(project(":spring-oxm")) // for MarshallingView |
|
optional("javax.servlet.jsp:javax.servlet.jsp-api:${jspVersion}") |
|
optional("javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1") |
|
optional("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
optional("org.apache.poi:poi:${poiVersion}") |
|
optional("org.apache.poi:poi-ooxml:${poiVersion}") |
|
optional("org.freemarker:freemarker:${freemarkerVersion}") |
|
optional("org.codehaus.groovy:groovy-all:${groovyVersion}") |
|
optional("com.lowagie:itext:2.1.7") |
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") |
|
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jackson2Version}") |
|
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-smile:${jackson2Version}") |
|
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${jackson2Version}") |
|
optional("com.rometools:rome:${romeVersion}") |
|
optional("javax.el:javax.el-api:${elApiVersion}") |
|
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" |
|
} |
|
optional('org.webjars:webjars-locator:0.32') |
|
testCompile("org.xmlunit:xmlunit-matchers:${xmlunitVersion}") |
|
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:${beanvalVersion}") |
|
testCompile("org.hibernate:hibernate-validator:${hibval5Version}") |
|
testCompile("org.apache.httpcomponents:httpclient:${httpclientVersion}") |
|
testCompile("commons-fileupload:commons-fileupload:${fileuploadVersion}") |
|
testCompile("commons-io:commons-io:2.5") |
|
testCompile("joda-time:joda-time:${jodaVersion}") |
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}") |
|
testCompile("org.mozilla:rhino:1.7.7.1") |
|
testRuntime("org.jruby:jruby:9.1.8.0") |
|
testRuntime("org.python:jython-standalone:2.5.3") |
|
testRuntime("org.jetbrains.kotlin:kotlin-compiler:${kotlinVersion}") |
|
testCompile("org.jetbrains.kotlin:kotlin-script-runtime:${kotlinVersion}") |
|
testRuntime("org.jetbrains.kotlin:kotlin-script-util:${kotlinVersion}") |
|
testRuntime("org.webjars:underscorejs:1.8.3") |
|
testRuntime("org.glassfish:javax.el:3.0.1-b08") |
|
testRuntime("com.sun.xml.bind:jaxb-core:${jaxbVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-impl:${jaxbVersion}") |
|
testRuntime("javax.activation:activation:${activationApiVersion}") |
|
} |
|
} |
|
|
|
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:${servletVersion}") |
|
optional("javax.websocket:javax.websocket-api:${websocketVersion}") |
|
optional("org.apache.tomcat:tomcat-websocket:${tomcatVersion}") { |
|
exclude group: "org.apache.tomcat", module: "tomcat-websocket-api" |
|
exclude group: "org.apache.tomcat", module: "tomcat-servlet-api" |
|
} |
|
optional("org.glassfish.tyrus:tyrus-spi:${tyrusVersion}") |
|
optional("org.glassfish.tyrus:tyrus-core:${tyrusVersion}") |
|
optional("org.glassfish.tyrus:tyrus-server:${tyrusVersion}") |
|
optional("org.glassfish.tyrus:tyrus-container-servlet:${tyrusVersion}") |
|
optional("org.eclipse.jetty:jetty-webapp:${jettyVersion}") { |
|
exclude group: "javax.servlet", module: "javax.servlet" |
|
} |
|
optional("org.eclipse.jetty.websocket:websocket-server:${jettyVersion}") { |
|
exclude group: "javax.servlet", module: "javax.servlet" |
|
} |
|
optional("org.eclipse.jetty.websocket:websocket-client:${jettyVersion}") |
|
optional("org.eclipse.jetty:jetty-client:${jettyVersion}") |
|
optional("io.undertow:undertow-core:${undertowVersion}") |
|
optional("io.undertow:undertow-servlet:${undertowVersion}") { |
|
exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_3.1_spec" |
|
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec" |
|
} |
|
optional("io.undertow:undertow-websockets-jsr:${undertowVersion}") { |
|
exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.1_spec" |
|
} |
|
optional("org.jboss.xnio:xnio-api:${xnioVersion}") |
|
optional("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") |
|
testCompile("org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}") |
|
testCompile("org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}") |
|
testCompile("io.projectreactor:reactor-core") |
|
testCompile("io.projectreactor.ipc:reactor-netty") |
|
testCompile("io.netty:netty-all:${nettyVersion}") |
|
testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}") |
|
testRuntime("org.jboss.xnio:xnio-nio:${xnioVersion}") |
|
testRuntime("org.jboss.logging:jboss-logging:3.3.0.Final") |
|
} |
|
|
|
if (JavaVersion.current().java9Compatible) { |
|
// Reactor2TcpClient's use of Netty requires access to sun.nio.ch.SelectorImpl |
|
test.jvmArgs(["--add-exports", "java.base/sun.nio.ch=ALL-UNNAMED"]) |
|
} |
|
} |
|
|
|
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-webflux")) |
|
optional(project(":spring-websocket")) |
|
optional("junit:junit:${junitVersion}") |
|
optional("org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}") |
|
optional("org.testng:testng:${testngVersion}") |
|
optional("javax.inject:javax.inject:1") |
|
optional("javax.servlet:javax.servlet-api:${servletVersion}") |
|
optional("javax.servlet.jsp:javax.servlet.jsp-api:${jspVersion}") |
|
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.el:javax.el-api:${elApiVersion}") |
|
optional("javax.websocket:javax.websocket-api:${websocketVersion}") |
|
optional("javax.activation:activation:${activationApiVersion}") |
|
optional("javax.xml.bind:jaxb-api:${jaxbVersion}") |
|
optional("org.aspectj:aspectjweaver:${aspectjVersion}") |
|
optional("org.codehaus.groovy:groovy-all:${groovyVersion}") |
|
optional("org.hamcrest:hamcrest-core:${hamcrestVersion}") |
|
optional("org.xmlunit:xmlunit-matchers:${xmlunitVersion}") |
|
optional("net.sourceforge.htmlunit:htmlunit:2.25") |
|
optional("org.seleniumhq.selenium:htmlunit-driver:2.25") |
|
optional("org.seleniumhq.selenium:selenium-java:3.2.0") { |
|
exclude group: "io.netty", module: "netty" |
|
} |
|
optional("org.skyscreamer:jsonassert:1.4.0") |
|
optional("com.jayway.jsonpath:json-path:2.2.0") |
|
optional("org.reactivestreams:reactive-streams") |
|
optional("io.projectreactor:reactor-core") |
|
optional("io.projectreactor.addons:reactor-test") |
|
testCompile(project(":spring-context-support")) |
|
testCompile(project(":spring-oxm")) |
|
testCompile("javax.mail:javax.mail-api:${javamailVersion}") |
|
testCompile("javax.ejb:javax.ejb-api:${ejbApiVersion}") |
|
testCompile("javax.interceptor:javax.interceptor-api:${interceptorApiVersion}") |
|
testCompile("org.hibernate:hibernate-core:${hibernate5Version}") |
|
testCompile("org.hibernate:hibernate-validator:${hibval5Version}") |
|
// Enable use of the JUnitPlatform Runner |
|
testCompile("org.junit.platform:junit-platform-runner:${junitPlatformVersion}") |
|
testCompile("com.thoughtworks.xstream:xstream:${xstreamVersion}") |
|
testCompile("com.fasterxml.jackson.core:jackson-databind:${jackson2Version}") |
|
testCompile("com.rometools:rome:${romeVersion}") |
|
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}") |
|
testCompile("org.apache.httpcomponents:httpclient:${httpclientVersion}") |
|
testCompile("javax.cache:cache-api:${cacheApiVersion}") |
|
testCompile('de.bechte.junit:junit-hierarchicalcontextrunner:4.12.1') |
|
testCompile('io.projectreactor.ipc:reactor-netty') |
|
testRuntime("org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}") |
|
testRuntime("org.apache.logging.log4j:log4j-jul:${log4jVersion}") // Java Util Logging for JUnit 5 |
|
testRuntime("org.ehcache:ehcache:${ehcache3Version}") |
|
testRuntime("org.terracotta:management-model:2.0.0") |
|
testRuntime("javax.el:javax.el-api:${elApiVersion}") |
|
testRuntime("org.glassfish:javax.el:3.0.1-b08") |
|
testRuntime("com.sun.xml.bind:jaxb-core:${jaxbVersion}") |
|
testRuntime("com.sun.xml.bind:jaxb-impl:${jaxbVersion}") |
|
} |
|
|
|
task testNG(type: Test) { |
|
description = 'Runs TestNG tests.' |
|
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 |
|
reports.junitXml.destination = file("$buildDir/test-results") |
|
} |
|
|
|
test { |
|
description = 'Runs JUnit tests.' |
|
dependsOn testNG |
|
useJUnit() |
|
scanForTestClasses = false |
|
include(['**/*Tests.class', '**/*Test.class', '**/SpringJUnitJupiterTestSuite.class']) |
|
exclude(['**/testng/**/*.*']) |
|
// Java Util Logging for JUnit 5. |
|
// systemProperty('java.util.logging.manager', 'org.apache.logging.log4j.jul.LogManager') |
|
reports.junitXml.destination = file("$buildDir/test-results") |
|
} |
|
|
|
task aggregateTestReports(type: TestReport) { |
|
description = 'Aggregates JUnit and TestNG test reports.' |
|
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}") |
|
provided("org.eclipse.persistence:javax.persistence:${jpaVersion}") |
|
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.transaction:javax.transaction-api:${jtaVersion}") // for @javax.transaction.Transactional support |
|
optional("javax.cache:cache-api:${cacheApiVersion}") |
|
testCompile(project(":spring-core")) // for CodeStyleAspect |
|
testCompile(project(":spring-test")) |
|
testCompile("javax.mail:javax.mail-api:${javamailVersion}") |
|
} |
|
|
|
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)" |
|
|
|
dependencyManagement { |
|
generatedPomCustomization { |
|
enabled = false |
|
} |
|
} |
|
|
|
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) |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
sonarqube { |
|
properties { |
|
property "sonar.projectName", "Spring Framework" |
|
property "sonar.profile", "Spring Framework" |
|
property "sonar.jacoco.reportPath", "${buildDir.name}/jacoco.exec" |
|
property "sonar.links.homepage", linkHomepage |
|
property "sonar.links.ci", linkCi |
|
property "sonar.links.issue", linkIssue |
|
property "sonar.links.scm", linkScmUrl |
|
property "sonar.links.scm_dev", linkScmDevConnection |
|
property "sonar.java.coveragePlugin", "jacoco" |
|
} |
|
} |
|
|
|
configure(rootProject) { |
|
description = "Spring Framework" |
|
|
|
apply plugin: "org.asciidoctor.convert" |
|
apply plugin: "docbook-reference" |
|
apply plugin: "groovy" |
|
apply plugin: "io.spring.dependency-management" |
|
|
|
// apply plugin: "detect-split-packages" |
|
apply from: "${gradleScriptDir}/jdiff.gradle" |
|
|
|
dependencyManagement { |
|
imports { |
|
mavenBom "io.projectreactor:reactor-bom:${reactorVersion}" |
|
} |
|
resolutionStrategy { |
|
cacheChangingModulesFor 0, 'seconds' |
|
} |
|
applyMavenExclusions = false |
|
} |
|
|
|
asciidoctor { |
|
sourceDir project.file('src/asciidoc') |
|
separateOutputDirs = false |
|
backends = ['docbook'] |
|
options doctype: 'book', eruby: 'erubis' |
|
attributes 'spring-version': project.version, 'revnumber': project.version, 'docinfo': "" |
|
} |
|
|
|
reference { |
|
sourceDir = asciidoctor.outputDir |
|
pdfFilename = "spring-framework-reference.pdf" |
|
epubFilename = "spring-framework-reference.epub" |
|
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("javax.servlet:javax.servlet-api:${servletVersion}") |
|
testCompile("javax.inject:javax.inject:1") |
|
testCompile("javax.resource:javax.resource-api:${jcaVersion}") |
|
testCompile("org.aspectj:aspectjweaver:${aspectjVersion}") |
|
testCompile("org.hibernate:hibernate-core:${hibernate5Version}") |
|
testCompile("org.hsqldb:hsqldb:${hsqldbVersion}") |
|
} |
|
|
|
task api(type: Javadoc) { |
|
group = "Documentation" |
|
description = "Generates aggregated Javadoc API documentation." |
|
title = "${rootProject.description} ${version} API" |
|
|
|
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 |
|
options.links(project.ext.javadocLinks) |
|
options.addStringOption('Xdoclint:none', '-quiet') |
|
|
|
source subprojects.collect { project -> |
|
project.sourceSets.main.allJava |
|
} |
|
|
|
maxMemory = "1024m" |
|
destinationDir = new File(buildDir, "api") |
|
|
|
doFirst { |
|
classpath = files( |
|
// 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." |
|
duplicatesStrategy 'exclude' |
|
moduleProjects.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" |
|
} |
|
|
|
moduleProjects.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 a 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 = '3.4' |
|
|
|
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=") |
|
} |
|
} |
|
|
|
} |
|
|
|
configure([project(':spring-build-src'), project(':spring-framework-bom')]) { |
|
sonarqube { |
|
skipProject = true |
|
} |
|
} |
|
|
|
configure(project(':spring-core')) { |
|
sonarqube { |
|
properties { |
|
property "sonar.exclusions", |
|
"src/main/java/org/springframework/cglib/**/*,src/main/java/org/springframework/asm/**/*" |
|
} |
|
} |
|
} |
|
|
|
/* |
|
* Copyright 2002-2016 the original author or authors. |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
/* |
|
* 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 |
|
}
|
|
|