Плюсы и минусы использования sbt vs maven в проекте Scala - программирование

Плюсы и минусы использования sbt vs maven в проекте Scala

Какой инструмент построения лучше всего подходит для Scala? Каковы плюсы и минусы каждого из них? Как определить, какой из них использовать в проекте?

4b9b3361

Ответ 1

Мы используем Maven для создания проектов Scala на работе, потому что он хорошо интегрируется с нашим CI-сервером. Мы могли бы просто запустить оболочку script, чтобы начать сборку, конечно же, но у нас есть куча другой информации, выходящей из Maven, которую мы хотим зайти в CI. Это единственная причина, по которой я могу думать о том, чтобы использовать Maven для проекта Scala.

В противном случае просто используйте SBT. Вы получаете доступ к тем же зависимостям (действительно лучшая часть о maven, IMHO). Вы также получаете инкрементную компиляцию, которая огромна. Возможность запуска оболочки внутри вашего проекта, что тоже отлично.

ScalaMock работает только с SBT, и вы, вероятно, захотите использовать это, а не для Java mocking library. Кроме того, гораздо проще расширить SBT, так как вы можете написать полный код Scala в файле сборки, так что вам не нужно проходить через все rigamarole написания Mojo.

Короче говоря, просто используйте SBT, если вам не нужна жесткая интеграция в ваш сервер CI.

Ответ 2

Вопрос заключается в том, чтобы просто генерировать множество мнений; было бы лучше иметь четкий список требований или описание вашей среды, предыдущих знаний и т.д.

FWIW, в существует <... scala список рассылки.

Мои 2c: Go с sbt, если у вас нет конкретных требований

  • для простых проектов, он абсолютно без усилий (вам даже не нужен файл сборки до тех пор, пока вы не найдете зависимости)
  • он обычно используется в scala проектах с открытым исходным кодом. Вы можете легко узнать о конфигурации, заглянув в проекты других людей. Кроме того, многие проекты предполагают, что вы используете sbt и предоставляете готовые инструкции по копированию и вставке для добавления их в качестве зависимости от вашего проекта.
  • Если вы используете IntelliJ IDEA, он может быть полностью интегрирован. Вы можете использовать IDEA sbt для непрерывной компиляции вашего проекта, и наоборот, вы можете быстро использовать sbt генерировать проекты IDEA. Последнее чрезвычайно полезно, если вы находитесь в цикле "моментальных снимков", в зависимости от других ваших собственных библиотек, которые попадают из младшей версии в младшую, - просто закройте проект, обновите версию в файле сборки, повторно запустите gen-idea и повторно открыть проект: сделанные обновления.
  • готов к большинству задач, которые вам понадобятся (compile, test, run, doc, publish-local, console) - console - одна из лучших функций.
  • Некоторые люди выделяют функцию, которая может быть источником исходных репозиториев, непосредственно захваченных GitHub. Я не использовал это, поэтому не могу комментировать здесь.

Некоторые люди ненавидят sbt, потому что используют Ivy для управления зависимостями (я не могу прокомментировать ее плюсы и минусы, но большую часть времени это не проблема), некоторые люди ненавидят sbt, потому что вы указываете файл сборки в термины scala DSL вместо XML. Некоторые люди были разочарованы тем, что формат sbt изменился с v0.7 на v0.10, но, очевидно, миграция не повлияет на вас, если вы начнете с нуля.