1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

Retrolambda work.

This commit is contained in:
Cedric Beust 2015-12-06 11:49:40 -08:00
parent fc58dd208c
commit 5ad482b244
2 changed files with 19 additions and 7 deletions

View file

@ -17,12 +17,14 @@ class TaskContributor : ITaskContributor {
fun addVariantTasks(plugin: IPlugin, project: Project, context: KobaltContext, taskName: String,
runBefore : List<String> = emptyList(),
runAfter : List<String> = emptyList(),
alwaysRunAfter : List<String> = 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)

View file

@ -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<RetrolambdaConfig>(), IClasspathContributor {
: ConfigPlugin<RetrolambdaConfig>(), 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<DynamicTask> = taskContributor.dynamicTasks
}
class RetrolambdaConfig(var byteCodeVersion: Int = 50) {