2012-05-16 25 views
25

Aus irgendeinem Grund gibt es keine Dokumentation über die Ausführung von Liquibase innerhalb von Java-Code. Ich möchte Tabellen für Unit-Tests generieren.Laufende Liquibase in Java-Code

Wie würde ich es direkt in Java ausführen?

z.B.

Liquibase liquibase = new Liquibase() 
liquibase.runUpdates() ? 
+0

Haben Sie http://forum.liquibase.org/topic/using-liquibase-directly-from-java angeschaut? – artbristol

Antwort

33

Es sollte so etwas wie (von liquibase.integration.spring.SpringLiquibase Quelle entnommen) sein:

java.sql.Connection c = YOUR_CONNECTION; 
    Liquibase liquibase = null; 
    try { 
     Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(c)) 
     liquibase = new Liquibase(YOUR_CHANGELOG, new FileSystemResourceAccessor(), database); 
     liquibase.update(); 
    } catch (SQLException e) { 
     throw new DatabaseException(e); 
    } finally { 
     if (c != null) { 
      try { 
       c.rollback(); 
       c.close(); 
      } catch (SQLException e) { 
       //nothing to do 
      } 
     } 
    } 

Es gibt mehrere Implementierung von ResourceAccessor je nachdem, wie Sie Ihre Changelog-Dateien gefunden werden sollte.

+0

Danke Nathan. :) – sproketboy

+3

Hinzugefügt zu Nathan Answer verweisen Sie den echten Code von hier https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/integration/servlet/LiquibaseServletListener.java#L209 –