9

我有一个 SBT 项目,特别是 Play Framework 2.1 项目,它在配置中指定了许多子项目。编译时依赖项似乎工作正常,但“清理”似乎只清理当前选定的项目,不包括其依赖项。有什么方法可以清理所选项目及其依赖的子项目?

4

1 回答 1

10

如果你的主项目聚合了主题,像这样:

lazy val root = Project("name", file("."))
    .aggregate(module1, module2, macros)

那么在这个根项目上调用的任何命令都将为所有子项目执行。如果您inspect clean在您的 sbt 会话中调用命令,您将在相关部分下看到与此清洁相关的所有子项目

在评论的旁注中

aggregate并且dependsOn是用于不同目的的不同命令。聚合的目的是运行在根项目上调用的命令。在我的示例中,通过在我的根项目上调用test命令,该命令也将针对module1 module2and执行macros。如果您想使用以下设置关闭此类行为:

aggregate in test := false

聚合项目独立于其中的代码。它通常用于根项目,例如不是test在每个项目上调用,而是在根上调用它。请记住,在聚合的情况下,命令将并行执行。

dependsOn意味着你的项目将依赖于其他项目的代码。在这种情况下,SBT 将按顺序执行命令,以便compile您的根项目,其中dependsOn一些模块,它应该首先编译这些模块,即根项目。

于 2013-08-07T06:53:26.097 回答