sbt
Projets
Recherche…
Plusieurs projets dans la même construction (sous-projets)
Parfois, une construction combine plusieurs répertoires sources, chacun étant leur propre «projet». Par exemple, vous pourriez avoir une structure de construction comme celle-ci:
projectName / build.sbt projet / src / main / ... test / ... core / src / main / ... test / ... webapp / src / main / ... test / ...
Dans le projet ci-dessus, le code dans projectName/src
est considéré comme le projet root
. Il existe deux autres modules, ou «sous-projets», core
et webapp
.
La configuration d'un sous-projet est similaire à la configuration du projet racine, sauf que le sous-répertoire est spécifié dans le projet. Cet exemple montre un projet racine qui agrège un projet core
et 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)
Les valeurs transmises à file()
sont les répertoires relatifs à la racine du projet.
Le projet webapp
dépend du projet core
, qui est indiqué par la clause dependsOn
, qui prend la valeur de core
spécifiée sur la ligne ci-dessus. dependsOn
et lazy
s'assurent que les dépendances sont disponibles avant que les projets les utilisent. Dans ce cas, webapp
dépend de core
, donc core
sera compilé avant que la compilation ne tente de compiler webapp
.
aggregate
rend les tâches définies dans un projet disponibles pour le projet qui les agrège. Par exemple, l'exécution de la compile
dans le projet root
exécutera également la compile
dans le core
et l'application webapp
.
Configurer les macros dans un projet
Dans le fichier build.sbt
(ou où le projet est défini s'il se trouve dans un autre emplacement), ajoutez le paramètre suivant:
scalacOptions += "-language:experimental.macros"
Par exemple, un projet peut être défini comme ceci:
lazy val main = project.in(file(".")) // root project
.settings(scalacOptions += "-language:experimental.macros",
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
Dans l'exemple ci-dessus, le plugin paradise
est inclus afin de fournir un support complet de Scala 2.10.x
Paramètres d'affichage
Dans la console SBT, pour répertorier tous les paramètres définissables pour un projet:
settings
Ou, pour obtenir les paramètres d'un sous-projet (par exemple, une application webapp
nommée):
project webapp
settings
La première ligne ci-dessus navigue dans le sous-projet spécifique.
Pour montrer la valeur d'un paramètre spécifique (par exemple, organization
):
show organization
Cela affichera la valeur de ce paramètre.