Jump to content

сбт (программное обеспечение)

СБТ
Оригинальный автор(ы) Марк Харра
Разработчик(и) Скала Центр [1]
Стабильная версия
1.9.9 [2] / 23 февраля 2024 г .; 5 месяцев назад ( 23.02.2024 ) [3]
Репозиторий
Написано в Скала
Операционная система Кросс-платформенный
Платформа Ява
Тип Автоматизация сборки
Лицензия Лицензия БСД
Веб-сайт скала-sbt .org

sbt (первоначально Simple Build Tool , в настоящее время часто считается, что это означает Scala Build Tool или используется как собственное имя). [4] ) — с открытым исходным кодом, инструмент сборки созданный специально для Scala и Java проектов . Его цель — упростить процедуру создания, компиляции , тестирования и упаковки приложений, библиотек и фреймворков. sbt обладает широкими возможностями адаптации, что позволяет разработчикам настраивать процесс сборки в соответствии с конкретными потребностями своего проекта.

sbt предоставляет широкий спектр функций, делающих процесс создания и управления проектами Scala простым и эффективным. [5] Некоторые из ключевых особенностей включают в себя:

  • Управление зависимостями: благодаря возможности автоматической загрузки и обработки зависимостей проекта sbt облегчает использование внешних библиотек и фреймворков.
  • Инкрементная компиляция ' :' sbt может перекомпилировать только те части кода, которые были изменены, что приводит к значительной экономии времени в ходе цикла разработки.
  • Настраиваемый процесс сборки: sbt обладает широкими возможностями настройки, что позволяет разработчикам определять собственные параметры сборки и настраивать процесс сборки в соответствии с уникальными требованиями своих проектов.
  • Экосистема плагинов : sbt может похвастаться экосистемой плагинов, которая расширяет его функциональность, включая дополнительные функции, такие как проверки качества кода, автоматизация развертывания и отчеты о покрытии тестирования. Разработка и интеграция новых плагинов полностью поддерживается и поощряется.
  • Непрерывная компиляция и тестирование . С помощью sbt разработчики могут настроить систему на автоматическую перекомпиляцию и повторный запуск тестов при каждом изменении исходного файла.
  • Многопроектные сборки. Для разработчиков, работающих над несколькими проектами Scala, sbt предлагает полезные функции для управления ими в рамках одной сборки.
  • Интерактивная оболочка : sbt оснащен интерактивной оболочкой, предоставляющей разработчикам удобный метод выполнения задач и команд на протяжении всего процесса разработки.
  • Параллельное выполнение задач: sbt может выполнять задачи параллельно, ускоряя время сборки больших проектов.
  • Интеграция с IDE. Для оптимизации процесса разработки sbt плавно интегрируется с популярными интегрированными средами разработки (IDE), такими как IntelliJ IDEA и Visual Studio Code .

sbt — это де-факто инструмент сборки в сообществе Scala, [6] используется, например, самими компиляторами Scala 2 и Scala 3, [7] [8] Play Framework и Lichess , популярный шахматный сервер. Проект sbt является «загруженным» — он использует sbt для сборки и считает тестирование тестовой версии положительной особенностью.

