buildscript { repositories { jcenter() // TODO: remove this when robolectric 2.4 is released. maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } dependencies { classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+' classpath 'com.android.tools.build:gradle:0.12.+' } } allprojects { repositories { jcenter() // TODO: remove this when robolectric 2.4 is released. maven { url "https://oss.sonatype.org/content/repositories/snapshots" } } } apply plugin: 'java' task wrapper(type: Wrapper) { gradleVersion = '1.12' } evaluationDependsOn(":integration:volley") evaluationDependsOn(":third_party:gif_decoder") evaluationDependsOn(":library") def getAndroidSdkDirectory() { project("library").android.sdkDirectory } def getAndroidCompileSdkVersion() { project("library").android.compileSdkVersion } def getAndroidChildren() { subprojects.findAll { project -> project.plugins.hasPlugin('android-library') } } // For now this is just [release, debug] def getAndroidLibraryVariants() { getAndroidChildren().collect { project -> project.android.libraryVariants }.sum().unique{ it.name } } // Generate javadocs containing batched documentation for all android library subprojects. getAndroidLibraryVariants().each { variant -> def androidJar = "${getAndroidSdkDirectory()}/platforms/${getAndroidCompileSdkVersion()}/android.jar" def destinationDirPath = "${getProjectDir()}/doc/${variant.baseName}" task("clean${variant.name.capitalize()}Javadoc", type: Delete) { delete destinationDirPath } task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) { // Get the variant from each subproject that matches our current variant's name. def childEquivalentChildVariants = getAndroidChildren().collect { project -> project.android.libraryVariants.findAll { type -> type.name == variant.name } }.sum() source = childEquivalentChildVariants.collect { it.javaCompile.source } classpath = files(childEquivalentChildVariants.collect { files(it.javaCompile.classpath.files, androidJar) }) options { links("http://docs.oracle.com/javase/7/docs/api/") linksOffline("http://d.android.com/reference", "${getAndroidSdkDirectory()}/docs/reference") } exclude '**/BuildConfig.java' exclude '**/R.java' destinationDir = new File(destinationDirPath) dependsOn("clean${variant.name.capitalize()}Javadoc") } } task addChildJarTasks { configure(getAndroidChildren()) { project -> def copyTask = task("makeJar", type: Copy) { from("${project.buildDir}/intermediates/bundles/release/") into("${project.buildDir}/lib") include('classes.jar') rename('classes.jar', "${project.name}.jar") } copyTask.dependsOn project.build } } task childJars(type: Copy) { destinationDir = file("${buildDir}/lib") into("${buildDir}/lib") { getAndroidChildren().each { p -> from(p.tasks.getByName("makeJar")*.outputs) } } } task cleanChildJars(type: Delete) { delete "${buildDir}/lib" } childJars.dependsOn(addChildJarTasks, cleanChildJars) def binDirName = "bin" task releaseJar(type: Jar) { from(file("${buildDir}/lib").listFiles().collect { zipTree(it)}) into("${buildDir}/lib") destinationDir = file(binDirName) baseName = "glide-${VERSION_NAME}" } task cleanJar(type: Delete) { delete binDirName } releaseJar.dependsOn(cleanJar, childJars) artifacts { archives releaseJar }