Skip to content

Commit

Permalink
Support modifications to the javaCompile.
Browse files Browse the repository at this point in the history
This allows plugins like android-apt to work correctly. Note: this plugin must
be applied _before_ others that modify the javaCompile task for it to work
correctly. Fixes evant#47
  • Loading branch information
evant committed Nov 1, 2014
1 parent 40c1f46 commit f4551c4
Showing 1 changed file with 6 additions and 12 deletions.
18 changes: 6 additions & 12 deletions src/main/groovy/me/tatarka/RetrolambdaPluginAndroid.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,14 @@
*/

package me.tatarka
import com.android.build.gradle.api.TestVariant

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.ProjectConfigurationException
import org.gradle.api.tasks.JavaExec
import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.compile.JavaCompile
import proguard.gradle.ProGuardTask

import static me.tatarka.RetrolambdaPlugin.checkIfExecutableExists

/**
* Created with IntelliJ IDEA.
* User: evan
Expand Down Expand Up @@ -72,31 +70,27 @@ public class RetrolambdaPluginAndroid implements Plugin<Project> {
project.files("$buildPath/$var.name") +
project.files(androidJar)

def newJavaCompile = project.task("_$var.javaCompile.name", dependsOn: ["patchAndroidJar"], type: JavaCompile) {
def newJavaCompile = project.task("_$var.javaCompile.name", dependsOn: "patchAndroidJar", type: JavaCompile) {
conventionMapping.source = { var.javaCompile.source }
conventionMapping.classpath = { var.javaCompile.classpath }
destinationDir = newDestDir
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
}

var.javaCompile.dependsOn.each { dependency ->
newJavaCompile.dependsOn(dependency)
}

var.javaCompile.doLast {
newJavaCompile.doFirst {
newJavaCompile.options.compilerArgs = var.javaCompile.options.compilerArgs + ["-bootclasspath", "$jarPath/android.jar"]
}

def retrolambdaTask = project.task("compileRetrolambda${name}", dependsOn: [newJavaCompile], type: RetrolambdaTask) {
def retrolambdaTask = project.task("compileRetrolambda${name}", dependsOn: [newJavaCompile], type: RetrolambdaTask) {
inputDir = newDestDir
outputDir = oldDestDir
classpath = classpathFiles
javaVersion = project.retrolambda.javaVersion
jvmArgs = project.retrolambda.jvmArgs
}

var.javaCompile.dependsOn(retrolambdaTask)
var.javaCompile.finalizedBy(retrolambdaTask)
var.javaCompile.deleteAllActions()

def extractTaskName = "extract${var.name.capitalize()}Annotations"
Expand Down

0 comments on commit f4551c4

Please sign in to comment.