generated-changeset-ids-contains-description

The generated-changeset-ids-contains-description global parameter is a Boolean that determines whether Liquibase includes changeset descriptions in changelogs generated with the generate-changelog command in addition to changeset IDs. The default value is false.

Uses

If you set generated-changeset-ids-contains-description to true and run the generate-changelog command, Liquibase includes a human-readable description of each changeset as part of the value of the id attribute in the changelog it generates. Otherwise, it only includes the changeset ID, which is made of a randomly generated value followed by the current count of changesets in the changelog.

Note: Liquibase uses the id attribute to give each change a unique identifier, not to specify the order changes are run. It can be an integer or a string.

Setting the generated-changeset-ids-contains-description parameter

You can set generated-changeset-ids-contains-description in four ways:

  • In the Liquibase properties file
  • As a global parameter in the CLI
  • As a JVM system property
  • As an environment variable (Liquibase Pro)

Liquibase properties file parameter

In Liquibase 4.1+, add the following to Liquibase properties file:

liquibase.generatedChangesetIdsContainsDescription: <true|false>

CLI global parameter

Tip: All commands and parameters use the --kebab-case format in the CLI environment. This is the format Liquibase recommends for best results. If your preference is camelCase, it will still work in the CLI.

In your command line, use a global parameter with a single Liquibase command:

liquibase --generated-changeset-ids-contains-description=<true|false> generate-changelog --changelog-file=dbchangelog.xml

Java system property

In your command line, use the JAVA_OPTS Environment Variable to set a JVM system property:

Mac/Linux syntax:

JAVA_OPTS=-Dliquibase.generatedChangesetIdsContainsDescription=<true|false>

Windows syntax:

set JAVA_OPTS=-Dliquibase.generatedChangesetIdsContainsDescription=<true|false>

Note: To use a Liquibase command alongside JAVA_OPTS, add && liquibase <command> to the end of your input.

Environment variable (Liquibase Pro)

In Liquibase Pro, set an environment variable:

Mac/Linux syntax:

LIQUIBASE_GENERATED_CHANGESET_IDS_CONTAINS_DESCRIPTION=<true|false>

Windows syntax:

set LIQUIBASE_GENERATED_CHANGESET_IDS_CONTAINS_DESCRIPTION=<true|false>

Note: These environment variable commands only apply to the current shell. If you need to pass an environment variable to a child process without affecting the parent process, you can use the export command on Mac/Linux or the setx command on Windows.

Output

If you use the generate-changelog command with generated-changeset-ids-contains-description set to true, the output looks like:

<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<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"
	xmlns:pro="http://www.liquibase.org/xml/ns/pro"
	xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
		http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd
		http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
		http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd">
	<changeSet author="adrian (generated)" id="l14y-1 (createTable tableName=TEST_TABLE)">
		<createTable tableName="TEST_TABLE">
			<column name="TEST_COLUMN" type="VARCHAR(2147483647)"/>
			<column name="TEST_ID" type="INT">
				<constraints nullable="false" primaryKey="true" primaryKeyName="PK_TEST_TABLE"/>
			</column>
		</createTable>
	</changeSet>
</databaseChangeLog>

Related links