我有一个SBT项目,特别是Play Framework 2.1项目,它在配置中指定了许多子项目。编译时依赖关系似乎工作正常,但“清理”似乎只是清理当前选定的项目,不包括其依赖项。有没有办法清理所选项目及其相关子项目?
答案 0 :(得分:8)
如果您的主项目聚合主题,请执行以下操作:
lazy val root = Project("name", file("."))
.aggregate(module1, module2, macros)
然后将对所有子项目执行调用此根项目的任何命令。如果你在你的sbt会话中调用inspect clean
命令,你会在相关部分看到与这个干净相关的所有子项目
在评论的旁注中
aggregate
和dependsOn
是用于不同目的的不同命令。 聚合的目的在于运行在根项目上调用的命令。在我的示例中,通过在我的根项目上调用test
命令,此命令也将对module1
module2
和macros
执行。如果要使用以下设置关闭此类行为:
aggregate in test := false
聚合项目与其中的代码无关。它通常用在根项目上,例如,不要在每个项目上调用test
,而是在root上调用它。记住,在聚合的情况下,命令将并行执行。
dependsOn 表示您的项目将取决于其他项目的代码。在这种情况下,SBT将按顺序执行命令,以便compile
您的根项目,dependsOn
某些模块,它应该在第一步编译这些模块,即根项目。