【问题标题】:Run "clean" all dependent SBT subprojects运行“清理”所有依赖的 SBT 子项目
【发布时间】:2013-08-08 04:14:36
【问题描述】:

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

【问题讨论】:

  • 我不希望 clean 清除所有依赖项。你可能想要一个聚合? (只是谷歌 sbt 聚合)

标签: scala playframework sbt


【解决方案1】:

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

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

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

在评论中的旁注

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

aggregate in test := false

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

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

【讨论】:

  • 附带说明,如果我使用 .aggregate,我还需要 .dependsOn 吗?当我用聚合替换dependsOn时,聚合项目中出现了一些编译器错误,看起来它们都是并行编译的。
  • @BenDilts 我在你的旁注中添加了一些解释
猜你喜欢
  • 2011-08-27
  • 2011-05-30
  • 1970-01-01
  • 2014-06-24
  • 2018-03-20
  • 2017-05-20
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多