Java 如何在dropwizard 1.3.x中使用多个liquibase迁移更改日志文件?
以下是我所看到的: (这是为了使用includeAll标记) (用于在我当前的dropwizard版本中配置Liquibase) 注意,在第二个链接中,它特别指出“您的数据库迁移存储在Dropwizard项目中的src/main/resources/migrations.xml中” 我的migrations.xml文件现在非常大,我想在一个新文件中启动新的变更集。让我们称之为“migrations2.xml” 我目前的结构是Java 如何在dropwizard 1.3.x中使用多个liquibase迁移更改日志文件?,java,sql,liquibase,Java,Sql,Liquibase,以下是我所看到的: (这是为了使用includeAll标记) (用于在我当前的dropwizard版本中配置Liquibase) 注意,在第二个链接中,它特别指出“您的数据库迁移存储在Dropwizard项目中的src/main/resources/migrations.xml中” 我的migrations.xml文件现在非常大,我想在一个新文件中启动新的变更集。让我们称之为“migrations2.xml” 我目前的结构是 --src --主要 --资源 --migrations.xml
--src
--主要
--资源
--migrations.xml
我把它改成了
--src
--主要
--资源
--变更记录
--migrations.xml
--migrations2.xml
现在migrations.xml包含
现在,我在使用liquibase.exception.ChangeLogParseException:migrations.xml运行迁移任务时遇到了一个问题
根据dropwizard文档,它是有意义的,因为它不再位于“src/main/resources”下。相反,它位于“src/main/resources/changelogs”中。如何修复此问题以确保它不是一个奇怪的结构,我必须保留包含
changelogs
文件夹的includeal
标记的主迁移xml文件。我认为创建以下结构是一个好主意:
--src
-- main
-- resources
-- changelogs
-- migrations1.xml
-- migrations2.xml
-- ...
-- migrationsN.xml
-- migrations.xml (it's a master changeLog which includes all the other changeLogs)
尝试将子变更日志文件的相对路径设置为:
在includeAll
docs的第一个链接中,有一部分是关于为什么使用它不是一个很好的实践
虽然includeAll标记有许多有价值的用途,但它的使用可能会导致
未来的问题。要避免的最大的事情是使用
includeAll标签模拟RubyonRails的主动迁移策略
按文件顺序运行的更改列表,每个文件一个。虽然
起初这似乎是个好主意,但很快就会遇到问题
如果
如果您选择使用includeAll标记,请确保您有一个命名
制定战略,确保您永远不会发生冲突
或者需要重命名文件以进行更改以强制重新排序
<>也许你可以考虑使用<代码> <代码>标签并列出所有的儿童变更文件。
例如:
等
是否需要relativeToChangelogFile?没有它似乎很好。好吧,这取决于你。如果没有它也能工作,那就用你认为更好的。此属性不是必需的
<include path="changelogs/migrations1.xml" relativeToChangelogFile="true"/>
<include path="changelogs/migrations2.xml" relativeToChangelogFile="true"/>
...etc.