有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在脱机模式下使用Liquibase为空数据库生成变更日志

正如标题所说,我想使用Liquibase在脱机模式下为空数据库生成一个变更日志。我的ant文件如下所示:

<project xmlns:liquibase="antlib:liquibase.integration.ant">

<taskdef resource="liquibase/integration/ant/antlib.xml" uri="antlib:liquibase.integration.ant">
    <classpath>
        <pathelement location="antlibs/liquibase-core-3.5.3.jar" />
        <pathelement location="antlibs/snakeyaml-1.18.jar" />
    </classpath>
</taskdef>

<target name="generate-changelog">
    <liquibase:generateChangeLog>
        <liquibase:database url="offline:postgresql?snapshot=snapshot.json" />
        <liquibase:xml outputfile="target/changelog.xml" encoding="UTF-8" />
    </liquibase:generateChangeLog>
</target>

后来,我想添加Liquibase-Hibernate4,以从实体生成变更日志,但我事先遇到了各种问题。如果我只是使用url“offline:postgresql”,ant任务会崩溃,出现NullPointerException,因为Liquibase试图克隆不可用的快照。如果我添加“?snapshot=snapshot.json”,Liquibase(或Yaml)将无法找到我的文件

我的问题是:

  • 当我只想为我的实体创建变更日志而根本不需要任何基本快照时,这是正确的方法吗
  • 有没有更简单的方法来为liquibase提供一个空数据库作为基础
  • 如何添加快照。json,以确保ant任务能够找到它

共 (1) 个答案

  1. # 1 楼答案

    与此同时,我发现了一些事情:

    • 以确保快照。任务可以找到json,必须将其放入jar文件中,并将jar文件添加到任务的类路径中
    • 这似乎不是Hibernate扩展的正确方法,因为Hibernate扩展似乎不适用于脱机URL
    • 根据https://liquibase.jira.com/browse/CORE-2183,一个可能的解决方法是使用空的H2数据库作为基础来生成初始JPA变更日志