import org.gradle.plugins.ide.idea.model.IdeaModel buildscript { repositories { jcenter() } dependencies { classpath 'com.netflix.nebula:gradle-aggregate-javadocs-plugin:2.2.+' classpath 'ch.raffael.pegdown-doclet:pegdown-doclet:1.3' } } plugins { id "net.ltgt.apt" version "0.13" // automatic annotation processing } allprojects { repositories { mavenLocal() jcenter() } group = "org.robolectric" version = thisVersion } apply plugin: 'idea' apply plugin: 'net.ltgt.apt' project.ext.configAnnotationProcessing = [] project.afterEvaluate { def ideaProject = rootProject.extensions.getByType(IdeaModel).project ideaProject.ipr.withXml { provider -> def compilerConfiguration = provider.asNode().component.find { it.'@name' == 'CompilerConfiguration' } // prevent compiler from complaining about duplicate classes... def excludeFromCompile = compilerConfiguration.appendNode 'excludeFromCompile' configAnnotationProcessing.each { Project subProject -> excludeFromCompile.appendNode('directory', [url: "file://${subProject.buildDir}/classes/java/main/generated", includeSubdirectories: "true"]) } // replace existing annotationProcessing tag with a new one... compilerConfiguration.annotationProcessing.replaceNode { annotationProcessing { configAnnotationProcessing.each { Project subProject -> profile(name: "${subProject.name}_main", enabled: "true") { module(name: "${subProject.name}_main") option(name: "org.robolectric.annotation.processing.shadowPackage", value: subProject.shadows.packageName) processor(name: "org.robolectric.annotation.processing.RobolectricProcessor") processorPath(useClasspath: "false") { def processorRuntimeCfg = project.project(":processor").configurations['runtime'] processorRuntimeCfg.allArtifacts.each { artifact -> entry(name: artifact.file) } processorRuntimeCfg.files.each { file -> entry(name: file) } } } } } } } } apply plugin: 'nebula-aggregate-javadocs' apply plugin: 'ch.raffael.pegdown-doclet' rootProject.gradle.projectsEvaluated { rootProject.tasks['aggregateJavadocs'].failOnError = false } task aggregateTestReports(type: TestReport) { def jobNumber = System.getenv('TRAVIS_JOB_NUMBER') if (jobNumber == null) { destinationDir = file("$buildDir/reports/allTests") } else { destinationDir = file("$buildDir/reports/allTests/$jobNumber") } } task prefetchSdks() { AndroidSdk.ALL_SDKS.each { androidSdk -> def config = configurations.create("sdk${androidSdk.apiLevel}") dependencies.add("sdk${androidSdk.apiLevel}", androidSdk.coordinates) // causes dependencies to be resolved: config.files } } task prefetchDependencies() { dependsOn "prefetchSdks" doLast { allprojects.each { p -> ['compile', 'runtime', 'testCompile', 'testRuntime'].each { configName -> if (p.configurations.findByName(configName)) { // causes dependencies to be resolved: p.configurations[configName].files } } } } } // for use of external initialization scripts... project.ext.allSdks = AndroidSdk.ALL_SDKS