import groovy.text.SimpleTemplateEngine buildscript { repositories { maven { url "http://repo.springsource.org/plugins-release" } maven { url "http://dl.bintray.com/content/aalmiray/asciidoctor" } maven { url "http://jcenter.bintray.com"} } dependencies { classpath("org.springframework.build.gradle:propdeps-plugin:0.0.3") classpath("org.springframework.build.gradle:docbook-reference-plugin:0.2.7") classpath("org.springframework.build.gradle:bundlor-plugin:0.1.2") classpath("org.gradle.api.plugins:gradle-tomcat-plugin:0.9.8") classpath("org.asciidoctor:asciidoctor-gradle-plugin:0.4.1") } } apply plugin: 'sonar-runner' apply plugin: 'base' description = 'Spring Security' allprojects { apply plugin: 'idea' apply plugin: 'eclipse' ext.releaseBuild = version.endsWith('RELEASE') ext.snapshotBuild = version.endsWith('SNAPSHOT') group = 'org.springframework.security' repositories { maven { url "http://repo.springsource.org/libs-release" } maven { url "http://repo.springsource.org/plugins-release" } } eclipse.project.name = "${project.name}-3.2.x" } sonarRunner { sonarProperties { property "sonar.java.coveragePlugin", "jacoco" property "sonar.projectName", "Spring Security" property "sonar.jacoco.reportPath", "${buildDir.name}/jacoco.exec" property "sonar.links.homepage", 'https://www.springsource.org/spring-security' property "sonar.links.ci", 'https://build.springsource.org/browse/SEC-B32X' property "sonar.links.issue", 'https://jira.springsource.org/browse/SEC' property "sonar.links.scm", 'https://github.com/SpringSource/spring-security' property "sonar.links.scm_dev", 'https://github.com/SpringSource/spring-security.git' property "sonar.java.coveragePlugin", "jacoco" } } // Set up different subproject lists for individual configuration ext.javaProjects = subprojects.findAll { project -> project.name != 'docs' && project.name != 'faq' && project.name != 'manual' && project.name != 'guides' } ext.sampleProjects = subprojects.findAll { project -> project.name.startsWith('spring-security-samples') } ext.itestProjects = subprojects.findAll { project -> project.name.startsWith('itest') } ext.coreModuleProjects = javaProjects - sampleProjects - itestProjects ext.aspectjProjects = [project(':spring-security-aspects'), project(':spring-security-samples-aspectj-xml')] configure(allprojects - javaProjects) { task afterEclipseImport { ext.srcFile = file('.classpath') inputs.file srcFile outputs.dir srcFile onlyIf { !srcFile.exists() } doLast { srcFile << """ """ } } } configure(subprojects - coreModuleProjects) { tasks.findByPath("artifactoryPublish")?.enabled = false sonarRunner { skipProject = true } } configure(javaProjects) { ext.TOMCAT_GRADLE = "$rootDir/gradle/tomcat.gradle" ext.WAR_SAMPLE_GRADLE = "$rootDir/gradle/war-sample.gradle" apply from: "$rootDir/gradle/javaprojects.gradle" apply from: "$rootDir/gradle/release-checks.gradle" apply from: "$rootDir/gradle/maven-deployment.gradle" } configure(coreModuleProjects) { apply plugin: 'bundlor' apply plugin: 'emma' bundlor.doFirst { def templateText = file("template.mf").text bundlor.manifestTemplate = new SimpleTemplateEngine().createTemplate(templateText).make(bundlorProperties).toString() } configurations { jacoco //Configuration Group used by Sonar to provide Code Coverage using JaCoCo } dependencies { jacoco "org.jacoco:org.jacoco.agent:0.6.2.201302030002:runtime" } test { jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=${project.group}.*" } integrationTest { jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=${project.group}.*" } } configure (aspectjProjects) { apply plugin: 'java' apply plugin: 'aspectj' } task coreBuild { dependsOn coreModuleProjects*.tasks*.matching { task -> task.name == 'build' } } // Task for creating the distro zip task dist(type: Zip) { dependsOn subprojects*.tasks*.matching { task -> task.name == 'assemble' || task.name.endsWith('Zip') || task.name.endsWith('generatePom') } classifier = 'dist' evaluationDependsOn(':docs') evaluationDependsOn(':docs:manual') def zipRootDir = "${project.name}-$version" into(zipRootDir) { from(rootDir) { include '*.txt' } into('docs') { with(project(':docs').apiSpec) with(project(':docs:manual').spec) with(project(':docs:guides').spec) } into('dist') { from coreModuleProjects.collect {project -> project.libsDir } } sampleProjects.each { project-> into("$zipRootDir/samples/$project.name") { from(project.projectDir) { include "src/main/**" include "pom.xml" } } } } } artifacts { archives dist archives project(':docs').docsZip archives project(':docs').schemaZip } task wrapper(type: Wrapper) { gradleVersion = '1.7' }