在sbt中编译子项目

Ala*_*ano 13 scala sbt

我有一些我需要用sbt编译的子项目.结构是这样的:

main_project
 - sub_project1
 - sub_project2
 - sub_project3
Run Code Online (Sandbox Code Playgroud)

当然,他们有正确的目录层次结构(src-main-scala ....).我如何编译所有这些以及每个特别的?

Eug*_*ota 18

请参阅以交互方式导航项目:

在sbt交互式提示符下,键入projects以列出项目并project <projectname>选择当前项目.当您运行类似的任务时compile,它将在当前项目上运行.所以你不一定要编译根项目,你只能编译一个子项目.

您可以使用聚合来编译它们.


Nat*_*H06 5

由于所选答案的链接文档已更改,因此答案不再那么清晰。

build.sbtOP 中main_project,要将它们编译在一起,他们必须定义一个aggregate,因为新的(er)文档链接到:

lazy val root = (project in file("."))
  .aggregate(util, core)

lazy val util = (project in file("util"))

lazy val core = (project in file("core"))
Run Code Online (Sandbox Code Playgroud)

然后sbt compile在根项目目录中运行将全部编译它们。

但是,如果您希望一次编译一个,您可以将命令行/终端导航到根项目(main_project此处),然后运行以下命令:

user:main_project$: sbt <project name> / compile

使用海报的示例:

user:main_project$: sbt sub_project1 / compile

(如果您在SBT终端,则可以省略sbt

  • 也许对某人有帮助:我必须删除空格,即“sbt sub_project1/compile”而不是“sbt sub_project1 /compile”。否则 sbt 会抱怨“[错误]预期'/'(如果选择项目)”(以及其他错误)。 (4认同)