2014-11-23 101 views
1

我有一個構建,看起來像這樣SBT子子項目不起作用?

thing/ build.sbt clientserver/ build.sbt client/ ... server/ ...

//build.sbt val clientserver = project.in(file("clientserver"))...

//clientserver/build.sbt val client = project.in(file("client"))... val server = project.in(file("server"))...

我如何能在SBT控制檯引用這些分分項目? clientserver/client/compileclientserver.client/compile不工作

回答

1

所有項目定義都必須在頂級構建中定義。但是,您可以很好地擁有基本目錄爲2級的項目。

因此,對於你的榜樣,你應該有類似的thing/build.sbt如下:

lazy val clientserver = project.in(file("clientserver"))... 

lazy val clientserverClient = project.in(file("clientserver/client"))... 
lazy val clientserverServer = project.in(file("clientserver/server"))... 

在SBT控制檯,他們因此refercenced分別clientserverClientclientserverServer

0

您如何使用sbt?含義,通過IDE或命令行?我在IntelliJ中的多模塊項目遇到問題,但最近的更新解決了我的問題。

更新包括IntelliJ本身(從13.3到14.0)和scala-plugin到1.1版本。

當我用IDE運行我的項目時,一切都順利進行,但是當我切換到IntelliJ時,它自動創建模塊scala facets以及使其無法編譯的原因。第二個問題是包含空格char - UriException的文件夾名稱。兩個更新解決了問題。

你可以檢查它是否從cmd行工作?如果是這樣,你可以把所有的子模塊定義爲'thing/build.sbt'並試用嗎?我在下面的代碼片段中定義了我的項目,但是在Scala對象中(擴展了Build特性),它像一個魅力一樣工作。

lazy val root = Project(
    id = "root", 
    file ("."), 
    settings = buildSettings 
       ++ Seq (description := "root") 
       ++ Seq (libraryDependencies ++= commonDependencies) 
    ) aggregate core 

lazy val core = Project(
    id = "Core", 
    base = file ("Core module"), 
    settings = buildSettings 
       ++ Seq (description := "Core desc") 
       ++ Seq (libraryDependencies ++= commonDependencies) 
    )