2011-03-17 96 views
10

我目前正在使用IDEA的fsc构建机制来开发Scala。它仍然有点慢,不得不(重新)启动编译服务器是一件痛苦的事情。许多人在这里建议将SBT与IDEA一起作为构建工具。Scala + IDEA:sbt和fsc的优点和缺点

你认为每种方法的优缺点是什么?

+0

http://stackoverflow.com/ques上的部分(部分)答案tions/3606591/why-does-intellij-idea-compile-scala-so-slowly – VonC 2011-03-17 20:55:29

回答

10

我试了两次,最后我更喜欢直接编译。

缺点?我真的很想念能够点击编译错误并直接修复代码,但是......在sbt中编译只是更快。

Idea Scala插件的每晚构建可以在质量/性能方面有所不同,但最近它变得越来越好。 Scala插件现在可以标记一些错误,之前我不得不运行编译来捕获。 (例如,我跑夜间生成0.4.693和新方法检查已经死亡的帮助。)

我用命令行SBT生活建议:启动SBT起身离开它交互的运行,只要尽可能利用所有加载和JIT编辑的优势。

sbt left running will fall over over最终,但是通过在你的sbt包装器中给它更多的内存,你可以使这种情况很少发生。

下面是适用于我的sbt启动包装器。

java -Xms512M -Xmx1500M -XX:MaxPermSize=512m -jar `dirname $0`/sbt-launch.jar "[email protected]" 

我最大的与SBT 0.7的问题是,它经常返回并重新编译,似乎只有切向我实际上改变了代码文件的伟大大片。 (尽管如此,仍然比Idea和fsc更快!)

好消息:sbt 0.9有一些很棒的增量编译改进。不幸的是,从0.7到0.9的迁移路线仍处于初期阶段。如果您有兴趣,Mark Harrah在NEScala的演讲网站http://www.nescala.org/2011/

有用的插件

+2

有一个Emacs插件,它允许你在一个单独的缓冲区中使用sbt,另一个使你能够点击sbt错误信息,跳转到在你的源代码中的适当位置:http://stackoverflow.com/questions/4112838/emacs-ensime-and-sbt – axel22 2011-03-17 21:25:10

+0

所以有没有办法让sbt编译错误的想法?这是我想知道的问题之一。认为sbt插件会处理这个问题。 – ziggystar 2011-03-17 21:52:39

+0

我从来没有使用过的想法,所以我不知道是否有这样的插件。 – axel22 2011-03-17 21:56:45