В цьому посібнику ми побачимо як будувати Scala проєкти використовуючи sbt. sbt — популярний інструмент для компіляції, запуску та тестування проєктів Scala будь-якої складності. Використання інструменту збірки, такого як sbt (або Maven/Gradle), стає необхідним, коли ви створюєте проєкти із залежностями або кількома файлами коду. Ми припускаємо, що ви завершили перший посібник.
Створення проєкту
У цьому розділі ми покажемо вам, як створити проєкт в IntelliJ. Однак, якщо вам комфортніше працювати у терміналі, ми рекомендуємо подивитись початок роботи зі Scala і sbt у командному рядку і потім повернутися сюди до розділу «Написання коду на Scala».
- Якщо ви ще не створили проєкт у терміналі, запустіть IntelliJ та оберіть “Створити новий проєкт (Create New Project)”
    - На панелі зліва оберіть Scala, а на панелі справа оберіть sbt
- Натисніть Next
- Назвіть ваш проєкт “SbtExampleProject”
 
- Якщо ви вже створили проєкт через термінал, запустіть IntelliJ, оберіть Імпортувати проєкт (Import Project) та відкрийте файл build.sbtвашого проєкту
- Впевніться, що версія JDK 1.8 або вище, та версія sbt 0.13.13 та вище
- Натисніть Use auto-import, щоб залежності автоматично завантажились
- Натисніть Finish
Розуміння структури директорій
Завдяки sbt створюються директорії, які можуть бути корисні у разі розробки складніших проєктів. Поки що ви можете проігнорувати більшість із них, але ось для чого це все:
- .idea (IntelliJ files)
- project (plugins and additional settings for sbt)
- src (source files)
    - main (application code)
        - java (Java source files)
        - scala (Scala source files) <-- This is all we need for now
        - scala-2.12 (Scala 2.12 specific files)
    - test (unit tests)
- target (generated files)
- build.sbt (build definition file for sbt)
Написання коду на Scala
- На панелі Project зліва розкрийте SbtExampleProject=>src=>main
- Натисніть праву кнопку миші, scalaта оберіть New => Package
- Назвіть пакет exampleта натисніть OK (або просто натисніть клавішу Enter або Return).
- Натисніть праву кнопку миші на пакет exampleта оберіть New => Scala class (якщо ви не бачите цю опцію, натисніть праву кнопку миші наSbtExampleProject, натисніть Add Frameworks Support, оберіть Scala та продовжить)
- Назвіть клас Mainта змініть Kind наObject.
- Змініть код у класі на наступний:
@main def run() =
  val ages = Seq(42, 75, 29, 64)
  println(s"The oldest person is ${ages.max}")
Примітка: IntelliJ має власну реалізацію компілятора Scala, тому іноді ваш код є правильним, навіть якщо IntelliJ вказує інше. Ви завжди можете перевірити у командному рядку, чи може sbt запустити ваш проєкт.
Запуск проєкту
- З меню Run оберіть Edit configurations
- Натисніть кнопку + та оберіть sbt Task.
- Назвіть його Run the program.
- В полі Tasks наберіть ~run. Опція~змушує sbt перебудовувати та перезапускати проєкт, коли ви зберігаєте зміни у файлі проєкту.
- Натисніть OK.
- В меню Run натисніть Run ‘Run the program’.
- В коді змініть 75на61та подивіться оновлений результат в консолі.
Додавання залежностей
Давайте ненадовго змістимо фокус на використання опублікованих бібліотек для забезпечення додаткової функціональності ваших програм.
- Відкрийте build.sbtта додайте наступний рядок:
libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2"
Тут libraryDependencies є набором залежностей та використовуючи +=,
ми додаємо залежність scala-parser-combinators до набору залежностей,
які необхідні для sbt та які завантажаться при його запуску. Тепер в будь-якому Scala файлі ви можете використати
класи, об’єкти тощо з scala-parser-combinators через звичайний “import”.
Більше опублікованих бібліотек можна знайти на
Scaladex - індекс бібліотек Scala, місце куди ви можете зайти, щоб скопіювати інформацію про бібліотеку
та додати у ваш build.sbt файл.
Наступні кроки
Перейдіть до наступного навчального матеріалу з серії початок роботи з IntelliJ, та дізнайтесь про тестування Scala в IntelliJ зі ScalaTest.
або
- Книга по Scala, що є набором коротких вступних уроків з основних особливостей.
- Тур по Scala серія коротких оглядових статей про можливості Scala.
- Продовжить вчити Scala інтерактивно виконуючи вправи зі Scala.