Статьи

Основы SBT

Sbt — это инструмент де-факто для сборки в сообществе Scala.
Привыкнув к другим инструментам сборки, вы будете знакомы с командами

  • clean — удаляет файлы, созданные сборкой, такие как сгенерированные источники, скомпилированные классы и кэши задач.
  • compile — компилирует исходники
  • test — выполняет все тесты
  • package — производит основной артефакт, такой как бинарный кувшин Обычно это псевдоним для задачи, которая фактически выполняет упаковку.
  • help — отображает это справочное сообщение или печатает подробную справку по запрошенным командам (запустите «help»).
  • console — запускает интерпретатор Scala с классами проекта на пути к классам.

Тогда у нас есть дополнительные команды, такие как

    • run — запускает основной класс, передавая аргументы, указанные в командной строке.
    • tasks — перечисляет задачи, определенные для текущего проекта.
    • reload — (Пере) загружает текущий проект или изменения в проекте плагинов или возвращает из него.
    • console — запускает интерпретатор Scala с классами проекта на пути к классам.

Ключевой функциональностью является новая команда.

Например, используя new, мы можем создать проект из указанного шаблона (например, scala-seed.g8), используя giter8.

1
2
3
4
5
6
7
8
sbt new scala/scala-seed.g8
 
...
Minimum Scala build.
 
name [My Something Project]: hello
 
Template applied in ./hello

Предыдущий фрагмент создает проект с именем hello.

Файл build.sbt содержит последовательность пар ключ-значение, называемых установочными выражениями. Левая сторона — это ключ, а правая сторона — это корпус.
Есть три типа ключей.

  • SettingKey [T]: ключ для значения, вычисляемого один раз (значение вычисляется
    при загрузке подпроекта и держится вокруг).
  • TaskKey [T]: ключ для значения, называемого задачей, которую необходимо пересчитать
    каждый раз, потенциально с побочными эффектами.
  • InputKey [T]: ключ для задачи, аргументы командной строки которой являются входными.

Например, если мы хотим добавить еще одну задачу к нашему предыдущему проекту, которая печатает привет, то мы добавим следующие строки в файл build.sbt.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
import Dependencies._
 
lazy val hello = taskKey[Unit]("An example task")
 
lazy val root = (project in file(".")).
settings(
hello := { println("Hello!") },
inThisBuild(List(
organization := "com.example",
scalaVersion := "2.12.2",
version := "0.1.0-SNAPSHOT"
)),
name := "Hello",
libraryDependencies += scalaTest % Test
)

Мы можем либо запустить задачу, либо запросить дополнительную информацию о ней.

1
2
3
4
5
6
7
>sbt
> hello
Hello!
[success] Total time: 0 s, completed May 1, 2017 6:08:36 PM
> help hello
An example task
>

В зависимости от проекта и используемого плагина будут определены дополнительные задачи и настройки.

В следующем посте мы проверим интеграцию play и sbt, а также некоторые основные команды.

Ссылка: Основы SBT от нашего партнера JCG Эммануила Гкациоураса в блоге gkatzioura .