2011-11-19 15 views
54

Tengo un proyecto multi SBT donde algunos proyectos tienen dependencias entre sí. De esta manera:SBT Test-Dependencias en multiproyectos: hacer que el código de prueba esté disponible para proyectos dependientes

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 un código de prueba en el proyecto 'núcleo' 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 para las clases faltantes. Esas clases son del código de prueba en el proyecto central.

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

Respuesta

64

así:

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

Esto se discute en la sección "dependencias classpath Por la configuración" en entonces Getting-Started-Multi-Project guía.

+0

Ah sí, gracias. Pasó por alto ese bit. – Gamlor

+0

Para que otros no se confundan aquí, esto sugiere que establezca las dependencias en la definición del Proyecto (no en las dependencias de la biblioteca). –

18

También puede hacerlo 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") 
Cuestiones relacionadas