您可能对“Shell”和“Console”通常是同义词感到困惑,但它们实际上与 sbt 有不同的含义。
sbt shell - 是,嗯,当你在交互模式下运行时,sbt 给你的 shell - 即当你从终端运行 sbt 时。这使您可以访问其他令人兴奋的事情,例如运行应用程序(使用run 命令)、检查构建(inspect ...)、运行测试(显然是test)等等。
sbt 控制台 - 是一个交互式 REPL (read-evaluate-perform-loop),它为您提供 scala 作为解释器 - 即您可以输入(或粘贴)一些 scala 代码,它会立即编译和评估 - 输出结果。 Sbt console 也可以从 sbt shell 获得——通过运行console。
因此,为了运行您的程序,您有两个选项(除了 IntelliJ“运行”对话框):
- 从您的终端执行
sbt run
- 从终端执行
sbt,然后等待 sbt 初始化,然后在 sbt shell 中执行 run。
请参阅sbt docs 了解有关运行 sbt 的不同方式的更多详细信息(剧透:还有“批处理”模式,您可以在其中从终端运行 sbt run - 它与 sbt 完全相同,然后run)。
Sbt Reference manual 也可能会有所帮助 - 特别是它涵盖了 sbt console 命令。
那么 SBT 呢?真的需要吗?或者我不能将它用于 Scala 吗?
这不是强制性的——你可以用 maven 运行 scala,它只是一个 bit more involved to configure。但是,如果您允许一些个人意见,我建议将 sbt 与 scala 项目(甚至 Java 项目)一起使用。出于一个简单的原因 - sbt 中的构建定义本质上只是 scala 代码 - 您可以在构建中使用任何语言功能、第三方库甚至自定义代码 - 这有时非常有用。与 maven 相比,我认为这是向前迈出的一大步,因为在 maven 中,您使用 mvn 工具及其插件定义的基于 XML 的“语言”定义构建 - 可定制性要低得多。
不过,gradle 也有这个优势,所以请选择最适合您需求的工具。