Ich habe ein SBT-Multiprojekt, bei dem einige Projekte voneinander abhängig sind. So was:
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)
)
Jetzt habe ich einen Testcode im 'Kern'-Projekt im Testordner. Es gibt auch Dinge wie Mocks und Test-Utilities. Jetzt möchte ich diese Testdienstprogramme in den Tests der Erweiterungen verwenden. Für Produktionscode funktioniert dies, da ich eine Abhängigkeit deklariert habe. Es scheint jedoch, dass die Abhängigkeit für die Tests nicht gilt. Wenn ich die Tests ausführe, wird ein Kompilierungsfehler für fehlende Klassen angezeigt. Diese Klassen stammen aus dem Testcode im Kernprojekt.
Wie kann ich sbt mitteilen, dass die Abhängigkeit auch den Testcode für den Testbereich enthalten soll? Damit ich meine Verspottungen im Testcode des 'Exension'-Projekts wiederverwenden kann?
lazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test"))
funktioniert nicht. @ RyanGross, würdest du?Sie können dies auch mit einem
.dependsOn(coreProject % "compile->compile;test->test")
nach der ersten Projektdeklaration tun .lazy val coreProject = Project("core-project") lazy val extensions = Project("extensions").dependsOn(coreProject % "compile->compile;test->test")
quelle