sbt
Proyectos
Buscar..
Múltiples proyectos en la misma compilación (subproyectos)
A veces, una compilación combina varios directorios de origen, cada uno de los cuales es su propio 'proyecto'. Por ejemplo, podría tener una estructura de construcción como esta:
projectName / build.sbt project / src / main / ... test / ... core / src / main / ... test / ... webapp / src / main / ... test / ...
En el proyecto anterior, el código en projectName/src
se considera el proyecto root
. Hay otros dos módulos, o 'subproyectos', core
y webapp
.
La configuración de un subproyecto es similar a la configuración del proyecto raíz, excepto que el subdirectorio se especifica en el proyecto. Este ejemplo muestra un proyecto raíz que agrega un proyecto core
y una aplicación 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)
Los valores pasados a file()
son los directorios relativos a la raíz del proyecto.
El proyecto de la aplicación webapp
depende del proyecto core
, que se indica en la cláusula dependsOn
la dependsOn
, que toma el valor core
especificado en la línea anterior. dependsOn
y la evaluación lazy
asegura que las dependencias estén disponibles antes de que los proyectos las utilicen. En este caso, la aplicación webapp
depende del core
, por lo que el core
se compilará antes de que la compilación intente compilar la aplicación webapp
.
aggregate
hace que las tareas definidas en un proyecto estén disponibles para el proyecto que lo agregue. Por ejemplo, la ejecución de compile
en el proyecto root
también ejecutará la compile
en core
y webapp
.
Configurar macros en un proyecto
En el archivo build.sbt
(o donde se define el proyecto si está en otra ubicación), agregue la siguiente configuración:
scalacOptions += "-language:experimental.macros"
Por ejemplo, un proyecto podría definirse así:
lazy val main = project.in(file(".")) // root project
.settings(scalacOptions += "-language:experimental.macros",
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full))
En el ejemplo anterior, el paradise
plugin se incluyó a fin de proporcionar soporte completo de Scala 2.10.x
.
Configuraciones de pantalla
Cuando esté en la consola SBT, para enumerar todas las configuraciones definibles para un proyecto:
settings
O, para obtener la configuración de un subproyecto (por ejemplo, llamada webapp
):
project webapp
settings
La primera línea de arriba se desplaza al subproyecto específico.
Para mostrar el valor de una configuración específica (por ejemplo, organization
):
show organization
Esto mostrará el valor de esa configuración.