В этом руководстве мы увидим, как создать проект 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 version - это 1.8, а sbt version не ниже 0.13.13
- Выберите Use auto-import, чтобы доступные зависимости загружались автоматически.
- Выберите Finish
Разбор структуры каталогов
sbt создает множество каталогов, которые могут быть полезны, когда вы начнете создавать более сложные проекты. На данный момент вы можете игнорировать большинство из них, но вот объяснение, для чего все это:
- .idea (файлы IntelliJ)
- project (плагины и дополнительные настройки sbt)
- src (исходные файлы)
- main (код приложения)
- java (исходные файлы Java)
- scala (исходные файлы Scala) <-- это все, что вам сейчас нужно
- scala-2.12 (файлы, специфичные для Scala 2.12)
- test (модульные тесты)
- target (сгенерированные файлы)
- build.sbt (файл определения сборки для 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
с помощью обычного импорта.
Вы можете найти больше опубликованных библиотек на Scaladex, каталоге библиотек Scala,
где вы также можете скопировать указанную выше информацию о зависимостях для вставки в свой файл build.sbt
.
Следующие шаги
Перейдите к следующему руководству из серии getting started with IntelliJ и узнайте, как тестировать Scala в IntelliJ с помощью ScalaTest.
или
- The Scala Book, содержащая набор коротких уроков, знакомящих с основными функциями Scala.
- Тур по Scala для краткого ознакомления с возможностями Scala.
- Продолжайте изучать Scala в интерактивном режиме на Scala Exercises.