Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

sbt - это инструмент сборки с открытым исходным кодом для проектов Scala и Java , похожий на Maven и Ant в Apache .

Его основные особенности:

  • Встроенная поддержка компиляции кода Scala и интеграции со многими тестовыми фреймворками Scala.
  • Непрерывная компиляция, тестирование и развертывание
  • Инкрементное тестирование и компиляция (повторно компилируются только измененные исходные коды, повторно запускаются только затронутые тесты и т. Д.)
  • Описание сборки, написанное на Scala с использованием DSL
  • Управление зависимостями с помощью Apache Ivy (который поддерживает репозитории в формате Maven)
  • Интеграция с интерпретатором Scala для быстрой итерации и отладки
  • Поддержка смешанных проектов Java / Scala

sbt - это де-факто инструмент сборки в сообществе Scala [3], используемый веб-фреймворком Lift [4] и Play Framework .

Lightbend Inc. , коммерческое предприятие Scala , назвала sbt «возможно лучшим инструментом для создания проектов Scala», заявив, что двумя наиболее важными его функциями являются инкрементная компиляция и интерактивная оболочка. [5] При входе в режим непрерывной компиляции компилятор Scala создается только один раз, что исключает последующие затраты на запуск, а изменения исходного файла отслеживаются, так что перекомпилируются только затронутые зависимости. Интерактивная консоль позволяет изменять настройки сборки на лету и входить в Scala REPL вместе со всеми файлами классов проекта. [6] Популярность инкрементальной компиляции побудила Typesafe извлечь эту функцию в виде независимого компонента под названием Zinc. [5]

sbt уже поступал обратно в стандартную библиотеку Scala раньше, когда его API процессов был принят в Scala 2.9. [7]

История [ править ]

sbt был впервые публично объявлен 18 декабря 2008 года Марком Харра - его первоначальным автором. Первоначально это была аббревиатура от «Simple Build Tool», но теперь она известна просто как «sbt». [8]

Файлы сборки [ править ]

Сборка sbt может быть определена с помощью .sbtфайла [9] Ниже приведен пример build.sbtопределения сборки:

val  scalaTest  =  "org.scalatest"  %%  "scalatest"  %  "3.2.7" val  akkaVersion  =  "2.6.13" val  akkaActor  =  "com.typesafe.akka"  %%  "akka-субъект"  %  akkaVersion val  akkaCluster  =  " com.typesafe.akka "  %%  " akka-cluster "  %  akkaVersion// Установите версию Scala, используемую в этой сборке, на 2.13.5. ThisBuild  /  scalaVersion  : =  "2.13.5" ThisBuild  /  version  : =  "0.1.0-SNAPSHOT" ThisBuild  /  organization  : =  "com.example"ленивый  val  root  =  ( проект  в  файле ( "." ))  . агрегат ( helloCore )  . зависит от ( helloCore )  . settings (  name  : =  "Hello" ,  // Добавляем одну зависимость для тестов.  libraryDependencies  + =  scalaTest  %  Test  )lazy  val  helloCore  =  ( проект  в  файле ( "ядро" ))  . settings (  name  : =  "Hello Core" ,  libraryDependencies  + =  scalaTest  %  Test ,  // Добавить несколько зависимостей.  libraryDependencies  ++ =  List ( akkaActor ,  akkaCluster )  )

Пример использования [ править ]

sbt может вызываться для каждой команды сборки, или он может переходить в интерактивный режим, если не задана никакая команда. Чтобы очистить продукты сборки текущей сборки:

$ sbt clean

В одной строке можно использовать несколько команд. Чтобы запустить один тест с именем «Foo» и затем опубликовать экспортированные jar-файлы:

$ sbt "testOnly Foo" опубликовать

Расширяемость и интеграция [ править ]

Функциональность sbt может быть расширена за счет архитектуры плагина. [10] Был создан специальный веб-сайт для подключаемых модулей, предоставленных сообществом, которые охватывают различные области, такие как подписание, упаковка, публикация и выпуск артефактов, подключение к другим службам, таким как блоги и базы данных, или интеграция с другими технологиями, такими как развертывание на Android. Платформа. [11]

Существуют плагины для автоматического создания файлов проекта для IDE Eclipse и IntelliJ IDEA . С другой стороны, плагин IntelliJ IDEA позволяет интегрировать консоль sbt в IDEA, и проекты могут использовать sbt для сборки.

Сравнение и критика [ править ]

Как и в случае с большинством программных инструментов, sbt нашел сторонников и критиков. Его часто сравнивают с Apache Maven , стандартным инструментом сборки в мире Java. В частности, предметно-ориентированный язык, используемый для файлов сборки sbt, вызвал критику как непонятный по сравнению с чисто декларативным подходом XML- файлов Maven . Кроме того, с переходом версии с 0.7 на 0.10 были внесены несовместимые изменения в формат файла и макет. Из-за того, что Maven и sbt были достаточно молоды, было сказано, что Maven предоставляет большее количество подключаемых модулей и что документация sbt отсутствует, хотя другие говорят, что качество документации улучшается. [12]

Проект sbt использует sbt для самостоятельной сборки и считает, что догфудинг является положительной особенностью. Однако для проекта Debian это считается циклической зависимостью , которую они пытаются минимизировать. В результате sbt еще нет в Debian. [13]

См. Также [ править ]

  • Список программного обеспечения для автоматизации сборки

Ссылки [ править ]

  1. ^ [1]
  2. ^ eed3si9n (04.04.2021). «Анонс: сбт 1.5.0» . eed3si9n.com . Проверено 5 апреля 2021 .
  3. ^ Публичные репозитории, размещенные на github, в которых упоминается sbt
  4. ^ Начало работы с Lift
  5. ^ a b «Цинк и инкрементальная компиляция» . блог typesafe. 13 августа 2012 . Проверено 22 августа 2012 года . CS1 maint: обескураженный параметр ( ссылка )
  6. Гольдин, Евгений. «Инструмент сборки sbt Scala» . Проверено 7 мая 2012 года . CS1 maint: обескураженный параметр ( ссылка )
  7. ^ "Scala 2.9.0 final" . 12 мая 2011 . Проверено 22 августа 2012 года . CS1 maint: обескураженный параметр ( ссылка )
  8. ^ Часто задаваемые вопросы
  9. ^ sbt: определение сборки .sbt
  10. ^ "Плагины" . сбт . Проверено 17 октября 2014 года . CS1 maint: обескураженный параметр ( ссылка )
  11. ^ "Плагины сообщества sbt" . Проверено 17 октября 2014 года . CS1 maint: обескураженный параметр ( ссылка )
  12. Coda Hale (29 ноября 2011 г.). «Остальная часть рассказа» . Проверено 22 августа 2012 года . CS1 maint: обескураженный параметр ( ссылка )Это запись в блоге, дающая контекст связанному электронному письму, в котором описаны проблемы с sbt.
  13. ^ «Журналы отчетов об ошибках Debian - # 639910, RFP: simple-build-tool - для проектов scala и java» . Проверено 28 июн 2015 . CS1 maint: обескураженный параметр ( ссылка ), включает беседу с разработчиком SBT.

Внешние ссылки [ править ]

  • Официальный веб-сайт