sbt был первоначально выпущен Марком Харрой как проект с открытым исходным кодом в 2008 году. [9] За прошедшие годы он значительно изменился благодаря многочисленным выпускам, в каждом из которых были представлены новые функции, исправления ошибок и улучшения. Вот обзор важных обновлений, а также ключевых изменений и нововведений, которые они внесли: [10]

  1. sbt 0.3.2 (2008 г.): это был первый официальный выпуск sbt . В нем были представлены элементарные функции, такие как определение проекта, управление зависимостями и компиляция.
  2. sbt 0.7 (2009 г.): создана базовая основа для создания проектов Scala и управления ими. Ключевые функции включали инкрементальную компиляцию, управление зависимостями и простое выполнение задач.
  3. sbt 0.10 (2011 г.): внесен существенный пересмотр синтаксиса определения сборки, сделав его более выразительным и гибким. Также были улучшены производительность, управление зависимостями и конфигурация.
  4. sbt 0.12 (2012 г.): улучшенная поддержка многомодульных проектов, возможность определения пользовательских конфигураций и упрощенная разработка плагинов.
  5. sbt 0.13 (2013 г.): ориентирован на удобство использования и производительность. В этой версии появился Активатор, [11] веб-инструмент для создания и управления проектами. Другие функции включали инкрементальную компиляцию макросов, улучшенную обработку ошибок определения сборки и различные оптимизации производительности. 0.13 оставалась основной версией SBT в течение следующих четырех лет.
  6. sbt внесены существенные изменения 1.0 (2017): в кодовую базу sbt с упором на производительность и стабильность, но также предпринята попытка максимально сохранить совместимость со старыми версиями. Новые функции включали унифицированный синтаксис косой черты для определения задач и настроек, улучшенное управление зависимостями и Scala 2.12 в качестве языковой версии, используемой для определений сборок. Более того, переход на новый инкрементный компилятор Zinc 1.0 еще больше повысил производительность инкрементальной компиляции. [12]
  7. sbt 1.1 (2018 г.): в этом выпуске запущен сервер sbt , позволяющий IDE и другим инструментам взаимодействовать с sbt через протокол языкового сервера (LSP). Также добавлена ​​поддержка перекрестной сборки Scala.js. [13] и Скала Натив [14] и улучшено выполнение различных задач.
  8. sbt 1.3 (2019): эта версия значительно улучшила взаимодействие с пользователем за счет ускорения разрешения зависимостей за счет внедрения Coursier. [15] в качестве менеджера зависимостей по умолчанию. Дальнейшие улучшения включали улучшение механизма кэширования сборок и поддержку JDK 11.
  9. sbt 1.5 (2021 г.): добавлена ​​поддержка Scala 3. Также были внесены улучшения в поддержку BSP (протокол сервера сборки), [16] обеспечение лучшей интеграции с IDE.
  10. sbt 1.8 (2022 г.): в этом выпуске были обновлены Coursier и улучшена поддержка Ivy.
  11. sbt 1.9 (2023 г.): больше обновлений Coursier и текстовое меню, облегчающее создание новых проектов.

Файлы сборки

[ редактировать ]

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

val scalaTest   = "org.scalatest" %% "scalatest" % "3.2.14"
val akkaVersion = "2.6.20"
val akkaActor   = "com.typesafe.akka" %% "akka-actor" % akkaVersion
val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % akkaVersion

// Set the Scala version used by this build to 2.13.10.
ThisBuild / scalaVersion := "2.13.10"
ThisBuild / version      := "0.1.0-SNAPSHOT"
ThisBuild / organization := "com.example"

lazy val root = (project in file("."))
  .aggregate(helloCore)
  .dependsOn(helloCore)
  .settings(
    name := "Hello",
    // Add a single dependency, for tests.
    libraryDependencies += scalaTest % Test
  )

lazy val helloCore = (project in file("core"))
  .settings(
    name := "Hello Core",
    libraryDependencies += scalaTest % Test,
    // Add multiple dependencies.
    libraryDependencies ++= List(akkaActor, akkaCluster)
  )

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

[ редактировать ]

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

$ sbt clean

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

$ sbt "testOnly Foo" publish

Расширяемость и интеграция

[ редактировать ]

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

И IntelliJ IDEA, и VS Code поддерживают sbt через свои плагины Scala. В обеих этих IDE можно создать новый проект с исходными файлами сборки sbt , а также, если проект уже включает файл сборки sbt , его можно использовать для создания конфигурации проекта для данной IDE.

Сравнения

[ редактировать ]

