Поиск…


Несколько проектов в одной сборке (подпроекты)

Иногда сборка объединяет несколько исходных каталогов, каждый из которых является их собственным «проектом». Например, у вас может быть такая структура сборки, как это:

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

Это отобразит значение этой настройки.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow