Компиляция подпроектов в sbt

У меня есть некоторые подпроекты, которые мне нужно скомпилировать с помощью sbt. Структура выглядит так:

main_project
 - sub_project1
 - sub_project2
 - sub_project3

Конечно, у них есть правильная иерархия каталогов (src-main- scala....). Как я могу скомпилировать их все и в каждом из них?

Ответ 1

Смотрите интерактивные проекты:

В интерактивном приглашении sbt введите projects, чтобы перечислить ваши проекты и project <projectname>, чтобы выбрать текущий проект. Когда вы запускаете задачу типа compile, она запускается в текущем проекте. Поэтому вам необязательно компилировать корневой проект, вы можете скомпилировать только подпроект.

Вы можете использовать aggregate для их компиляции.

Ответ 2

Поскольку выбранный ответ, связанная документация изменилась, ответ уже не так ясен.

В build.sbt OP main_project, чтобы собрать их вместе, они должны будут определить aggregate, поскольку новая (er) документация ссылается на:

lazy val root = (project in file("."))
  .aggregate(util, core)

lazy val util = (project in file("util"))

lazy val core = (project in file("core"))

И затем запуск sbt compile в корневом каталоге проекта скомпилирует их все.

Однако, если вы хотите скомпилировать по одному, вы можете перейти к строке/терминалу cmd к корневому проекту (здесь main_project) и затем выполнить следующую команду:

user:main_project$: sbt <project name> / compile

использовать пример постера:

user:main_project$: sbt sub_project1 / compile

(если вы находитесь в терминале SBT, вы можете опустить sbt)