Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在dropwizard 1.3.x中使用多个liquibase迁移更改日志文件?_Java_Sql_Liquibase - Fatal编程技术网

Java 如何在dropwizard 1.3.x中使用多个liquibase迁移更改日志文件?

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

以下是我所看到的:

(这是为了使用includeAll标记)

(用于在我当前的dropwizard版本中配置Liquibase)

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

我的migrations.xml文件现在非常大,我想在一个新文件中启动新的变更集。让我们称之为“migrations2.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.