Какой инструмент построения лучше всего подходит для Scala? Каковы плюсы и минусы каждого из них? Как определить, какой из них использовать в проекте?
Плюсы и минусы использования sbt vs maven в проекте Scala
Ответ 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, но, очевидно, миграция не повлияет на вас, если вы начнете с нуля.