mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-26 08:27:12 -07:00
Retrolambda work.
This commit is contained in:
parent
fc58dd208c
commit
5ad482b244
2 changed files with 19 additions and 7 deletions
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue