import groovy.text.SimpleTemplateEngine buildscript { repositories { maven { url "https://repo.spring.io/plugins-release" } } dependencies { classpath("org.springframework.build.gradle:propdeps-plugin:0.0.7") classpath("io.spring.gradle:spring-io-plugin:0.0.4.RELEASE") classpath("com.bmuschko:gradle-tomcat-plugin:2.2.4") classpath('me.champeau.gradle:gradle-javadoc-hotfix-plugin:0.1') classpath('org.asciidoctor:asciidoctor-gradle-plugin:1.5.1') classpath("io.spring.gradle:docbook-reference-plugin:0.3.1") } } plugins { id "org.sonarqube" version "1.2" } apply plugin: 'base' description = 'Spring Security' allprojects { apply plugin: 'idea' apply plugin: 'eclipse' ext.releaseBuild = version.endsWith('RELEASE') ext.snapshotBuild = version.endsWith('SNAPSHOT') ext.springVersion = '4.2.5.RELEASE' ext.springLdapVersion = '2.0.2.RELEASE' group = 'org.springframework.security' repositories { mavenCentral() maven { url "https://repo.spring.io/libs-snapshot" } maven { url "https://repo.spring.io/plugins-release" } maven { url "http://repo.terracotta.org/maven2/" } } eclipse.project.name = "${project.name}-4.1.x" } sonarqube { properties { 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 != 'manual' && project.name != 'guides' && project.name != 'spring-security-bom' } 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-xml-aspectj'), project(':spring-security-samples-javaconfig-aspectj')] configure(allprojects - javaProjects) { task afterEclipseImport { ext.srcFile = file('.classpath') inputs.file srcFile outputs.dir srcFile onlyIf { !srcFile.exists() } doLast { srcFile << """ """ } } } configure(subprojects - coreModuleProjects - project(':spring-security-samples-javaconfig-messages') - project(':spring-security-bom')) { tasks.findByPath("artifactoryPublish")?.enabled = false sonarqube { 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" if(!project.name.contains('gae')) { apply from: "$rootDir/gradle/checkstyle.gradle" } apply from: "$rootDir/gradle/ide.gradle" apply from: "$rootDir/gradle/release-checks.gradle" apply from: "$rootDir/gradle/maven-deployment.gradle" } configure(coreModuleProjects) { apply plugin: 'emma' apply plugin: 'spring-io' ext.springIoVersion = project.hasProperty('platformVersion') ? platformVersion : '2.0.1.RELEASE' configurations { jacoco //Configuration Group used by Sonar to provide Code Coverage using JaCoCo } dependencyManagement { springIoTestRuntime { imports { mavenBom "io.spring.platform:platform-bom:${springIoVersion}" } } } dependencies { jacoco "org.jacoco:org.jacoco.agent:0.7.5.201505241946: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 coreInstall { dependsOn coreModuleProjects*.tasks*.matching { task -> task.name == 'install' } } // Task for creating the distro zip task dist(type: Zip) { dependsOn { subprojects*.tasks*.matching { task -> task.name.endsWith('generatePom') } } classifier = 'dist' evaluationDependsOn(':docs') evaluationDependsOn(':docs:manual') def zipRootDir = "${project.name}-$version" into(zipRootDir) { from(rootDir) { include '*.adoc' include '*.txt' } into('docs') { with(project(':docs').apiSpec) with(project(':docs:manual').spec) with(project(':docs:guides').spec) } project.coreModuleProjects*.tasks*.withType(AbstractArchiveTask).flatten().each{ archiveTask -> if(archiveTask!=dist){ into("$zipRootDir/dist") { from archiveTask.outputs.files } } } 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 }