From 5ad482b24419bc22bf85ca75ddbb7bf665b17cfa Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sun, 6 Dec 2015 11:49:40 -0800 Subject: [PATCH] Retrolambda work. --- .../com/beust/kobalt/api/TaskContributor.kt | 2 ++ .../plugin/retrolambda/RetrolambdaPlugin.kt | 24 +++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/com/beust/kobalt/api/TaskContributor.kt b/src/main/kotlin/com/beust/kobalt/api/TaskContributor.kt index 58d9350f..a7190543 100644 --- a/src/main/kotlin/com/beust/kobalt/api/TaskContributor.kt +++ b/src/main/kotlin/com/beust/kobalt/api/TaskContributor.kt @@ -17,12 +17,14 @@ class TaskContributor : ITaskContributor { fun addVariantTasks(plugin: IPlugin, project: Project, context: KobaltContext, taskName: String, runBefore : List = emptyList(), runAfter : List = emptyList(), + alwaysRunAfter : List = emptyList(), runTask: (Project) -> TaskResult) { Variant.allVariants(project).forEach { variant -> val variantTaskName = variant.toTask(taskName) dynamicTasks.add(DynamicTask(plugin, variantTaskName, variantTaskName, runBefore = runBefore.map { variant.toTask(it) }, runAfter = runAfter.map { variant.toTask(it) }, + alwaysRunAfter = alwaysRunAfter.map { variant.toTask(it) }, closure = { p: Project -> context.variant = variant runTask(project) diff --git a/src/main/kotlin/com/beust/kobalt/plugin/retrolambda/RetrolambdaPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/retrolambda/RetrolambdaPlugin.kt index f22e06b5..80aee6e2 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/retrolambda/RetrolambdaPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/retrolambda/RetrolambdaPlugin.kt @@ -2,9 +2,7 @@ package com.beust.kobalt.plugin.retrolambda import com.beust.kobalt.Plugins import com.beust.kobalt.TaskResult -import com.beust.kobalt.api.ConfigPlugin -import com.beust.kobalt.api.IClasspathContributor -import com.beust.kobalt.api.Project +import com.beust.kobalt.api.* import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Task import com.beust.kobalt.internal.JvmCompilerPlugin @@ -21,7 +19,7 @@ import java.io.File */ @Singleton class RetrolambdaPlugin @Inject constructor(val dependencyManager: DependencyManager) - : ConfigPlugin(), IClasspathContributor { + : ConfigPlugin(), IClasspathContributor, ITaskContributor { override val name = PLUGIN_NAME @@ -33,6 +31,12 @@ class RetrolambdaPlugin @Inject constructor(val dependencyManager: DependencyMan val JAR = MavenDependency.create(ID) } + override fun apply(project: Project, context: KobaltContext) { + super.apply(project, context) + taskContributor.addVariantTasks(this, project, context, "retrolambda", runTask = { taskRetrolambda(project) }, + alwaysRunAfter = listOf("compile")) + } + // IClasspathContributor // Only add the Retrolambda jar file if the user specified a `retrolambda{}` directive in their build file override fun entriesFor(project: Project?) = @@ -45,12 +49,13 @@ class RetrolambdaPlugin @Inject constructor(val dependencyManager: DependencyMan val config = configurationFor(project) val result = if (config != null) { - val classpath = dependencyManager.transitiveClosure(project.compileDependencies).map { + val classesDir = project.classesDir(context) + val classpath = (dependencyManager.transitiveClosure(project.compileDependencies).map { it.jarFile.get() - }.joinToString(File.separator) + } + classesDir).joinToString(File.pathSeparator) val args = listOf( - "-Dretrolambda.inputDir=" + project.classesDir(context), + "-Dretrolambda.inputDir=" + classesDir, "-Dretrolambda.classpath=" + classpath, "-Dretrolambda.bytecodeVersion=${config.byteCodeVersion}", "-jar", JAR.jarFile.get().path) @@ -65,6 +70,11 @@ class RetrolambdaPlugin @Inject constructor(val dependencyManager: DependencyMan return result } + + val taskContributor : TaskContributor = TaskContributor() + + // ITaskContributor + override fun tasksFor(context: KobaltContext) : List = taskContributor.dynamicTasks } class RetrolambdaConfig(var byteCodeVersion: Int = 50) {