2014-11-23 66 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) 
    )