Основными альтернативами sbt среди инструментов сборки являются Gradle и Apache Maven , оба являются признанными инструментами сборки для проектов, разработанных на платформе JVM. В экосистеме Scala еще одним популярным инструментом сборки является Mill. [19] Выбор между sbt , Gradle, Apache Maven и Mill зависит от конкретных требований вашего проекта и вашего знакомства с инструментами. Если вы работаете в основном со Scala, sbt лучше подойдет или Mill, а если вы работаете с несколькими языками или технологиями, лучше выбрать один из двух других.

СБТ Градл Мавен Мельница
Язык и целевая аудитория Специально разработан для проектов Scala и Java. Предлагает функции, отвечающие уникальным потребностям экосистемы Scala. Наиболее часто используется в проектах Scala. Универсальный, поддерживает несколько языков, включая Java, Groovy, Kotlin, Scala и другие. Чаще всего используется в проектах Java и Kotlin. Используется для проектов Java, но также может поддерживать другие языки программирования через плагины, такие как Scala, Groovy и Kotlin. Наиболее часто используется в проектах Java. В первую очередь ориентирован на Scala, но поддерживает компиляцию кода Java в смешанных проектах Scala/Java. Наиболее часто используется в проектах Scala и особенно привлекателен для разработчиков, которые ценят простоту и предсказуемость в своих инструментах сборки.
Синтаксис файла сборки Файлы сборки пишутся на Scala, используя выразительность Scala и безопасность типов во время определения сборки. Файлы сборки могут быть написаны на Groovy или Kotlin. Синтаксис имеет тенденцию быть более декларативным. Использует XML для записи файлов объектной модели проекта (POM). Синтаксис более многословен и декларативен, в нем отдается предпочтение стандартизированной структуре проекта и соглашениям, а не конфигурации. Использует простой Scala для своих файлов сборки. Его определения сборки записываются как определения объектов Scala, а задачи определяются как методы внутри этих объектов.
Инкрементная компиляция Особенности инкрементальной компиляции: компилируются только те участки кода, которые были изменены, что ускоряет процесс разработки. Также поддерживает инкрементальную компиляцию для проектов Java и Kotlin, но его возможности для инкрементной компиляции Scala не так хорошо развиты, как у sbt . По умолчанию он не поддерживает инкрементальную компиляцию. Его можно включить с помощью таких плагинов, как scala-maven-plugin для проектов Scala или функции инкрементной компиляции java-compiler-plugin для проектов Java. Особенности инкрементальной компиляции. Кроме того, используется агрессивное кэширование выходных данных задач и изолированные среды для каждой задачи, что еще больше повышает скорость и точность сборок.
Расширяемость и плагины Предлагает обширную экосистему плагинов, позволяющую разработчикам расширять функциональность инструмента сборки. Благодаря более широкому распространению на многих языках и платформах, экосистема плагинов Gradle более обширна и разнообразна, чем у sbt . Имеет более крупную и более зрелую экосистему плагинов, чем sbt, благодаря своей обширной истории и широкому признанию в сообществе Java. Имеет меньшую экосистему плагинов, чем sbt , но поддерживает расширяемость другим способом:

В Mill вы можете определять повторно используемые модули и библиотеки непосредственно в файлах сборки, в простой Scala. Вы также можете импортировать и использовать сторонние библиотеки Scala в своих файлах сборки.

