В цьому посібнику ми побачимо як будувати 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.