sbt
progetti
Ricerca…
Più progetti nella stessa build (sottoprogetti)
A volte una build combina più directory sorgente, ognuna delle quali è il proprio 'progetto'. Ad esempio, potresti avere una struttura di build come questa:
projectName / build.sbt project / src / main / ... test / ... core / src / main / ... test / ... webapp / src / main / ... test / ...
Nel progetto precedente, il codice in projectName/src
è considerato il progetto root
. Ci sono altri due moduli, o "sottoprogetti", core
e webapp
.
La configurazione di un sottoprogetto è simile alla configurazione del progetto root, tranne per il fatto che la sottodirectory è specificata nel progetto. Questo esempio mostra un progetto root che aggrega un progetto core
e 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)
I valori passati a file()
sono le directory relative alla radice del progetto.
Il progetto webapp
dipende dal progetto core
, che è indicato dalla clausola dependsOn
, che prende il valore core
specificato nella riga sopra. dependsOn
e lazy
evaluation assicurano che le dipendenze siano disponibili prima che i progetti le utilizzino. In questo caso, la webapp
dipende dal core
, quindi il core
verrà compilato prima che la build tenti di compilare webapp
.
aggregate
rende le attività definite in un progetto disponibili per il progetto che lo aggrega. Ad esempio, l'esecuzione della compile
nel progetto root
eseguirà anche la compile
in core
e webapp
.
Configura macro in un progetto
Nel file build.sbt
(o dove il progetto è definito se si trova in un'altra posizione), aggiungere la seguente impostazione:
scalacOptions += "-language:experimental.macros"
Ad esempio, un progetto potrebbe essere definito in questo modo:
lazy val main = project.in(file(".")) // root project
.settings(scalacOptions += "-language:experimental.macros",
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
Nell'esempio sopra, il plugin paradise
è incluso per fornire il supporto completo di Scala 2.10.x
Impostazioni di visualizzazione
Quando nella console SBT, per elencare tutte le impostazioni definibili per un progetto:
settings
Oppure, per ottenere le impostazioni di un sottoprogetto (ad esempio, nome webapp
):
project webapp
settings
La prima riga in alto naviga nel sottoprogetto specifico.
Per mostrare il valore di un'impostazione specifica (ad esempio, organization
):
show organization
Questo mostrerà il valore di quell'impostazione.