【发布时间】:2016-10-21 16:37:13
【问题描述】:
我刚刚测试了Flyway 的数据库迁移功能,并对其功能和工作流程感到惊喜。
但是,有一个问题:Flyway 也可以执行clean 任务,该任务有效地从您正在访问的架构中删除所有表和过程。
例如,这个子任务应该可以在开发环境中运行,但不能在生产环境中运行:可能有人误解了它的含义并错误地杀死了生产数据库。
是否可以禁用(或简单地删除)插件的子任务?我可以这样做:
flywayClean {
enabled = project.hasProperty('devenv')
if(!enabled) {
throw new StopExecutionException("Disabled on production servers.")
}
}
但不幸的是,这会阻止构建完成。理想情况下,我想仅在任务专门运行时抛出这样的异常,无论是从另一个任务还是从命令行。
我可以用 Gradle 做到这一点吗?
编辑:
在发布问题后不久,我注意到flyway 配置选项还包括一个cleanDisabled 选项,它可以完全按照我的意愿进行。为了不必删除这个问题:如果插件本身没有这样的选项,这通常是可能的吗?
【问题讨论】:
标签: gradle groovy build-script