飞路迁移(多项目):为主模块运行SBT命令,但不运行子模块

时间:2016-09-21 18:07:52

标签: java scala playframework sbt

我有一个play框架项目,它有一个客户端库作为子模块。我正在使用flyway进行数据库迁移。当我使用flyway命令(例如sbt flywayMigrate)时,它会运行该命令两次,一次针对根项目,一次针对客户端库子模块。

有没有办法只对项目运行SBT命令,而不是任何子模块?
sbt clientLibrary/flywayMigrate将仅对子模块运行命令,但sbt root/flywayMigrate对两者运行命令。

我看过this answer哪个地址只运行一个子模块,但没有帮助只运行主模块而没有子模块。

编辑: 我确实在根目录中有客户端库,默认情况下删除它只为root运行命令。但是我认为默认运行所有模块是可取的,我想指定模块排除而不是包含。

1 个答案:

答案 0 :(得分:3)

请参阅http://www.scala-sbt.org/0.13/docs/Multi-Project.html#Aggregation

  

在执行聚合的项目中,在这种情况下,根项目,您可以控制每个任务的聚合。例如,要避免聚合更新任务:

lazy val root = (project in file(".")).
  aggregate(util, core).
  settings(
    aggregate in update := false
  )

在您的情况下,请设置aggregate in flywayMigrate := false。要做一次,

sbt "; set aggregate in (ThisBuild, flywayMigrate) := false; root/flywayMigrate"

应该有效。