SBT-Testabhängigkeiten in Multiprojekten: Stellen Sie den Testcode abhängigen Projekten zur Verfügung

83

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?

Gamlor
quelle

Antworten:

91

Wie so:

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

Dies wird im Abschnitt "Klassenpfadabhängigkeiten pro Konfiguration" im Handbuch Erste Schritte mit mehreren Projekten erläutert.

Retronym
quelle
1
Damit andere hier nicht verwirrt sind, sollten Sie die Abhängigkeiten in der Projektdefinition festlegen (nicht die Bibliotheksabhängigkeiten).
Ryan Gross
Können Sie für Nicht-SBT-Ninzas bitte mehr von der Build-Datei anzeigen? Eine Definition wie lazy val foo = project.settings(...).dependencies(Seq(bar % "compile->compile;test->test"))funktioniert nicht. @ RyanGross, würdest du?
Abhijit Sarkar
45

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")
Ryan Gross
quelle
Relevante Dokumentation: scala-sbt.org/release/docs/…
Colin Strong