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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow