在sbt中编译子项目

时间:2013-08-31 13:50:21

标签: scala sbt

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

main_project
 - sub_project1
 - sub_project2
 - sub_project3

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

2 个答案:

答案 0 :(得分:15)

请参阅Navigating projects interactively

  

在sbt交互式提示符下,键入projects列出项目,然后键入project <projectname>以选择当前项目。当您运行compile之类的任务时,它会在当前项目上运行。因此,您不必编译根项目,只能编译子项目。

您可以使用aggregate对它们进行全部编译。

答案 1 :(得分:2)

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

在OP的build.sbt的{​​{1}}中,要将它们编译在一起,他们必须定义一个main_project,因为new(er) documentation链接到:

aggregate

然后在根项目目录中运行lazy val root = (project in file(".")) .aggregate(util, core) lazy val util = (project in file("util")) lazy val core = (project in file("core")) 将全部编译。

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

main_project

使用张贴者的示例:

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

(如果您在SBT终端中,则可以省略user:main_project$: sbt sub_project1 / compile