sbt
Projektowanie
Szukaj…
Wiele projektów w tej samej kompilacji (podprojekty)
Czasami kompilacja łączy wiele katalogów źródłowych, z których każdy jest własnym „projektem”. Na przykład możesz mieć taką strukturę kompilacji:
projectName / build.sbt project / src / main / ... test / ... core / src / main / ... test / ... webapp / src / main / ... test / ...
W powyższym projekcie kod w projectName/src
jest uważany za projekt root
. Istnieją dwa inne moduły lub „podprojekty”, core
i webapp
.
Konfigurowanie podprojektu jest podobne do konfigurowania projektu głównego, z tym wyjątkiem, że podkatalog jest określony w projekcie. Ten przykład pokazuje, że projekt korzeń agreguje się core
i webapp
projektu.
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)
Wartości przekazane do file()
są katalogami względem katalogu głównego projektu.
webapp
projektu zależą od core
projektu, który jest wskazany przez dependsOn
klauzulą, które przyjmuje core
wartości podanej na linii powyżej. dependsOn
i lazy
ocena zapewniają dostępność zależności przed wykorzystaniem ich przez projekty. W tym przypadku, webapp
zależy od core
, więc core
zostaną skompilowane przed próbami budowania skompilować webapp
.
aggregate
udostępnia zadania zdefiniowane w jednym projekcie dla projektu, który go agreguje. Na przykład, wykonanie compile
w root
projektu będzie również wykonać compile
w core
i webapp
.
Skonfiguruj makra w projekcie
W pliku build.sbt
(lub tam, gdzie projekt jest zdefiniowany, jeśli znajduje się w innej lokalizacji), dodaj następujące ustawienie:
scalacOptions += "-language:experimental.macros"
Na przykład projekt można zdefiniować w następujący sposób:
lazy val main = project.in(file(".")) // root project
.settings(scalacOptions += "-language:experimental.macros",
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
W powyższym przykładzie dołączono wtyczkę paradise
, aby zapewnić pełne wsparcie dla Scala 2.10.x
Ustawienia wyświetlania
W konsoli SBT, aby wyświetlić listę wszystkich możliwych do zdefiniowania ustawień dla projektu:
settings
Lub, aby uzyskać ustawienia podprojektu (na przykład o nazwie webapp
):
project webapp
settings
Pierwszy wiersz powyżej przechodzi do określonego podprojektu.
Aby wyświetlić wartość określonego ustawienia (na przykład organization
):
show organization
Spowoduje to wyświetlenie wartości tego ustawienia.