diff options
author | Brett Chabot <brettchabot@google.com> | 2017-11-01 13:48:54 -0700 |
---|---|---|
committer | Brett Chabot <brettchabot@google.com> | 2017-11-01 13:48:54 -0700 |
commit | a4c80088b2598049e1b8ec5921b91f4826e97d91 (patch) | |
tree | 816613b09a30c4886dcdf782c90724d32193755f /buildSrc | |
parent | 81ae8b0a0d961e8b80ee902e788933631679a02d (diff) | |
parent | 1914b01c68703772e9f7db3e478b54304e4f2b9e (diff) | |
download | robolectric-shadows-a4c80088b2598049e1b8ec5921b91f4826e97d91.tar.gz |
Merge remote-tracking branch 'origin/master' into rawres
Diffstat (limited to 'buildSrc')
-rw-r--r-- | buildSrc/src/main/groovy/AndroidSdk.groovy | 14 | ||||
-rw-r--r-- | buildSrc/src/main/groovy/ProvideBuildClasspathTask.groovy | 9 | ||||
-rw-r--r-- | buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy | 17 | ||||
-rw-r--r-- | buildSrc/src/main/groovy/ShadowsPlugin.groovy | 67 |
4 files changed, 66 insertions, 41 deletions
diff --git a/buildSrc/src/main/groovy/AndroidSdk.groovy b/buildSrc/src/main/groovy/AndroidSdk.groovy index 431199670..216bdc641 100644 --- a/buildSrc/src/main/groovy/AndroidSdk.groovy +++ b/buildSrc/src/main/groovy/AndroidSdk.groovy @@ -28,8 +28,20 @@ class AndroidSdk implements Comparable<AndroidSdk> { this.frameworkSdkBuildVersion = frameworkSdkBuildVersion } + String getGroupId() { + return "org.robolectric" + } + + String getArtifactId() { + return "android-all" + } + + String getVersion() { + return "${androidVersion}-robolectric-${frameworkSdkBuildVersion}" + } + String getCoordinates() { - return "org.robolectric:android-all:${androidVersion}-robolectric-${frameworkSdkBuildVersion}" + return "${groupId}:${artifactId}:${version}" } String getJarFileName() { diff --git a/buildSrc/src/main/groovy/ProvideBuildClasspathTask.groovy b/buildSrc/src/main/groovy/ProvideBuildClasspathTask.groovy index 68a424f82..ba51287ed 100644 --- a/buildSrc/src/main/groovy/ProvideBuildClasspathTask.groovy +++ b/buildSrc/src/main/groovy/ProvideBuildClasspathTask.groovy @@ -1,9 +1,10 @@ import org.gradle.api.DefaultTask import org.gradle.api.Project +import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction class ProvideBuildClasspathTask extends DefaultTask { - File outFile + @OutputFile File outFile @TaskAction public void writeProperties() throws Exception { @@ -19,6 +20,12 @@ class ProvideBuildClasspathTask extends DefaultTask { } } + AndroidSdk.ALL_SDKS.each { androidSdk -> + def config = project.configurations.create("sdk${androidSdk.apiLevel}") + project.dependencies.add("sdk${androidSdk.apiLevel}", androidSdk.coordinates) + paths << "${androidSdk.coordinates.replaceAll(/:/, '\\\\:')}: ${config.files.join(':')}" + } + File outDir = outFile.parentFile if (!outDir.directory) outDir.mkdirs() outFile.withPrintWriter { out -> diff --git a/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy b/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy index 3ace21c80..fe0f490be 100644 --- a/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy +++ b/buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy @@ -60,8 +60,12 @@ class RoboJavaModulePlugin implements Plugin<Project> { events = ["failed", "skipped"] } - minHeapSize = "2048m" - maxHeapSize = "4096m" + minHeapSize = "1024m" + maxHeapSize = "3172m" + + if (System.env['GRADLE_MAX_PARALLEL_FORKS'] != null) { + maxParallelForks = Integer.parseInt(System.env['GRADLE_MAX_PARALLEL_FORKS']) + } def forwardedSystemProperties = System.properties .findAll { k,v -> k.startsWith("robolectric.") } @@ -88,7 +92,10 @@ class RoboJavaModulePlugin implements Plugin<Project> { from sourceSets.main.allJava } - javadoc.failOnError = false + javadoc { + failOnError = false + source = sourceSets.main.allJava + } task('javadocJar', type: Jar, dependsOn: javadoc) { classifier "javadoc" @@ -153,8 +160,8 @@ class RoboJavaModulePlugin implements Plugin<Project> { "https://oss.sonatype.org/service/local/staging/deploy/maven2/" repository(url: url) { authentication( - userName: System.properties["sonatype-login"], - password: System.properties["sonatype-password"] + userName: System.properties["sonatype-login"] ?: System.env['sonatypeLogin'], + password: System.properties["sonatype-password"] ?: System.env['sonatypePassword'] ) } diff --git a/buildSrc/src/main/groovy/ShadowsPlugin.groovy b/buildSrc/src/main/groovy/ShadowsPlugin.groovy index 7b61e64f0..d680972be 100644 --- a/buildSrc/src/main/groovy/ShadowsPlugin.groovy +++ b/buildSrc/src/main/groovy/ShadowsPlugin.groovy @@ -1,59 +1,58 @@ import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.tasks.compile.JavaCompile -import org.gradle.util.GFileUtils + +import java.util.jar.JarFile @SuppressWarnings("GroovyUnusedDeclaration") class ShadowsPlugin implements Plugin<Project> { @Override void apply(Project project) { - project.extensions.create("shadows", ShadowsPluginExtension) + project.apply plugin: "net.ltgt.apt" - project.configurations { - robolectricProcessor - } + project.extensions.create("shadows", ShadowsPluginExtension) project.dependencies { - robolectricProcessor project.project(":processor") + apt project.project(":processor") } - def generatedSourcesDir = "${project.buildDir}/generated-shadows" - - project.sourceSets.main.java.srcDirs += project.file(generatedSourcesDir) - - project.task("generateShadowProvider", type: JavaCompile, description: "Generate Shadows.shadowOf()s class") { task -> - classpath = project.configurations.robolectricProcessor - source = project.sourceSets.main.java - destinationDir = project.file(generatedSourcesDir) - - doFirst { - logger.info "Generating Shadows.java for ${project.name}…" + def compileJavaTask = project.tasks["compileJava"] + compileJavaTask.doFirst { + options.compilerArgs.add("-Aorg.robolectric.annotation.processing.shadowPackage=${project.shadows.packageName}") + } - // reset our classpath at the last minute, since other plugins might mutate - // compileJava's classpath and we want to pick up any changes… - classpath = project.tasks['compileJava'].classpath + project.configurations.robolectricProcessor + def aptGeneratedSrcDir = new File(project.buildDir, 'generated/source/apt/main') - options.compilerArgs.addAll( - "-proc:only", - "-processor", "org.robolectric.annotation.processing.RobolectricProcessor", - "-Aorg.robolectric.annotation.processing.shadowPackage=${project.shadows.packageName}" - ) + project.sourceSets { + main { + java { + srcDirs += [aptGeneratedSrcDir] + } } + } - doLast { - def src = project.file("$generatedSourcesDir/META-INF/services/org.robolectric.internal.ShadowProvider") - def dest = project.file("${project.buildDir}/resources/main/META-INF/services/org.robolectric.internal.ShadowProvider") + // verify that we have the apt-generated files in our javadoc and sources jars + project.tasks['javadocJar'].doLast { task -> + def shadowPackageNameDir = project.shadows.packageName.replaceAll(/\./, '/') + checkForFile(task.archivePath, "${shadowPackageNameDir}/Shadows.html") + } - GFileUtils.mkdirs(dest.getParentFile()); - GFileUtils.copyFile(src, dest); - } + project.tasks['sourcesJar'].doLast { task -> + def shadowPackageNameDir = project.shadows.packageName.replaceAll(/\./, '/') + checkForFile(task.archivePath, "${shadowPackageNameDir}/Shadows.java") } - def compileJavaTask = project.tasks["compileJava"] - compileJavaTask.dependsOn("generateShadowProvider") + project.rootProject.configAnnotationProcessing += project } static class ShadowsPluginExtension { String packageName } + + private void checkForFile(jar, String name) { + def files = new JarFile(jar).entries().collect { it.name }.toSet() + + if (!files.contains(name)) { + throw new RuntimeException("Missing file ${name} in ${jar}") + } + } } |