【问题标题】:How to check if application is being run via SBT?如何检查应用程序是否正在通过 SBT 运行?
【发布时间】:2016-04-28 10:42:50
【问题描述】:

我正在尝试让我的应用程序使用System.exit(<int>),这样当在 SBT 之外通过它自己的命令行运行时,它会返回一个有用的退出代码。

当我在运行 SBT 的 run 命令时退出时,我收到以下消息:

Exception: sbt.TrapExitSecurityException thrown from the UncaughtExceptionHandler in thread "run-main-e"

我知道这条消息的用途,以及为什么它必须在那里。

如果我的代码通过 SBT 运行,我想避免退出。是否可以检测代码是否正在通过 SBT 运行?如果有,怎么做?

【问题讨论】:

  • 你的 main 可以检查堆栈中的 sbt,Thread.currentThread.getStack。

标签: scala sbt


【解决方案1】:

您可以通过使用 SBT 的 fork 设置来解决此问题。在你的 build.sbt 中,添加:

fork := true

要进一步细化要分叉的任务,请参阅 SBT 的文档:http://www.scala-sbt.org/0.13/docs/Forking.html

【讨论】:

  • 这样做有什么副作用?是否影响调试?
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
相关资源
最近更新 更多