From 9fc5bacfcd18cc17ebab349e624968184bc53807 Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sun, 23 Feb 2014 17:45:27 -0500 Subject: [PATCH 1/8] include test varients when compiling android projects --- src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy b/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy index 7039de7..e08de73 100644 --- a/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy +++ b/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy @@ -43,13 +43,14 @@ public class RetrolambdaPluginAndroid implements Plugin { def isLibrary = project.plugins.hasPlugin('android-library') - def variants = isLibrary ? + def variants = (isLibrary ? project.android.libraryVariants : - project.android.applicationVariants + project.android.applicationVariants) + project.android.testVariants variants.each { var -> if (project.retrolambda.isIncluded(var.name)) { def name = var.name.capitalize() + def isTest = var.name.endsWith('Test') def inputDir = "$buildPath/$var.name" def outputDir = var.javaCompile.destinationDir @@ -99,7 +100,7 @@ public class RetrolambdaPluginAndroid implements Plugin { } } - def runBefore = isLibrary ? "bundle${name}" : "dex${name}" + def runBefore = (isLibrary && !isTest) ? "bundle${name}" : "dex${name}" project.tasks.getByName(runBefore).dependsOn("compileRetrolambda${name}") } } From 78742644cc99c80cd9d874090449c51af057cd66 Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sun, 2 Mar 2014 19:25:08 -0500 Subject: [PATCH 2/8] bump version and update README --- README.md | 8 +++++++- build.gradle | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 20502d5..35f0b8f 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Usage } dependencies { - classpath 'me.tatarka:gradle-retrolambda:1.2-SNAPSHOT' + classpath 'me.tatarka:gradle-retrolambda:1.3-SNAPSHOT' } } @@ -113,3 +113,9 @@ Updates ### 1.1.1 - Fixed not correctly finding java 8 executable when running from java 6 or 7 on windows. (Mart-Bogdan) + +### 1.2.0 +- Support android-library projects + +### 1.3.0 +- Support android instrument tests diff --git a/build.gradle b/build.gradle index 84dc680..883d89d 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ repositories { } group = 'me.tatarka' -version = '1.2-SNAPSHOT' +version = '1.3-SNAPSHOT' dependencies { compile gradleApi() From c2c3bb38781d49f64b99a9d0d94351b03a928232 Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Tue, 4 Mar 2014 19:10:47 -0500 Subject: [PATCH 3/8] redirect retrolambda stdout to info log level --- src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy | 3 +++ src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy b/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy index e08de73..b772401 100644 --- a/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy +++ b/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy @@ -19,6 +19,7 @@ package me.tatarka import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.ProjectConfigurationException +import org.gradle.api.logging.LogLevel import org.gradle.api.tasks.JavaExec import org.gradle.util.CollectionUtils @@ -82,6 +83,8 @@ public class RetrolambdaPluginAndroid implements Plugin { "-Dretrolambda.bytecodeVersion=${project.retrolambda.bytecodeVersion}", "-javaagent:${classpath.asPath}" ] + + logging.captureStandardOutput(LogLevel.INFO) } // Set the output dir back so subsequent tasks use it diff --git a/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy b/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy index 1718dce..cb6777e 100644 --- a/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy +++ b/src/main/groovy/me/tatarka/RetrolambdaPluginJava.groovy @@ -19,6 +19,7 @@ package me.tatarka import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.ProjectConfigurationException +import org.gradle.api.logging.LogLevel import org.gradle.api.tasks.JavaExec import static me.tatarka.RetrolambdaPlugin.checkIfExecutableExists @@ -63,6 +64,8 @@ public class RetrolambdaPluginJava implements Plugin { "-Dretrolambda.bytecodeVersion=${project.retrolambda.bytecodeVersion}", "-javaagent:${classpath.getAsPath()}" ] + + logging.captureStandardOutput(LogLevel.INFO) } // Set the output dir back so subsequent tasks use it From 2748c8fa57b15d81b2b17fa5dc1e6d1b559174f6 Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sat, 29 Mar 2014 13:56:32 -0400 Subject: [PATCH 4/8] better error message when not using java8, and updated README, fixes #21 --- README.md | 6 +++--- src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 35f0b8f..eb64d1f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Luontola. Usage ---- -1. Download openjdk8 early access from https://jdk8.java.net/download.html +1. Download [jdk8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html). 2. Add the following to your build.gradle @@ -40,8 +40,8 @@ Usage The plugin will compile the source code with java8 and then replace the class files with the output of retrolambda. -Configuation ------------- +Configuration +------------- You can add a block like the following to configure the plugin: diff --git a/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy b/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy index b772401..398a4ee 100644 --- a/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy +++ b/src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy @@ -111,7 +111,7 @@ public class RetrolambdaPluginAndroid implements Plugin { project.task("patchAndroidJar") { def rt = "$project.retrolambda.jdk/jre/lib/rt.jar" def classesPath = "$buildPath/classes" - def jdkPathError = " does not exist, make sure that JAVE_HOME or retrolambda.jdk points to a valid version of java8\n You can download java8 from https://jdk8.java.net/download.html" + def jdkPathError = " does not exist, make sure that the environment variable JAVA_HOME or JAVA8_HOME, or the gradle property retrolambda.jdk points to a valid version of java8." inputs.dir androidJar inputs.dir rt From a946286dce791bf2e3fbbff3adcf63726bf538d1 Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sat, 29 Mar 2014 14:09:35 -0400 Subject: [PATCH 5/8] changed way the retrolambda.jar dependency is defined --- README.md | 17 ++++++++++++++--- .../me/tatarka/RetrolambdaExtension.groovy | 5 ----- .../groovy/me/tatarka/RetrolambdaPlugin.groovy | 4 +++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index eb64d1f..c06d058 100644 --- a/README.md +++ b/README.md @@ -47,15 +47,12 @@ You can add a block like the following to configure the plugin: ```groovy retrolambda { - compile "net.orfjackal.retrolambda:retrolambda:1.1.2" jdk System.getenv("JAVA8_HOME") oldJdk System.getenv("JAVA6_HOME") javaVersion JavaVersion.VERSION_1_6 } ``` -- `compile` Set the path to retrolambda.jar. The default is the one on maven - central. - `jdk` Set the path to the java 8 jdk. The default is found using either `JAVA8_HOME`. If you a running gradle with java 6 or 7, you must have either `JAVA8_HOME` or this property set. @@ -70,6 +67,20 @@ retrolambda { - `exclude 'Test'` Sets which sets/variants to not run through retrolambda. Only one of either `include` or `exclude` should be defined. +### Using a Different Version of the retrolambda.jar + +The default version of retrolambda used is 'net.orfjackal.retrolambda:retrolambda:1.1.2'. If you +want to use a different one, you can configure it in your dependencies. + +```groovy +dependencies { + // Newer one on maven central + retrolambdaConfig 'net.orfjackal.retrolambda:retrolambda:1.1.4' + // Or a local version + // retrolambdaConfig files('libs/retrolambda.jar') +} +``` + Android Studio Setup -------------------- Luckily Android Studio already has built-in lambda support! Enable it for your diff --git a/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy b/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy index 7f4e06c..8b85149 100644 --- a/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy +++ b/src/main/groovy/me/tatarka/RetrolambdaExtension.groovy @@ -27,7 +27,6 @@ import org.gradle.api.ProjectConfigurationException * To change this template use File | Settings | File Templates. */ public class RetrolambdaExtension { - Object compile = "net.orfjackal.retrolambda:retrolambda:1.1.2" int bytecodeVersion = 50 List excludes = [] List includes = [] @@ -50,10 +49,6 @@ public class RetrolambdaExtension { includes.addAll(e.collect { i -> i.toString() }) } - public void setCompile(Object c) { - compile = c - } - public void setBytecodeVersion(int v) { bytecodeVersion = v if (!oldJdkSet) oldJdk = findOldJdk() diff --git a/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy b/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy index dad8c8b..cd7ea8a 100644 --- a/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy +++ b/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy @@ -27,6 +27,8 @@ import org.gradle.api.Project * To change this template use File | Settings | File Templates. */ public class RetrolambdaPlugin implements Plugin { + private static def retrolambdaCompile = "net.orfjackal.retrolambda:retrolambda:1.1.2" + @Override void apply(Project project) { project.extensions.create('retrolambda', RetrolambdaExtension) @@ -36,7 +38,7 @@ public class RetrolambdaPlugin implements Plugin { } project.dependencies { - retrolambdaConfig project.retrolambda.compile + retrolambdaConfig retrolambdaCompile } project.task('compileRetrolambda', dependsOn: project.tasks.matching {task -> From d5e0997f389450e7c034c8e943c4addfa05744a2 Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sat, 29 Mar 2014 14:20:29 -0400 Subject: [PATCH 6/8] Fixed typos in README --- README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c06d058..412c0df 100644 --- a/README.md +++ b/README.md @@ -53,13 +53,14 @@ retrolambda { } ``` -- `jdk` Set the path to the java 8 jdk. The default is found using either - `JAVA8_HOME`. If you a running gradle with java 6 or 7, you must have either - `JAVA8_HOME` or this property set. -- `oldJdk` Sets the path to the java 6 or 7 jdk. The default is found using - `JAVA6_HOME`/`JAVA7_HOME`. If you are running gradle with java 8 and wish - to run unit tests, you must have either `JAVA6_HOME`/`JAVA7_HOME` or this - property set. This is so the tests can be run with the correct java version. +- `jdk` Set the path to the java 8 jdk. The default is found using the + environment variable `JAVA8_HOME`. If you a running gradle with java 6 or 7, + you must have either `JAVA8_HOME` or this property set. +- `oldJdk` Sets the path to the java 6 or 7 jdk. The default is found using the + environment variable `JAVA6_HOME`/`JAVA7_HOME`. If you are running gradle with + java 8 and wish to run unit tests, you must have either + `JAVA6_HOME`/`JAVA7_HOME` or this property set. This is so the tests can be + run with the correct java version. - `javaVersion` Set the java version to compile to. The default is 6. Only 6 or 7 are accepted. - `include 'Debug', 'Release'` Sets which sets/variants to run through @@ -69,8 +70,9 @@ retrolambda { ### Using a Different Version of the retrolambda.jar -The default version of retrolambda used is 'net.orfjackal.retrolambda:retrolambda:1.1.2'. If you -want to use a different one, you can configure it in your dependencies. +The default version of retrolambda used is +`'net.orfjackal.retrolambda:retrolambda:1.1.2'`. If you want to use a different +one, you can configure it in your dependencies. ```groovy dependencies { From e58c9695149368b999f2a7fc91bf67ffdcb776a2 Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sat, 29 Mar 2014 16:53:44 -0400 Subject: [PATCH 7/8] updated to latest version of retrolambda --- README.md | 6 +++--- src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 412c0df..a83ccd7 100644 --- a/README.md +++ b/README.md @@ -71,13 +71,13 @@ retrolambda { ### Using a Different Version of the retrolambda.jar The default version of retrolambda used is -`'net.orfjackal.retrolambda:retrolambda:1.1.2'`. If you want to use a different +`'net.orfjackal.retrolambda:retrolambda:1.1.4'`. If you want to use a different one, you can configure it in your dependencies. ```groovy dependencies { - // Newer one on maven central - retrolambdaConfig 'net.orfjackal.retrolambda:retrolambda:1.1.4' + // Latest one on maven central + retrolambdaConfig 'net.orfjackal.retrolambda:retrolambda:1.+' // Or a local version // retrolambdaConfig files('libs/retrolambda.jar') } diff --git a/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy b/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy index cd7ea8a..a7f683b 100644 --- a/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy +++ b/src/main/groovy/me/tatarka/RetrolambdaPlugin.groovy @@ -27,7 +27,7 @@ import org.gradle.api.Project * To change this template use File | Settings | File Templates. */ public class RetrolambdaPlugin implements Plugin { - private static def retrolambdaCompile = "net.orfjackal.retrolambda:retrolambda:1.1.2" + private static def retrolambdaCompile = "net.orfjackal.retrolambda:retrolambda:1.1.4" @Override void apply(Project project) { From fb8962d638fb95181387107ae0b64d71f3ee54ba Mon Sep 17 00:00:00 2001 From: Evan Tatarka Date: Sat, 29 Mar 2014 16:57:46 -0400 Subject: [PATCH 8/8] added new changes to README --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a83ccd7..f5b5d63 100644 --- a/README.md +++ b/README.md @@ -121,14 +121,19 @@ Updates - Fixed bug where java unit tests were not being run through retrolambda - Allow gradle to be called with java 6 or 7, i.e. Java 8 no longer has to be your default java. -- Thank you Mart-Bogdan for starting these fixes +- Thank you Mart-Bogdan for starting these fixes. ### 1.1.1 - Fixed not correctly finding java 8 executable when running from java 6 or 7 on windows. (Mart-Bogdan) ### 1.2.0 -- Support android-library projects +- Support android-library projects. ### 1.3.0 -- Support android instrument tests +- Support android instrument tests. + +### 1.3.1 +- Removed `compile` property, which didn't work anyway. Use `retrolambdaConfig` + instead. +- Minor error message improvment.