From 37709b571ce90c49c154ca59ccb0ef784e636759 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 18 Apr 2017 08:16:13 -0700 Subject: [PATCH] Inject the Jvm object. --- .../kotlin/com/beust/kobalt/internal/GenericRunner.kt | 6 +++++- src/main/kotlin/com/beust/kobalt/app/MainModule.kt | 8 +++++--- .../beust/kobalt/plugin/application/ApplicationPlugin.kt | 9 ++++++--- .../kotlin/com/beust/kobalt/plugin/java/JavaCompiler.kt | 9 ++++----- .../com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt | 5 +++-- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt index 01836be1..27419c02 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt @@ -4,6 +4,7 @@ import com.beust.kobalt.* import com.beust.kobalt.api.* import com.beust.kobalt.misc.KFiles import com.google.common.annotations.VisibleForTesting +import com.google.inject.Inject import java.io.File import java.util.* @@ -19,6 +20,9 @@ abstract class GenericTestRunner: ITestRunnerContributor { open var shortMessage: String? = null open var longMessage: String? = null + @Inject + private lateinit var jvm: Jvm + abstract fun args(project: Project, context: KobaltContext, classpath: List, testConfig: TestConfig) : List @@ -116,7 +120,7 @@ abstract class GenericTestRunner: ITestRunnerContributor { val args = args(project, context, classpath, testConfig) if (args.size > 0) { - val java = JavaInfo.create(File(SystemProperties.javaBase)).javaExecutable + val java = jvm.javaExecutable val jvmArgs = calculateAllJvmArgs(project, context, testConfig, classpath, Kobalt.INJECTOR.getInstance (PluginInfo::class.java)) val allArgs = arrayListOf().apply { diff --git a/src/main/kotlin/com/beust/kobalt/app/MainModule.kt b/src/main/kotlin/com/beust/kobalt/app/MainModule.kt index 8181a3b9..1f9e07b2 100644 --- a/src/main/kotlin/com/beust/kobalt/app/MainModule.kt +++ b/src/main/kotlin/com/beust/kobalt/app/MainModule.kt @@ -1,6 +1,8 @@ package com.beust.kobalt.app import com.beust.kobalt.Args +import com.beust.kobalt.JavaInfo +import com.beust.kobalt.Jvm import com.beust.kobalt.app.remote.KobaltServer import com.beust.kobalt.internal.IncrementalManager import com.beust.kobalt.internal.KobaltSettings @@ -17,6 +19,7 @@ import com.google.inject.Provider import com.google.inject.Singleton import com.google.inject.TypeLiteral import com.google.inject.assistedinject.FactoryModuleBuilder +import java.io.File import java.util.concurrent.ExecutorService open class MainModule(val args: Args, val settings: KobaltSettings) : AbstractModule() { @@ -49,15 +52,14 @@ open class MainModule(val args: Args, val settings: KobaltSettings) : AbstractMo bind(Args::class.java).toProvider(Provider { args }) - EventBus().let { eventBus -> - bind(EventBus::class.java).toInstance(eventBus) - } + bind(EventBus::class.java).toInstance(EventBus()) bind(PluginInfo::class.java).toProvider(Provider { PluginInfo.readKobaltPluginXml() }).`in`(Singleton::class.java) bind(KobaltSettings::class.java).toProvider(Provider { settings }).`in`(Singleton::class.java) + bind(Jvm::class.java).toInstance(JavaInfo.create(File(com.beust.kobalt.SystemProperties.javaBase))) // bindListener(Matchers.any(), object: TypeListener { // override fun hear(typeLiteral: TypeLiteral?, typeEncounter: TypeEncounter?) { diff --git a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt index 032c466d..9fc0b027 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt @@ -1,6 +1,9 @@ package com.beust.kobalt.plugin.application -import com.beust.kobalt.* +import com.beust.kobalt.Jvm +import com.beust.kobalt.KobaltException +import com.beust.kobalt.Plugins +import com.beust.kobalt.TaskResult import com.beust.kobalt.api.* import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Task @@ -42,7 +45,7 @@ fun Project.application(init: ApplicationConfig.() -> Unit): ApplicationConfig { @Singleton class ApplicationPlugin @Inject constructor(val configActor: ConfigActor, val executors: KobaltExecutors, val nativeManager: NativeManager, - val dependencyManager: DependencyManager, val taskContributor : TaskContributor) + val dependencyManager: DependencyManager, val taskContributor : TaskContributor, val jvm: Jvm) : BasePlugin(), IRunnerContributor, ITaskContributor, IConfigActor by configActor { companion object { @@ -111,7 +114,7 @@ class ApplicationPlugin @Inject constructor(val configActor: ConfigActor val allDeps = arrayListOf(jarName) - val java = JavaInfo.create(File(SystemProperties.javaBase)).javaExecutable!! + val java = jvm.javaExecutable!! if (! isFatJar(packages, jarName)) { @Suppress("UNCHECKED_CAST") // If the jar file is not fat, we need to add the transitive closure of all dependencies diff --git a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaCompiler.kt b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaCompiler.kt index 97d7644b..1044adf5 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaCompiler.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaCompiler.kt @@ -1,7 +1,6 @@ package com.beust.kobalt.plugin.java -import com.beust.kobalt.JavaInfo -import com.beust.kobalt.SystemProperties +import com.beust.kobalt.Jvm import com.beust.kobalt.TaskResult import com.beust.kobalt.api.* import com.beust.kobalt.internal.CompilerUtils @@ -22,7 +21,7 @@ import javax.tools.ToolProvider @Singleton class JavaCompiler @Inject constructor(val jvmCompiler: JvmCompiler, val kobaltLog: ParallelLogger, - val compilerUtils: CompilerUtils) : ICompiler { + val compilerUtils: CompilerUtils, val jvm: Jvm) : ICompiler { fun compilerAction(executable: File) = object : ICompilerAction { override fun compile(project: Project?, info: CompilerActionInfo): TaskResult { val projectName = project?.name @@ -119,7 +118,7 @@ class JavaCompiler @Inject constructor(val jvmCompiler: JvmCompiler, val kobaltL -> it.compilerFlagsFor(project, context, currentFlags, suffixesBeingCompiled) } FlagContributor(it.flagPriority, closure) } - return run(project, context, info, JavaInfo.create(File(SystemProperties.javaBase)).javacExecutable!!, + return run(project, context, info, jvm.javacExecutable!!, compilerUtils.compilerFlags(project, context, info, adapters)) } @@ -130,7 +129,7 @@ class JavaCompiler @Inject constructor(val jvmCompiler: JvmCompiler, val kobaltL -> it.docFlagsFor(project, context, currentFlags, suffixesBeingCompiled) } FlagContributor(it.flagPriority, closure) } - return run(project, context, info, JavaInfo.create(File(SystemProperties.javaBase)).javadocExecutable!!, + return run(project, context, info, jvm.javadocExecutable!!, compilerUtils.compilerFlags(project, context, info, adapters)) } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt index 7d5892b0..33b26ec6 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt @@ -35,7 +35,8 @@ class KotlinCompiler @Inject constructor( val settings: KobaltSettings, val jvmCompiler: JvmCompiler, val compilerUtils: CompilerUtils, - val kobaltLog: ParallelLogger) { + val kobaltLog: ParallelLogger, + val jvm: Jvm) { val compilerAction = object: ICompilerAction { override fun compile(project: Project?, info: CompilerActionInfo): TaskResult { @@ -99,7 +100,7 @@ class KotlinCompiler @Inject constructor( private fun invokeCompilerInSeparateProcess(classpath: String, info: CompilerActionInfo, compilerVersion: String, project: Project?): TaskResult { - val java = JavaInfo.create(File(SystemProperties.javaBase)).javaExecutable + val java = jvm.javaExecutable val compilerClasspath = compilerDep(compilerVersion).jarFile.get().path + File.pathSeparator + compilerEmbeddableDependencies(null, compilerVersion).map { it.jarFile.get().path }