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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow