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


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

2 129

2 ответа:

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

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

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

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

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

FWIW, есть больше мнений в этот поток списка рассылки scala.

мои 2c являются: идти с sbt, если у вас нет конкретных требований

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

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