【发布时间】:2018-02-27 00:58:52
【问题描述】:
我有这些 gradle 任务:
- startTestDatabaseContainer: 构建并启动一个带有数据库的 docker 容器
- removeTestDatabaseContainer:停止并移除 docker 容器
- flywayValidate:来自org.flywaydb.flyway 的任务,用于验证我的迁移文件
我希望按顺序运行这三个任务。阅读this 将我引向这个解决方案:
flywayValidate.dependsOn startTestDatabaseContainer
flywayValidate.finalizedBy removeTestDatabaseContainer
这工作正常,但是如果没有startTestDatabaseContainer 和removeTestDatabaseContainer 也被调用,我就无法从命令行运行gradle flywayValidate。我希望能够运行 flywayValidate 而不会发生这种情况。
当我无法在 gradle 中排序依赖项时,我该怎么做?
我的第一次尝试很简单:
task validateMigration {
dependsOn startTestDatabaseContainer
dependsOn flywayValidate
finalizedBy removeTestDatabaseContainer
}
但这失败了,因为flywayValidate 可以在startTestDatabaseContainer 之前运行。
编辑:我在Opal 的解决方案上设置了一个演示基础:github.com/stianlagstad/flyway-migration-error-causes-final-gradle-task-to-not-execute。克隆它并运行gradle validateMigration。迁移将失败,最终的 gradle 任务将不会运行(docker ps 将显示容器仍在运行)。如果您修复了迁移文件,那么一切都会按预期进行。我确定我误解了一些东西。任何指针都会有所帮助!
【问题讨论】: