2012-05-16 34 views
25

由于某些原因,在Java代码中没有运行liquibase的文档。我想为单元测试生成表格。在Java代码中运行liquibase

如何直接在Java中运行它?

例如

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

你看过http://forum.liquibase.org/topic/using-liquibase-directly-from-java吗? – artbristol

回答

33

它应该是这样的(取自liquibase.integration.spring.SpringLiquibase源):

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

有根据您的更新日志文件应该如何被发现的多种实现ResourceAccessor的。

+0

谢谢Nathan。 :) – sproketboy

+3

添加到Nathan回答参考从这里的真实代码https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/integration/servlet/LiquibaseServletListener.java#L209 –