aboutsummaryrefslogtreecommitdiff
path: root/buildSrc
diff options
context:
space:
mode:
authorBrett Chabot <brettchabot@google.com>2017-11-01 13:48:54 -0700
committerBrett Chabot <brettchabot@google.com>2017-11-01 13:48:54 -0700
commita4c80088b2598049e1b8ec5921b91f4826e97d91 (patch)
tree816613b09a30c4886dcdf782c90724d32193755f /buildSrc
parent81ae8b0a0d961e8b80ee902e788933631679a02d (diff)
parent1914b01c68703772e9f7db3e478b54304e4f2b9e (diff)
downloadrobolectric-shadows-a4c80088b2598049e1b8ec5921b91f4826e97d91.tar.gz
Merge remote-tracking branch 'origin/master' into rawres
Diffstat (limited to 'buildSrc')
-rw-r--r--buildSrc/src/main/groovy/AndroidSdk.groovy14
-rw-r--r--buildSrc/src/main/groovy/ProvideBuildClasspathTask.groovy9
-rw-r--r--buildSrc/src/main/groovy/RoboJavaModulePlugin.groovy17
-rw-r--r--buildSrc/src/main/groovy/ShadowsPlugin.groovy67
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}")
+ }
+ }
}