Scala + IDEA: за и против sbt и fsc

В настоящее время я использую механизм сборки IDEA с fsc для разработки с помощью Scala. Он все еще немного медленный, и необходимость (пере) запуска сервера компиляции - это боль. Многие люди здесь предлагают SBT в качестве инструмента сборки вместе с IDEA.

Что вы считаете за и против каждого подхода?

Ответ 1

Я попробовал оба, и в конце я предпочитаю прямой sbt для компиляции.

Против? Мне очень не хватает возможности щелкнуть ошибки компиляции и исправить код напрямую, но... компиляция в sbt выполняется намного быстрее.

Ночные сборки плагина Idea Scala могут отличаться по качеству/производительности, но в последнее время все лучше и лучше. В плагине Scala теперь можно отметить ряд ошибок, которые до того, как я должен был запустить компиляцию, чтобы поймать. (Например, я запускаю ночную сборку 0.4.693, и новые проверки методов уже были полезны.)

Мой совет по жизни с sbt в командной строке: запустите sbt и оставьте его в интерактивном режиме, насколько это возможно, чтобы использовать все загружаемое и JIT-ed.

sbt left running упадет в конечном итоге, но, предоставив ему больше памяти в вашей 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 все еще находится в первых рядах. Презентация Марка Харры в NEScala находится в режиме http://www.nescala.org/2011/, если вам интересно.

Полезные плагины

  • http://github.com/mpeltonen/sbt-idea - легко создать и сохранить проект Idea в синхронизации с вашим проектом sbt
  • http://github.com/orfjackal/idea-sbt-plugin - позволяет создавать профили запуска для sbt из Idea (я нашел это медленнее, чем запуск sbt в командной строке в октябре прошлого года - но я вижу, что orfjackal все еще развивается, поэтому я должен дать ему еще один снимок)