• Совмещает объектно-ориентированный и функциональный подходы • Используется в Linkedin, Twitter, Foursquare, Coursera. • SBT – система сборки проектов на Scala и Java. • Автоматическое разрешение зависимостей (Ivy) • Инкрементальная компиляция кода на Scala и Java • Поддержка расширений и задач на Scala • Интерактивное управление (консоль команд) 2/13
• Совмещает объектно-ориентированный и функциональный подходы • Используется в Linkedin, Twitter, Foursquare, Coursera. • SBT – система сборки проектов на Scala и Java. • Автоматическое разрешение зависимостей (Ivy) • Инкрементальная компиляция кода на Scala и Java • Поддержка расширений и задач на Scala • Интерактивное управление (консоль команд) • sbt-remote-control – проект позволяющий запускать SBT в режиме сервера и посылать ему команды удаленно. Используется в Typesafe Activator 2/13
SBT генерирующие (по запросу) файлы необходимые для открытия проекта в соответствующей среде разработки • Гибкие в настройке, но при изменении проекта SBT надо все перегенерировать вручную 3/13
SBT генерирующие (по запросу) файлы необходимые для открытия проекта в соответствующей среде разработки • Гибкие в настройке, но при изменении проекта SBT надо все перегенерировать вручную • Встроенная поддержка SBT в IDEA • Не требует дополнительной настройки • Автоматически обновляет проект IDEA при изменении параметров проекта SBT 3/13
SBT могут быть представлены проектом IDE из-за ограничений самой IDE • Проблема 1: некорректное поведение во время редактирования • Проблема 2: некорректные компиляция и/или тестирование средствами IDE 4/13
SBT могут быть представлены проектом IDE из-за ограничений самой IDE • Проблема 1: некорректное поведение во время редактирования • Проблема 2: некорректные компиляция и/или тестирование средствами IDE • Решается делегированием этих задач SBT! 4/13
• Импорта проекта: извлечения списка модулей, библиотек и зависимостей между ними • Компиляции проекта • Выполнения любыx другиx команд SBT (интерактивная консоль) 5/13
реализовать подсистему импорта с учетом следующих условий • Условие 1: разбить алгоритм построения проекта IDE на части с возможностью подключения/отключения различных частей при определенных условиях 9/13
реализовать подсистему импорта с учетом следующих условий • Условие 1: разбить алгоритм построения проекта IDE на части с возможностью подключения/отключения различных частей при определенных условиях • Условие 2: по возможности использовать IDEA External System, но обеспечить простой переход от нее к работе с сервисами IDEA напрямую 9/13
Project): (Future[Unit], Subscription) } • Наследники инкапсулируют определенную часть алгоритма генерации • Позволяет подключаться/отключаться при необходимости 10/13
Project): (Future[Unit], Subscription) } • Наследники инкапсулируют определенную часть алгоритма генерации • Позволяет подключаться/отключаться при необходимости • Работа с проектом через собственный интерфейс Project позволяет организовать работу как через External System, так и напрямую с сервисами IDEA 10/13
языке Scala (https://github.com/dancingrobot84/intellij-sbt-remote) • В sbt-remote-control были внесены дополнения и исправления (информация о внутренних зависимостях проекта, используемых расширениях SBT и прочее) 12/13
языке Scala (https://github.com/dancingrobot84/intellij-sbt-remote) • В sbt-remote-control были внесены дополнения и исправления (информация о внутренних зависимостях проекта, используемых расширениях SBT и прочее) • Архитектура подсистемы импорта была частично перенесена в расширение IntelliJ Scala 12/13