2017-08-10 1 views
0

Wie der Titel sagt, möchte ich Liquibase verwenden, um ein Changelog für eine leere Datenbank im Offline-Modus zu generieren. Meine ant-Datei sieht wie folgt aus:Erstellen eines Changelogs für eine leere Datenbank mit Liquibase im Offline-Modus

<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> 

Später möchte ich Liquibase-Hibernate4 zu erzeugen, das Changelog von meinem Wesen, aber ich begegnen verschiedene Fragen vorher hinzuzufügen. Wenn ich einfach die URL "offline: postgresql" verwende, stürzt die ant-Task mit einer NullPointerException ab, da Liquibase versucht hat, den Snapshot zu klonen, der nicht verfügbar ist. Wenn ich "? Snapshot = snapshot.json" hinzufüge, kann Liquibase (oder Yaml) meine Datei nicht finden.

Meine Fragen:

  • Ist das der richtige Ansatz, wenn ich einfach das Changelog für meine Entitäten ohne Basis Snapshot überhaupt erstellen?
  • Gibt es eine einfachere Möglichkeit, Liquibase mit einer leeren Datenbank als Basis zu versorgen?
  • Wie füge ich snapshot.json dem Projekt hinzu, um sicherzustellen, dass die ant-Task es finden kann?

Antwort

0

In der Zwischenzeit einige Dinge, die ich war in der Lage, um herauszufinden:

  • Um sicherzustellen, dass snapshot.json von der Aufgabe gefunden werden kann, muss man es in eine JAR-Datei setzen und fügen Sie die JAR-Datei an den Klassenpfad der Aufgabe.
  • Es scheint nicht der richtige Ansatz für die Hibernate-Erweiterung zu sein, da es scheint, dass die Hibernate-Erweiterung nicht mit Offline-URLs funktioniert.
  • Nach https://liquibase.jira.com/browse/CORE-2183 besteht eine mögliche Problemumgehung darin, eine leere H2-Datenbank als Basis zu verwenden, um die ersten JPA-Änderungsprotokolle zu generieren.
Verwandte Themen