From a4ad73ddf69c5262469aa98e894f02a00ef9bd56 Mon Sep 17 00:00:00 2001 From: aka James4u Date: Wed, 7 Jan 2026 12:11:04 -0800 Subject: [PATCH] fix: prevent server boot when --no-server is used (#8444) * fix: prevent server boot when --no-server is used * refactor: move serverAutoStart to sysprops * refact: scalafmt --- main/src/main/scala/sbt/Main.scala | 12 +++++++----- main/src/main/scala/sbt/internal/SysProp.scala | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index 807ffe838..dad3b8e04 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -78,11 +78,13 @@ private[sbt] object xMain: val isNew: String => Boolean = cmd => (cmd == "new") || (cmd == "init") lazy val isServer = !userCommands.exists(c => isBsp(c) || isClient(c)) // keep this lazy to prevent project directory created prematurely - lazy val bootServerSocket = if (isServer) getSocketOrExit(configuration) match { - case (_, Some(e)) => boundary.break(e) - case (s, _) => s - } - else None + // Only create boot server socket if server mode is enabled and server autostart is enabled + lazy val bootServerSocket = + if (isServer && SysProp.serverAutoStart) getSocketOrExit(configuration) match { + case (_, Some(e)) => boundary.break(e) + case (s, _) => s + } + else None lazy val detachStdio = userCommands.exists(_ == BasicCommandStrings.DashDashDetachStdio) def withStreams[A](f: => A): A = try { diff --git a/main/src/main/scala/sbt/internal/SysProp.scala b/main/src/main/scala/sbt/internal/SysProp.scala index cec952824..cbdcb26bc 100644 --- a/main/src/main/scala/sbt/internal/SysProp.scala +++ b/main/src/main/scala/sbt/internal/SysProp.scala @@ -100,6 +100,7 @@ object SysProp { def legacyTestReport: Boolean = getOrFalse("sbt.testing.legacyreport") def semanticdb: Boolean = getOrFalse("sbt.semanticdb") def forceServerStart: Boolean = getOrFalse("sbt.server.forcestart") + def serverAutoStart: Boolean = getOrTrue("sbt.server.autostart") def remoteCache: Option[URI] = sys.props .get("sbt.remote_cache") .map(URI(_))