运行“清理”所有相关的SBT子项目

时间:2013-08-06 23:41:08

标签: scala playframework sbt

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

1 个答案:

答案 0 :(得分:8)

如果您的主项目聚合主题,请执行以下操作:

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

然后将对所有子项目执行调用此根项目的任何命令。如果你在你的sbt会话中调用inspect clean命令,你会在相关部分看到与这个干净相关的所有子项目

在评论的旁注中

aggregatedependsOn是用于不同目的的不同命令。 聚合的目的在于运行在根项目上调用的命令。在我的示例中,通过在我的根项目上调用test命令,此命令也将对module1 module2macros执行。如果要使用以下设置关闭此类行为:

aggregate in test := false

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

dependsOn 表示您的项目将取决于其他项目的代码。在这种情况下,SBT将按顺序执行命令,以便compile您的根项目,dependsOn某些模块,它应该在第一步编译这些模块,即根项目。