sbt
проектов
Поиск…
Несколько проектов в одной сборке (подпроекты)
Иногда сборка объединяет несколько исходных каталогов, каждый из которых является их собственным «проектом». Например, у вас может быть такая структура сборки, как это:
projectName / build.sbt project / src / main / ... test / ... core / src / main / ... test / ... webapp / src / main / ... test / ...
В вышеупомянутом проекте код в projectName/src
считается root
проектом. Есть еще два модуля, или «подпроекты», core
и webapp
.
Настройка подпроекта аналогична настройке корневого проекта, за исключением того, что в проекте указан подкаталог. В этом примере показан корневой проект, который объединяет core
и проект webapp
.
lazy val root = (project in file(".")).aggregate(core,webapp).dependsOn(core, webapp)
lazy val core = (project in file("core"))
lazy val webapp = (project in file("webapp")).dependsOn(core)
Значения, переданные в file()
являются каталогами относительно корня проекта.
Проект webapp
зависит от core
проекта, который обозначается предложением dependsOn
, которое берет значение core
указанное в строке выше. dependsOn
и lazy
оценка гарантируют доступность зависимостей до их использования. В этом случае webapp
зависит от core
, поэтому core
будет скомпилировано до того, как сборка попытается скомпилировать webapp
.
aggregate
задает задачи, определенные в одном проекте, доступным для проекта, который его агрегирует. Например, выполнение compile
в root
проекте также выполняет compile
в core
и webapp
.
Настройка макросов в проекте
В файле build.sbt
(или где проект определен, если он находится в другом месте), добавьте следующий параметр:
scalacOptions += "-language:experimental.macros"
Например, проект может быть определен следующим образом:
lazy val main = project.in(file(".")) // root project
.settings(scalacOptions += "-language:experimental.macros",
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
В приведенном выше примере, paradise
плагин включен для того , чтобы обеспечить полную поддержку Scala 2.10.x
.
Настройки экрана
Когда в консоли SBT вы можете указать все определяемые настройки для проекта:
settings
Или, чтобы получить настройки подпроекта (например, named webapp
):
project webapp
settings
Первая строка над навигацией переходит к конкретному подпроекту.
Чтобы показать значение определенного параметра (например, organization
):
show organization
Это отобразит значение этой настройки.