我们有变更集一:
--changeset change_one runOnChange:true
Run Code Online (Sandbox Code Playgroud)
和变更集二:
--changeset change_two runOnChange:true context:kansas
Run Code Online (Sandbox Code Playgroud)
change_one 适用于我们的所有安装,但change_two 仅适用于我们的“堪萨斯”安装。我们希望确保每当change_one发生更改时,change_two都会被执行——我们该如何做到这一点?
change_one 具有 runOnChange:true 因此只要发生更改就会运行。但是我们如何确保change_two在change_one执行时运行——但仅当我们传递context:kansas时?
当您在不指定任何上下文的情况下运行 Liquibase 时,您可能认为不应激活任何上下文,但实际上它的工作方式如记录的那样,所有上下文都将被激活。如果您在更改日志中使用上下文来禁用更改集,则每次执行 Liquibase 时都必须设置上下文参数。例如
mvn process-resources liquibase:update -Dliquibase.contexts=production
Run Code Online (Sandbox Code Playgroud)
您还应该检查Liquibase 3.3 中添加的标签功能。不同之处在于调用者可以指定一些复杂的表达式。例如
mvn process-resources liquibase:update -Dliquibase.labels=!kansas
Run Code Online (Sandbox Code Playgroud)
但请注意,当未指定标签表达式时,行为与上下文相同。
更改集示例:
<changeSet id="tag-v1" author="a">
<tagDatabase tag="v1"/>
</changeSet>
<changeSet id="tag-v1a" author="a" context="kansas">
<tagDatabase tag="v1a"/>
</changeSet>
<changeSet id="tag-v1b" author="a" labels="kansas">
<tagDatabase tag="v1b"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3199 次 |
| 最近记录: |