web-dev-qa-db-fra.com

Dépendances de test SBT dans les multiprojets: rendre le code de test disponible pour les projets dépendants

J'ai un multi-projet SBT où certains projets ont des dépendances les uns aux autres. Comme ça:

 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)
  )

Maintenant, j'ai du code de test dans le projet "core" dans le dossier de test. Il y a aussi des trucs comme des simulateurs et des utilitaires de test. Maintenant, je voudrais utiliser ces utilitaires de test dans les tests des extensions. Pour le code de production, cela fonctionne, car j'ai déclaré une dépendance. Cependant, il semble que la dépendance ne soit pas valable pour les tests. Lorsque j'exécute les tests, j'obtiens une erreur de compilation pour les classes manquantes. Ces classes sont issues du test-code du core-project.

Comment puis-je dire à sbt que la dépendance doit également inclure le code de test pour la portée de test? Pour que je puisse réutiliser mes maquettes dans le test-code du projet 'exension'?

73
Gamlor

Ainsi:

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

Ceci est discuté dans la section "Dépendances de chemin de classe par configuration" du guide Getting-Started-Multi-Project .

79
retronym

Vous pouvez également le faire avec une .dependsOn(coreProject % "compile->compile;test->test") après la déclaration initiale du projet.

lazy val coreProject = Project("core-project")
lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")
31
Ryan Gross