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

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

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, он может быть полностью интегрирован. Ты можешь!--24-->есть идея использовать sbt непрерывно компилировать ваш проект, и вице versa вы можете использовать sbt для быстрого генерировать проекты идей. Последнее чрезвычайно полезно, если вы находитесь в цикле "моментального снимка" с в зависимости от других ваших собственных библиотек, которые натыкаются от младшей версии до младшей версии-просто закройте проект, обновите версию в файле сборки, повторно запустите gen-idea задача и повторно откройте проект: обновления сделаны.
  • поставляется с большинством задач, которые вам понадобятся (compile, test, run, doc, publish-local, console) -- в console является одним из лучших особенностей.
  • некоторые люди выделяют функцию, что зависимости могут быть исходными репозиториями, непосредственно захваченными из GitHub. Я не использовал это, поэтому не могу комментировать здесь.

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