diff --git a/libs/javalib/src/mill/javalib/RunModule.scala b/libs/javalib/src/mill/javalib/RunModule.scala index cec40c553c6d..4755bb3c5791 100644 --- a/libs/javalib/src/mill/javalib/RunModule.scala +++ b/libs/javalib/src/mill/javalib/RunModule.scala @@ -114,9 +114,10 @@ trait RunModule extends WithJvmWorkerModule with RunModuleApi { /** * Runs this module's code in a subprocess and waits for it to finish */ - def run(args: Task[Args] = Task.Anon(Args())): Task.Command[Unit] = Task.Command { - runForkedTask(finalMainClass, args)() - } + def run(args: Task[Args] = Task.Anon(Args())): Task.Command[Unit] = + Task.Command(exclusive = true) { + runForkedTask(finalMainClass, args)() + } /** * Runs this module's code in-process within an isolated classloader. This is @@ -124,16 +125,17 @@ trait RunModule extends WithJvmWorkerModule with RunModuleApi { * since the code can dirty the parent Mill process and potentially leave it * in a bad state. */ - def runLocal(args: Task[Args] = Task.Anon(Args())): Task.Command[Unit] = Task.Command { - runLocalTask(finalMainClass, args)() - } + def runLocal(args: Task[Args] = Task.Anon(Args())): Task.Command[Unit] = + Task.Command(exclusive = true) { + runLocalTask(finalMainClass, args)() + } /** * Same as `run`, but lets you specify a main class to run */ def runMain(@arg(positional = true) mainClass: String, args: String*): Task.Command[Unit] = { val task = runForkedTask(Task.Anon { mainClass }, Task.Anon { Args(args) }) - Task.Command { task() } + Task.Command(exclusive = true) { task() } } /** @@ -152,7 +154,7 @@ trait RunModule extends WithJvmWorkerModule with RunModuleApi { */ def runMainLocal(@arg(positional = true) mainClass: String, args: String*): Task.Command[Unit] = { val task = runLocalTask(Task.Anon { mainClass }, Task.Anon { Args(args) }) - Task.Command { task() } + Task.Command(exclusive = true) { task() } } /** diff --git a/libs/javalib/src/mill/javalib/bsp/BspRunModule.scala b/libs/javalib/src/mill/javalib/bsp/BspRunModule.scala index 273dc0ccfe0e..06762646624c 100644 --- a/libs/javalib/src/mill/javalib/bsp/BspRunModule.scala +++ b/libs/javalib/src/mill/javalib/bsp/BspRunModule.scala @@ -27,7 +27,7 @@ private[mill] object BspRunModule extends ExternalModule { object internalBspRunModule extends mill.api.Module with BspRunModuleApi { override private[mill] def bspRun(args: Seq[String]): Task[Unit] = Task.Anon { - runModule.run(Task.Anon(Args(args)))() + runModule.runForkedTask(runModule.finalMainClass, Task.Anon(Args(args)))() } override private[mill] def bspJvmRunEnvironment: Task.Simple[(