Liquibase 包含上下文

Gus*_*kas 5 liquibase

我需要将文件包含在databaseChangeLog中,但这些文件可能不存在,具体取决于安装。\n我的想法是使用类似包含上下文的内容,因此Liquibase只会在给出适当的上下文时尝试打开文件:

\n\n
<include file=\xe2\x80\x9dmyFile\xe2\x80\x9d context=\xe2\x80\x9dmyContext\xe2\x80\x9d/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

但包含标记中未使用上下文,并且 Liquibase 失败,因为该文件不存在。\nI\xe2\x80\x99ll 宁愿不使用 includeAll,因为我需要将文件包含在主文件的特定部分。\n任何想法?谢谢!

\n

Jen*_*ens 4

您使用的是哪个版本的 liquibase?

“上下文”已添加到此提交中的包含标记中中的包含标记中。

另请查看此 jira 票证:CORE-155

那么也许您的 liquibase 版本太旧(低于 3.5.0)?

  • 我想这不一定是一个错误。Liquibase 将首先解析您的 (xml) 变更日志文件。一旦完成,它将执行收集到的更改。`include` 标签在解析 xml 的阶段进行评估。解析阶段的一部分是评估包含的文件。当针对数据库运行变更集时,“上下文”可能仅在解析后使用。也许在“include”标签上添加“context”属性只是为了不立即执行所包含文件的所有更改(而不是将“context”放在每个更改上)。这只是我的理解... (2认同)