【发布时间】:2019-09-06 03:29:25
【问题描述】:
我有一些需要用 sbt 编译的子项目。结构是这样的:
main_project
- sub_project1
- sub_project2
- sub_project3
当然,它们具有正确的目录层次结构 (src-main-scala....)。我如何编译所有这些,特别是它们中的每一个?
【问题讨论】:
我有一些需要用 sbt 编译的子项目。结构是这样的:
main_project
- sub_project1
- sub_project2
- sub_project3
当然,它们具有正确的目录层次结构 (src-main-scala....)。我如何编译所有这些,特别是它们中的每一个?
【问题讨论】:
见Navigating projects interactively:
在 sbt 交互式提示符下,输入
projects列出您的项目,输入project <projectname>选择当前项目。当您运行像compile这样的任务时,它会在当前项目上运行。所以你不一定要编译根项目,你可以只编译一个子项目。
你可以使用aggregate来编译它们。
【讨论】:
由于所选答案的链接文档已更改,因此答案不再那么清晰。
在 OP 的 main_project 的 build.sbt 中,要将它们编译在一起,它们必须定义一个 aggregate,因为 new(er) documentation 链接到:
lazy val root = (project in file("."))
.aggregate(util, core)
lazy val util = (project in file("util"))
lazy val core = (project in file("core"))
然后在根项目的目录中运行sbt compile 将编译它们。
但是,如果您希望一次编译一个,您可以将您的 cmd 行/终端导航到根项目(此处为 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 会抱怨 [error] Expected '/' (if selecting a project)(以及其他错误)。