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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow