java - JAR 文件中的 Liquibase 变更集

标签 java liquibase changeset

目前我尝试将 Liquibase 3.3.3 集成到我的项目中。为了管理我的数据库,我从应用程序中调用 Liquibase,而变更集位于 JAR 文件中

final Liquibase liquibase = new Liquibase( "db/db_changelog_master.xml",
                                           new ClassLoaderResourceAccessor(),
                                           database );
liquibase.update( new Contexts() );

此调用有效并且主变更集已加载。在主变更集中,将加载更多变更集:

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                                       http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd
                                       http://www.liquibase.org/xml/ns/dbchangelog-ext
                                       http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
    <include file="classpath:db_changelog_1.0.xml"/>
</databaseChangeLog>

问题就从这里开始了,因为 Liquibase 无法找到并加载子变更集。我还尝试了 标记以及子变更集的绝对和相对路径,但没有成功。

有什么建议吗?这里有什么问题?

最诚挚的问候!

最佳答案

我的更改日志位于 src/main/resources/db/changelog/dbchange-master.xml 和 dbchange-2.xml 的其他 jar 中

如果我像这样在 master 中包含 dbchange-2.xml

<include file="classpath:/db/changelog/dbchange-2.xml" />

它有效。

关于java - JAR 文件中的 Liquibase 变更集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30725317/

相关文章:

java - Google 集合不同谓词

Java,双返回函数,失败时返回什么?

java - Liquibase 不基于 JPA 实体创建 diff 变更日志

mercurial - Mercurial 变更集到底是什么?

liquibase - 配置 liquibase 变更集的 ID

java - 我们可以在移动到android中的下一次迭代之前制作一个for循环以在每次迭代中获取用户输入吗

java - 用于 UUID 作为 JPA ID 的最佳(最有效)数据类型

java - Liquibase 在检查主键不存在时失败

java - Spring Boot集成测试未在应用程序主方法内执行初始化步骤

Mercurial Subrepos,如何控制我想将哪个变更集用于子仓库?