sbt
projecten
Zoeken…
Meerdere projecten in dezelfde build (subprojecten)
Soms combineert een build meerdere bronmappen, die elk hun eigen 'project' zijn. U kunt bijvoorbeeld een build-structuur hebben zoals deze:
projectName / build.sbt project / src / main / ... test / ... core / src / main / ... test / ... webapp / src / main / ... test / ...
In het bovenstaande project wordt de code in projectName/src
beschouwd als het root
. Er zijn twee andere modules, of 'subprojecten', core
en webapp
.
Het configureren van een subproject is vergelijkbaar met het configureren van het rootproject, behalve dat de submap in het project is opgegeven. Dit voorbeeld toont een rootproject dat een core
en webapp
project verzamelt.
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)
De waarden die worden doorgegeven aan file()
zijn de mappen ten opzichte van de project root.
De webapp
project is afhankelijk van de core
project, dat wordt aangeduid door de dependsOn
clausule die het duurt core
waarde die op de bovenstaande regel. dependsOn
en lazy
evaluatie zorgen ervoor dat afhankelijkheden beschikbaar zijn voordat projecten ze gebruiken. In dit geval is de webapp
afhankelijk van de core
, dus zal de core
worden gecompileerd voordat de build pogingen doet om de webapp
te compileren.
aggregate
maakt taken die in één project zijn gedefinieerd beschikbaar voor het project dat het aggregeert. compile
in het root
project zal bijvoorbeeld ook compile
in core
en webapp
.
Macro's in een project configureren
build.sbt
bestand build.sbt
(of waar het project is gedefinieerd als het zich op een andere locatie bevindt) de volgende instelling toe:
scalacOptions += "-language:experimental.macros"
Een project kan bijvoorbeeld als volgt worden gedefinieerd:
lazy val main = project.in(file(".")) // root project
.settings(scalacOptions += "-language:experimental.macros",
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
In het bovenstaande voorbeeld is de paradise
plug-in inbegrepen om volledige ondersteuning van Scala 2.10.x
.
Scherminstellingen
In de SBT-console om alle definieerbare instellingen voor een project weer te geven:
settings
Of om de instellingen van een subproject (bijvoorbeeld met de naam webapp
) te krijgen:
project webapp
settings
De eerste regel hierboven navigeert naar het specifieke subproject.
De waarde van een specifieke instelling weergeven (bijvoorbeeld organization
):
show organization
Hiermee wordt de waarde van die instelling weergegeven.