【问题标题】:How to use multiple liquibase migration changelog files in dropwizard 1.3.x?如何在 dropwizard 1.3.x 中使用多个 liquibase 迁移更改日志文件?
【发布时间】:2019-12-31 03:16:59
【问题描述】:

这是我正在查看的内容:

https://www.liquibase.org/documentation/includeall.html(这是使用includeAll标签)

https://www.dropwizard.io/en/release-1.3.x/manual/migrations.html(这是用于在我当前的 dropwizard 版本中配置 Liquibase)

注意第二个链接,它特别指出“您的数据库迁移存储在您的 Dropwizard 项目中,在 src/main/resources/migrations.xml 中”。

我的 migrations.xml 文件现在非常大,我想在一个新文件中启动新的变更集。我们称之为“migrations2.xml”。

我目前的结构是

--src -- main -- resources -- migrations.xml

我改成 --src -- main -- resources -- changelogs -- migrations.xml -- migrations2.xml

现在 migrations.xml 包含 <includeAll path="src/main/resources/changelogs/"/>

现在我在使用liquibase.exception.ChangeLogParseException: migrations.xml does not exist 运行迁移任务时遇到了问题

根据 dropwizard 文档,这是有道理的,因为它不再位于“src/main/resources”下。相反,它位于“src/main/resources/changelogs”中。我该如何解决这个问题,以确保它不是一个奇怪的结构,我必须保留包含 includeAll 标记的主要迁移 xml 文件在 changelogs 文件夹之外。

【问题讨论】:

    标签: java sql liquibase


    【解决方案1】:

    我认为制作以下结构是个好主意:

    --src
       -- main
         -- resources
           -- changelogs
              -- migrations1.xml
              -- migrations2.xml
              -- ...
              -- migrationsN.xml
           -- migrations.xml (it's a master changeLog which includes all the other changeLogs)
    

    尝试为您的子 changeLog 文件设置相对路径:

    <includeAll path="/changelogs" relativeToChangelogFile="true"/>

    includeAll docs 的第一个链接中,有一部分内容是关于为什么使用它不是一个很好的做法

    虽然 includeAll 标签有许多有价值的用途,但它的使用可能会导致 未来的问题。要避免的最大事情是使用 includeAll 标签来模拟 Ruby on Rails 的 Active Migrations 策略 按文件顺序运行的更改列表,每个文件一个。尽管 起初这似乎是个好主意,但很快就会遇到问题

    如果 您确实选择使用 includeAll 标签,请确保您有一个命名 制定策略,确保您永远不会发生冲突 或需要重命名文件以更改以强制重新排序。

    所以也许您可以考虑使用<include> 标签并列出所有子更改日志文件。

    例如:

    <include path="changelogs/migrations1.xml" relativeToChangelogFile="true"/>
    <include path="changelogs/migrations2.xml" relativeToChangelogFile="true"/>
    ...etc.
    

    【讨论】:

    • 是否需要 relativeToChangelogFile?没有它似乎可以正常工作
    • 好吧,这取决于你。如果没有它也能正常工作,那么请使用更适合您的套件。该属性不是强制性的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2020-02-12
    • 2019-07-30
    相关资源
    最近更新 更多