Category Archives: maven

Precondiciones en liquibase

Voy a poner un ejemplo de como tener un changeSet en liquibase que quiero que se ejecute solo si cumple una determinada condicion, en este caso que se ejecute contra hsqldb ( en mi caso entorno de desarrollo ) pero que así no se ejecute en los entornos de PRE y PRO que son oracle.

<changeSet author="josejavierfm" id="1439378147001-1">
<preConditions <strong>onFail="MARK_RAN" onSqlOutput="TEST"</strong>>
<dbms type="<strong>hsqldb</strong>" />
</preConditions>
<insert tableName="usuario">
<column name="login" value="03220563L" />
<column name="oid" value="d0feb400-2b6e-12e4-ad42-5404a6097000" />
<column name="fecha" valueDate="${now}" />
<column name="nombre" value="Usuario" />
<column name="apellidos" value="Prueba Local" />
<column name="activo" valueBoolean="true" />
</insert>
<insert tableName="participacion">
<column name="login" value="03220563L" />
<column name="rol" value="ROLE_BASIC" />
</insert>
</changeSet>

Lo importante aqui es la parte de preConditions marcando el atributo onFail=”MARK_RAN” para que cuando falle, no interrumpla la ejecución y el parametro onSqlOutput=”TEST”, esto ultimo es muy importante, porque sino cuando invoques el perfil de maven updateSQL no tendria en cuanta la precondición, pues el valor por defecto es IGNORE. Con esto se fuerza a que al generar el SQL se compruebe la precondición.