Change Log Parameters
Since LiquiBase 1.7
LiquiBase allows dynamic substitution of parameters in a changelog. The parameters to replace are described using the ${} syntax.
Examples
<createTable tableName="${table.name}"> <column name="id" type="int"/> <column name="${column1.name}" type="varchar(${column1.length})"/> <column name="${column2.name}" type="int"/> </createTable>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> <property name="clob.type" value="clob" dbms="oracle"/> <property name="clob.type" value="longtext" dbms="mysql"/> <changeSet id="1" author="joe"> <createTable tableName="${table.name}"> <column name="id" type="int"/> <column name="${column1.name}" type="${clob.type}"/> <column name="${column2.name}" type="int"/> </createTable> </changeSet> </databaseChangeLog>
Configuring parameter values
Parameter values are looked up in the following order:
- Passed as a parameter to your LiquiBase runner (see Ant, Command Line, etc. documentation for how to pass them)
- As a JVM system property
- In the <parameters/> block of the DatabaseChangeLog file itself.
