2012-05-16 15 views
25

何らかの理由で、Javaコード内でliquibaseを実行することに関する文書はありません。ユニットテスト用のテーブルを生成したい。Javaコード内でのliquibaseの実行

どうすればJavaで直接実行できますか?

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

があなたのchangelogファイルが見つかるはず方法に応じResourceAccessorの複数の実装があります。

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

http://forum.liquibase.org/topic/using-liquibase-directly-from-javaを見ましたか? – artbristol

答えて

33

それは(liquibase.integration.spring.SpringLiquibaseソースから取られた)のようなものでなければなりません。

+0

ありがとうございました。 :) – sproketboy

+3

Nathan Answerに追加されました。ここから実際のコードを参照してください。https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/integration/servlet/LiquibaseServletListener.java#L209 –

関連する問題