我有一个play框架项目,它有一个客户端库作为子模块。我正在使用flyway进行数据库迁移。当我使用flyway命令(例如sbt flywayMigrate
)时,它会运行该命令两次,一次针对根项目,一次针对客户端库子模块。
有没有办法只对项目运行SBT命令,而不是任何子模块?
sbt clientLibrary/flywayMigrate
将仅对子模块运行命令,但sbt root/flywayMigrate
对两者运行命令。
我看过this answer哪个地址只运行一个子模块,但没有帮助只运行主模块而没有子模块。
编辑: 我确实在根目录中有客户端库,默认情况下删除它只为root运行命令。但是我认为默认运行所有模块是可取的,我想指定模块排除而不是包含。
答案 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"
应该有效。