import org.gradle.plugins.ide.eclipse.model.SourceFolder apply plugin: 'java' apply plugin: 'groovy' apply plugin: 'javadocHotfix' apply plugin: 'eclipse-wtp' apply plugin: 'propdeps' apply plugin: 'propdeps-maven' apply plugin: 'propdeps-idea' apply plugin: 'propdeps-eclipse' sourceCompatibility = 1.5 targetCompatibility = 1.5 ext.apacheDsVersion = '1.5.5' ext.aspectjVersion = '1.8.4' ext.casClientVersion = '3.3.3' ext.cglibVersion = '3.1' ext.commonsCodecVersion = '1.10' ext.commonsCollectionsVersion = '3.2.1' ext.commonsLoggingVersion = '1.2' ext.ehcacheVersion = '2.9.0' ext.gebVersion = '0.10.0' ext.groovyVersion = '2.4.4' ext.hsqlVersion = '2.3.2' ext.jacksonDatavindVersion = '2.4.4' ext.jettyVersion = '6.1.26' ext.jstlVersion = '1.2.1' ext.junitVersion = '4.11' ext.logbackVersion = '1.1.2' ext.powerMockVersion = '1.6.2' ext.seleniumVersion = '2.44.0' ext.servletApiVersion = '3.0.1' ext.slf4jVersion = '1.7.7' ext.spockVersion = '0.7-groovy-2.0' ext.springDataCommonsVersion = '1.9.1.RELEASE' ext.springDataJpaVersion = '1.7.1.RELEASE' ext.springDataRedisVersion = '1.4.1.RELEASE' ext.springSessionVersion = '1.0.0.RELEASE' ext.thymeleafVersion = '2.1.4.RELEASE' ext.spockDependencies = [ dependencies.create("org.spockframework:spock-spring:$spockVersion") { exclude group: 'junit', module: 'junit-dep' }, dependencies.create("org.spockframework:spock-core:$spockVersion") { exclude group: 'junit', module: 'junit-dep' } ] ext.gebDependencies = spockDependencies + [ "org.seleniumhq.selenium:selenium-htmlunit-driver:$seleniumVersion", "org.gebish:geb-spock:$gebVersion", 'commons-httpclient:commons-httpclient:3.1', "org.codehaus.groovy:groovy:$groovyVersion", "org.codehaus.groovy:groovy-all:$groovyVersion" ] ext.powerMockDependencies = [ "org.powermock:powermock-core:$powerMockVersion", "org.powermock:powermock-api-support:$powerMockVersion", "org.powermock:powermock-module-junit4-common:$powerMockVersion", "org.powermock:powermock-module-junit4:$powerMockVersion", dependencies.create("org.powermock:powermock-api-mockito:$powerMockVersion") { exclude group: 'org.mockito', module: 'mockito-all' }, "org.powermock:powermock-reflect:$powerMockVersion" ] ext.springCoreDependency = [ dependencies.create("org.springframework:spring-core:$springVersion") { exclude(group: 'commons-logging', module: 'commons-logging') } ] ext.jstlDependencies = [ "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:$jstlVersion", "org.apache.taglibs:taglibs-standard-jstlel:1.2.1" ] ext.apachedsDependencies = [ "org.apache.directory.server:apacheds-core:$apacheDsVersion", "org.apache.directory.server:apacheds-core-entry:$apacheDsVersion", "org.apache.directory.server:apacheds-protocol-shared:$apacheDsVersion", "org.apache.directory.server:apacheds-protocol-ldap:$apacheDsVersion", "org.apache.directory.server:apacheds-server-jndi:$apacheDsVersion", 'org.apache.directory.shared:shared-ldap:0.9.15' ] // Integration test setup configurations { integrationTestCompile { extendsFrom testCompile, optional, provided } integrationTestRuntime { extendsFrom integrationTestCompile, testRuntime } springSnapshotTestRuntime.extendsFrom testRuntime } configurations.springSnapshotTestRuntime { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if (details.requested.group == 'org.springframework') { details.useVersion 'latest.integration' } } } sourceSets { integrationTest { java.srcDir file('src/integration-test/java') groovy.srcDirs file('src/integration-test/groovy') resources.srcDir file('src/integration-test/resources') compileClasspath = sourceSets.main.output + sourceSets.test.output + configurations.integrationTestCompile runtimeClasspath = output + compileClasspath + configurations.integrationTestRuntime } } task integrationTest(type: Test, dependsOn: jar) { testClassesDir = sourceSets.integrationTest.output.classesDir logging.captureStandardOutput(LogLevel.INFO) classpath = sourceSets.integrationTest.runtimeClasspath maxParallelForks = 1 reports { html.destination = project.file("$project.buildDir/reports/integration-tests/") junitXml.destination = project.file("$project.buildDir/integration-test-results/") } } eclipse { classpath { plusConfigurations += [ configurations.integrationTestCompile ] } } project.conf2ScopeMappings.addMapping(MavenPlugin.TEST_COMPILE_PRIORITY + 1, project.configurations.getByName("integrationTestCompile"), Conf2ScopeMappingContainer.TEST) project.conf2ScopeMappings.addMapping(MavenPlugin.TEST_COMPILE_PRIORITY + 2, project.configurations.getByName("integrationTestRuntime"), Conf2ScopeMappingContainer.TEST) check.dependsOn integrationTest task springSnapshotTest(type: Test) { jvmArgs = ['-ea', '-Xmx500m', '-XX:MaxPermSize=128M'] classpath = sourceSets.test.output + sourceSets.main.output + configurations.springSnapshotTestRuntime reports { html.destination = project.file("$buildDir/spring-snapshot-test-results/") junitXml.destination = project.file("$buildDir/reports/spring-snapshot-tests/") } } check.dependsOn springSnapshotTest dependencies { optional "commons-logging:commons-logging:$commonsLoggingVersion" testCompile "junit:junit:$junitVersion", 'org.mockito:mockito-core:1.10.19', "org.springframework:spring-test:$springVersion", 'org.easytesting:fest-assert:1.4' // Use slf4j/logback for logging testRuntime "org.slf4j:jcl-over-slf4j:$slf4jVersion", "ch.qos.logback:logback-classic:$logbackVersion" } [configurations.runtime, configurations.default, configurations.testCompile]*.exclude(module: 'commons-logging') configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if (details.requested.group == 'org.slf4j') { details.useVersion slf4jVersion } } } [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' project.tasks.matching { it instanceof Test && it.name != 'integrationTest' }.all { jvmArgs = ['-ea', '-Xmx500m', '-XX:MaxPermSize=256M'] maxParallelForks = guessMaxForks() logging.captureStandardOutput(LogLevel.INFO) } def guessMaxForks() { int processors = Runtime.runtime.availableProcessors() return Math.max(2, (int) (processors / 2)) } jar { manifest.attributes["Created-By"] = 'Spring Security Team' manifest.attributes["Implementation-Title"] = project.name manifest.attributes["Implementation-Version"] = project.version manifest.attributes["Premain-Class"] = manifest.attributes["Agent-Class"] = manifest.attributes["Can-Redefine-Classes"] = "true" manifest.attributes["Can-Retransform-Classes"] = "true" manifest.attributes["Can-Set-Native-Method-Prefix"] = "false" } javadoc { title = "Spring Security $version API" source = sourceSets.main.allJava options { memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED author = true header = project.name outputLevel = org.gradle.external.javadoc.JavadocOutputLevel.QUIET links = [ "http://static.springsource.org/spring/docs/3.2.x/javadoc-api/", "http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/", "http://download.oracle.com/javase/6/docs/api/" ] groups = [ 'Spring Security Core':[ 'org.springframework.security.core*', 'org.springframework.security.authentication*', 'org.springframework.security.access*', 'org.springframework.security.remoting*', 'org.springframework.security.provisioning*', 'org.springframework.security.util*'], 'Spring Security Web':['org.springframework.security.web*'], 'Spring Security LDAP':['org.springframework.security.ldap*'], 'Spring Security Crypto':['org.springframework.security.crypto*'], 'Spring Security OpenID':['org.springframework.security.openid*'], 'Spring Security CAS':['org.springframework.security.cas*'], 'Spring Security ACL':['org.springframework.security.acls*'], 'Spring Security Config':['org.springframework.security.config*'], 'Spring Security Taglibs':['org.springframework.security.taglibs*'], ] } } eclipse.classpath.downloadSources = true // http://forums.gradle.org/gradle/topics/eclipse_wtp_deploys_testcode_to_server_example_provided eclipse.classpath { defaultOutputDir = file('bin/main') file.whenMerged { cp -> cp.entries.findAll { it instanceof SourceFolder && (it.path.contains("test") || it.path.contains("Test")) }*.output = "bin/test" } } // GRADLE-1116 project.eclipse.classpath.file.whenMerged { classpath -> classpath.entries.removeAll { entry -> entry.path.endsWith('/build/resources/test') } classpath.entries.removeAll { entry -> entry.path.endsWith('/build/classes/test') } classpath.entries.removeAll { entry -> entry.path.endsWith('/build/resources/main') } classpath.entries.removeAll { entry -> entry.path.endsWith('/build/classes/main') } } // GRADLE-1422 project.eclipseClasspath.doFirst { // delay adding whenMerged till the entryAttributes are added (must be the last whenMerged) project.eclipse.classpath.file.whenMerged { classpath -> def includeDeps = project.configurations.getByName('runtime').collect {f -> f.absolutePath } as Set classpath.entries.each { cp -> if(cp instanceof org.gradle.plugins.ide.eclipse.model.Library) { def include = includeDeps.contains(cp.path) def attr = 'org.eclipse.jst.component.dependency' if(!include) { cp.entryAttributes.remove(attr) } } } } } project.idea.module { scopes.TEST.plus += [project.configurations.integrationTestRuntime] testSourceDirs += sourceSets.integrationTest.resources.srcDirs } task javadocJar(type: Jar) { classifier = 'javadoc' from javadoc } artifacts { archives javadocJar }