Автор (ы) оригинала | Марк Харра |
---|---|
Разработчики) | Lightbend и сообщество |
Стабильный выпуск | |
Репозиторий | |
Написано в | Scala |
Операционная система | Кроссплатформенность |
Платформа | Ява |
Тип | Автоматизация сборки |
Лицензия | Лицензия BSD |
Веб-сайт | scala-sbt |
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]
- ^ eed3si9n (04.04.2021). «Анонс: сбт 1.5.0» . eed3si9n.com . Проверено 5 апреля 2021 .
- ^ Публичные репозитории, размещенные на github, в которых упоминается sbt
- ^ Начало работы с Lift
- ^ a b «Цинк и инкрементальная компиляция» . блог typesafe. 13 августа 2012 . Проверено 22 августа 2012 года . CS1 maint: обескураженный параметр ( ссылка )
- ↑ Гольдин, Евгений. «Инструмент сборки sbt Scala» . Проверено 7 мая 2012 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Scala 2.9.0 final" . 12 мая 2011 . Проверено 22 августа 2012 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Часто задаваемые вопросы
- ^ sbt: определение сборки .sbt
- ^ "Плагины" . сбт . Проверено 17 октября 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Плагины сообщества sbt" . Проверено 17 октября 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ↑ Coda Hale (29 ноября 2011 г.). «Остальная часть рассказа» . Проверено 22 августа 2012 года . CS1 maint: обескураженный параметр ( ссылка )Это запись в блоге, дающая контекст связанному электронному письму, в котором описаны проблемы с sbt.
- ^ «Журналы отчетов об ошибках Debian - # 639910, RFP: simple-build-tool - для проектов scala и java» . Проверено 28 июн 2015 . CS1 maint: обескураженный параметр ( ссылка ), включает беседу с разработчиком SBT.
Внешние ссылки [ править ]
- Официальный веб-сайт