2012-05-16 34 views
25

Por alguna razón, no hay documentación sobre la ejecución de liquibase dentro del código Java. Quiero generar tablas para pruebas unitarias.Ejecución de liquibase dentro del código Java

¿Cómo lo ejecutaría directamente en Java?

p. Ej.

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

¿Ha mirado http://forum.liquibase.org/topic/using-liquibase-directly-from-java? – artbristol

Respuesta

33

Debe ser algo así como (tomada de la fuente 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 
      } 
     } 
    } 

Hay múltiples aplicación de ResourceAccessor dependiendo de cómo se deben encontrar los archivos de registro de cambios.

+0

Gracias Nathan. :) – sproketboy

+3

Agregado a la respuesta de Nathan consulte el código real desde aquí https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/integration/servlet/LiquibaseServletListener.java#L209 –

Cuestiones relacionadas