【问题标题】:Flyway migration (multi project): run SBT command for main module, but not submoduleFlyway迁移(多项目):对主模块运行SBT命令,但不运行子模块
【发布时间】:2017-01-30 02:57:08
【问题描述】:

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

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

我见过this answer 只运行一个子模块,但对只运行主模块而不运行子模块没有帮助。

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

【问题讨论】:

标签: java scala playframework sbt


【解决方案1】:

见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"

应该可以。

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2019-03-28
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多