2011-11-19 29 views
54

我有一個SBT多項目,其中一些項目彼此之間存在依賴關係。像這樣:多項目中的SBT測試相關性:使測試代碼適用於相關項目

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

現在我在測試文件夾的'core'項目中有一些測試代碼。還有像模擬和測試實用程序的東西。現在我想在擴展的測試中使用這些測試實用程序。由於我已經聲明瞭一個依賴關係,因此生產代碼可以工作。然而,似乎依賴不適用於測試。當我運行測試時,我得到了缺少類的編譯錯誤。這些類來自核心項目中的測試代碼。

如何告訴sbt依賴項還應該包含測試代碼的測試代碼?這樣我就可以在「exension」項目的測試代碼中重複使用我的模擬了嗎?

回答

64

像這樣:

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

這在部分中然後Getting-Started-Multi-Project導向討論「每配置類路徑依賴」。

+0

啊是的,謝謝。忽略了那一點。 – Gamlor

+0

爲了讓其他人不會在這裏感到困惑,這是建議您在Project定義中設置依賴項(而不是庫依賴項)。 –

18

您也可以在初始項目聲明後使用.dependsOn(coreProject % "compile->compile;test->test")做到這一點。

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