如何在 Sublime Text 3 中构建 Scala 应用程序?

8
我希望能在Mac 10.9.3上使用Sublime Text 3构建Scala应用程序。我已经安装了Scala 2.11.1和sbt 0.13.5,并且它们都可以正常工作。我是通过homebrew安装的。
然而,我似乎找不到如何为Scala项目创建构建系统。例如,下面的这个并不能正常工作:
{
    "cmd": ["sbt", "test"],
    "selector": "source.scala",
    "working_dir": "${project_path}"
}

我还找到了几个其他的方法,但它们对我都没有起作用。你有什么想法吗?
更新:
[Errno 2] No such file or directory: 'sbt'
[cmd: ['sbt', 'test']]
[dir: /Users/alex/Documents/projects/scala/dir1]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
[Finished]

更新2:

{
    "cmd": ["/usr/local/bin/sbt", "test"],
    "selector": "source.scala",
    "working_dir": "${project_path}"
}

一个应用程序:
class MainTest extends App {
  println("Hellowa!")     
}

输出结果:
 [0m[[0minfo[0m] [0mSet current project to scala (in build file:/Users/alex/Documents/projects/scala/)[0m
[0m[[0minfo[0m] [0mCompiling 1 Scala source to /Users/alex/Documents/projects/scala/target/scala-2.10/classes...[0m
[0m[[32msuccess[0m] [0mTotal time: 4 s, completed Jun 16, 2014 4:51:38 PM[0m
[Finished in 7.2s]

1
当你说“它们不工作”时,你是什么意思?你是否收到任何错误消息,如果有的话是什么?这个命令从终端可以工作吗?如果你想让任何人帮助你,你需要提供更多的信息... - MattDMo
@MattDMo,我稍后会发布它们。 - Incerteza
@MattDMo,当从终端运行时,sbt本身可以正常工作。 - Incerteza
5个回答

4

SublimeSBT 可能是一个解决方案,它是 Sublime Text 2 和 Sublime Text 3 的 Scala SBT 构建工具集成。


为什么我要使用那个复杂的第三方解决方案,而不是创建自己的构建系统,这样会更容易?我不喜欢库,我喜欢简单。 - Incerteza
你不会这样做的,因为你说过“我不喜欢库,我喜欢简单”。 :) - Jacek Laskowski
我想我会的。 - Incerteza
一个崇高的构建工具会运行一条命令然后退出。当你不关闭它时,Sbt 的工作效果最好。它需要一些时间来初始化,并且会受益于JIT。这就是为什么你最好使用SublimeSbt的原因。 - Guillaume Massé

4
Homebrew会将可执行文件安装在/usr/local/bin目录下,但是你提供的错误信息显示该目录不在你的路径中。
有两种方法可以解决这个问题:
1)将"cmd": ["sbt", "test"]改为"cmd": ["/usr/local/bin/sbt", "test"] 2)将/usr/local/bin添加到你的PATH环境变量中。请注意,你需要以一种GUI应用程序(如Sublime Text)能够注意到更改的方式进行操作;详见设置OS X中的环境变量?

就像我说的那样,我可以从终端运行“sbt”,而且它能够正常工作。 - Incerteza
2
仅仅因为你的shell知道sbt的位置,并不意味着像Sublime这样的GUI应用程序也知道。你假设有一个在任何地方都相同的单一PATH是错误的。 - Seth Tisue
你需要运行(run),而不是测试(test)。 后者无效,因为你没有定义任何测试。 - Seth Tisue
没有检测到主类,我以为可以在没有 sbt 特定文件的情况下运行单个 Scala 文件。 - Incerteza
要提出单独的问题吗?这是可能的,但如果您想讨论详细信息,我们需要一个新的问题。 - Seth Tisue
显示剩余2条评论

1
个人而言,我使用支持SBT的SublimeREPL。SublimeREPL允许您从Sublime启动SBT。这避免了我下载另一个软件包,因为我已经为python使用了SublimeSBT。我希望有一个最小的配置来编写Scala代码,因为我的IDE太慢了。我首先尝试使用自己的构建系统,但最终使用了SBT。与其他构建项目的方式相比,SBT提供了很多优势。
首先,它只编译需要编译的文件(已修改的文件和依赖它们的文件)。 其次,对于导入库非常方便。在您的build.sbt文件中插入一行代码即可从GitHub导入库(通常此行代码在GitHub主页上有说明)。 第三,您可以通过命令“〜compile”或“〜; compile; runMain' mainclass'”每次保存时都进行编译。
我认为后者非常有用,因为使用Scala编译通常需要很长时间。我经常开始添加一个简单的函数,保存,然后在编译时改进我的第一稿。
主要限制是您必须将代码放在src/main/scala或src/main/java中(如果还有Java文件),并且您必须使用Sublime打开整个根目录。

1

为什么不呢 :D 我已经使用SublimeSBT有一段时间了,唯一的复杂性就是调用cmd+shift+p,然后跟随sbt start continuous testing。我建议在自己创建构建系统之前先尝试使用SBTSublime。


为什么不把一行代码添加到Scala.sublime-build文件中呢? - Incerteza
当然可以,但这有点像圣诞节和复活节的讨论,不是吗?我的建议是尝试SublimeSBT,因为你可以在几秒钟内运行它,并在同样的时间内删除它,但如果你选择走自己的路,并且它适合你-那就更好了。 - Bolek Tekielski

0

仅适用于 Windows! 如果您已经将 bin 文件夹添加到 PATH 变量中:

{
    "cmd": ["sbt.bat", "test"],
    "selector": "source.scala",
    "working_dir": "${project_path}"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接