2017-08-10 36 views
0

如標題所示,我想使用Liquibase在脫機模式下爲空數據庫生成更改日誌。我的Ant文件如下所示:使用Liquibase在離線模式下爲空數據庫生成更改日誌

<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」,則由於Liquibase試圖克隆不可用的快照,因此ant任務會崩潰並出現NullPointerException。如果我添加「?snapshot = snapshot.json」,Liquibase(或Yaml)無法找到我的文件。

我的問題:

  • 這時候我只是想,沒有任何基礎的快照都創建我的實體changelog的正確的方法?
  • 有沒有更容易的方法來提供一個空的數據庫liquibase作爲基地?
  • 如何將snapshot.json添加到項目以確保螞蟻任務可以找到它?

回答

0

在此期間,我能夠找出一些事情:

  • 爲了確保snapshot.json可以通過任務可以發現,人們必須把它放到一個jar文件,並添加jar文件到任務的類路徑。
  • 它似乎不是Hibernate擴展的正確方法,因爲Hibernate擴展似乎不適用於脫機URL。
  • 根據https://liquibase.jira.com/browse/CORE-2183,可能的解決方法是使用空H2數據庫作爲生成初始JPA更新日誌的基礎。
相關問題