Производительность Использует оптимизацию производительности, такую ​​как инкрементальная компиляция и параллельное выполнение задач, но результаты различаются в зависимости от сложности проекта и конкретных случаев использования. Уделяет особое внимание производительности за счет использования процесса-демона, работающего в фоновом режиме, для ускорения сборки. По умолчанию он не поддерживает ни инкрементальную компиляцию, ни параллельное выполнение. И то, и другое может быть достигнуто с помощью плагинов и опций инструментов сборки. Поддерживает инкрементную компиляцию и параллельное выполнение. Обычно считается, что используется более агрессивный подход к кэшированию, что часто приводит к более быстрому увеличению времени сборки по сравнению с sbt , особенно для более крупных проектов.
Жизненный цикл сборки Использует сложный DSL (доменно-специфичный язык) для определений сборки, предлагая более детальный контроль над процессом сборки. Его DSL проще, чем у sbt , более декларативен и может показаться более интуитивным для новичков. Вводит фиксированный жизненный цикл сборки, состоящий из четко определенных этапов, таких как компиляция, тестирование, упаковка, установка и т. д. Благодаря этому Maven обеспечивает согласованную структуру всех проектов, но ему не хватает гибкости. Сборки определяются с точки зрения задач. Каждая задача представляет собой единицу работы в сборке, например компиляцию модуля, запуск тестов, создание пакета и т. д. Задачи могут зависеть от других задач. Милль заботится о том, чтобы задачи выполнялись в правильном порядке.
Сообщество Имеет активное поддерживающее сообщество, в основном сосредоточенное на языке программирования Scala. Его сообщество более обширно и разнообразно, чем у sbt , и фокусируется на различных языках программирования и технологиях. Его сообщество больше и разнообразнее, оно работает с несколькими языками программирования и технологиями. Mill — активно развивающийся проект с открытым исходным кодом. Сообщество вокруг него не такое большое и устоявшееся, как сообщество вокруг sbt , но оно активное и заинтересованное.

См. также

[ редактировать ]
  1. ^ «Lightbend передает право собственности на sbt Scala Center» . scala-lang.org . Проверено 8 марта 2024 г.
  2. ^ eed3si9n (22 октября 2023 г.). «Выпуски» . github.com . Проверено 11 ноября 2023 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  3. ^ eed3si9n (22 октября 2023 г.). «1.9.9» . github.com . Проверено 11 ноября 2023 г. {{cite web}}: CS1 maint: числовые имена: список авторов ( ссылка )
  4. ^ «Справочное руководство sbt — Часто задаваемые вопросы» . www.scala-sbt.org . Проверено 15 июня 2023 г.
  5. ^ «Справочное руководство sbt — Справочное руководство sbt» . www.scala-sbt.org . Проверено 15 июня 2023 г.
  6. ^ «Создавайте программное обеспечение лучше вместе» . Гитхаб . Проверено 15 июня 2023 г.
  7. ^ Добро пожаловать! , Язык программирования Scala, 14 июня 2023 г. , получено 15 июня 2023 г.
  8. ^ Дотти , Лаборатория методов программирования EPFL, 14 июня 2023 г. , получено 15 июня 2023 г.
  9. ^ «Справочное руководство sbt — Руководство разработчика (в разработке)» . www.scala-sbt.org . Проверено 15 июня 2023 г.
  10. ^ «Релиз · sbt/sbt» . Гитхаб . Проверено 15 июня 2023 г.
  11. ^ Инк, Лайтбенд. «Выпущен Typesafe Activator 1.3.0: содержит новый сервер sbt и пользовательский интерфейс | @lightbend» . Изгиб света . Проверено 15 июня 2023 г. {{cite web}}: |last= имеет общее имя ( справка )
  12. ^ «Ускорьте время компиляции с помощью Zinc 1.0» . www.scala-lang.org . Проверено 15 июня 2023 г.
  13. ^ «Скала.js» . Скала.js . Проверено 15 июня 2023 г.
  14. ^ «Scala Native — документация Scala Native 0.4.14» . scala-native.org . Проверено 15 июня 2023 г.
  15. ^ «Курьер · Извлечение артефактов из Pure Scala» . get-coursier.io . Проверено 15 июня 2023 г.
  16. ^ «Протокол создания сервера» . build-server-protocol.github.io . Проверено 15 июня 2023 г.
  17. ^ sbt: определение сборки .sbt
  18. ^ «Плагины» . что-то . Проверено 17 октября 2014 г.
  19. ^ «Знакомство с Мельницей::Мельница» . mill-build.com . Проверено 15 июня 2023 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8e3f81bc287e7daec167918a4d6f0925__1712127000
URL1:https://arc.ask3.ru/arc/aa/8e/25/8e3f81bc287e7daec167918a4d6f0925.html
Заголовок, (Title) документа по адресу, URL1:
sbt (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)