2012-05-16 4 views
25

Java 코드 내에서 liquibase를 실행하는 것에 대한 어떤 문서가 없습니다. Unit 테스트를위한 테이블을 생성하고 싶습니다.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 
      } 
     } 
    } 

이 변경 로그 파일을 찾을 수 방법에 따라 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 –

관련 문제