2011-03-17 153 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