Dependencias de prueba SBT en multiproyectos: hacer que el código de prueba esté disponible para proyectos dependientes

83

Tengo un multiproyecto SBT donde algunos proyectos tienen dependencias entre sí. Me gusta esto:

 lazy val coreProject: Project = Project(
    id = "core-project",
    base = file("./core-project"),
    // other stuff
    ))

  lazy val extensions: Project = Project(
    id = "extensions",
    base = file("./extensions"),
    dependencies = Seq(coreProject)
  )

Ahora tengo algo de código de prueba en el proyecto 'principal' en la carpeta de prueba. También hay cosas como simulacros y utilidades de prueba. Ahora me gustaría usar esas utilidades de prueba en las pruebas de las extensiones. Para el código de producción, esto funciona, ya que he declarado una dependencia. Sin embargo, parece que la dependencia no es válida para las pruebas. Cuando ejecuto las pruebas, obtengo un error de compilación por clases faltantes. Esas clases son del código de prueba en el proyecto principal.

¿Cómo puedo decirle a sbt que la dependencia también debe incluir el código de prueba para el alcance de la prueba? ¿Para poder reutilizar mis simulaciones en el código de prueba del proyecto 'exension'?

Gamlor
fuente

Respuestas:

91

Al igual que:

dependencies = Seq(coreProject % "compile->compile;test->test")

Esto se trata en la sección "Dependencias de rutas de clases por configuración" en la guía Getting-Started-Multi-Project .

retrónimo
fuente
1
Para que otros no se confundan aquí, esto sugiere que establezca las dependencias en la definición del Proyecto (no las dependencias de la biblioteca).
Ryan Gross
Para los ninzas que no son SBT, ¿pueden mostrar más del archivo de compilación, por favor? Una definición como lazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test"))no funciona. @RyanGross, ¿lo harías?
Abhijit Sarkar
45

También puede hacer esto con un .dependsOn(coreProject % "compile->compile;test->test")después de la declaración inicial del proyecto.

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")
Ryan Gross
fuente
Documentación relevante: scala-sbt.org/release/docs/…
Colin Strong