Liquibase with Maven

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Liquibase - это инструмент управления миграциями для реляционных баз данных. Он версионирует изменения схемы и данных в базе данных, подобно тому, как Git или SVN работают с исходным кодом. Благодаря своему плагину для Maven, Liquibase может использоваться в сценариях автоматизации сборки.

Допустим, вы используете MySQL (PostgreSQL или любую другую конфигурацию базы данных будут очень похожи.)

Добавьте liquibase-maven-plugin в ваш pom.xml (получите его последнюю версию в Maven Central):

Чтобы проверить, что это работает, выполните команду mvn liquibase:help.

Я рекомендую вам хранить учетные данные базы данных в settings.xml и в соответствующих профилях. Например:

Когда вы запускаете Maven, не забудьте включить один из профилей. Например: mvn -Pproduction.

Я предполагаю, что у вас уже есть база данных с схемой (таблицы, триггеры, представления и т. д.) и некоторыми данными. Вам нужно “инжектировать схему” и создать файл начальной схемы для Liquibase. Другими словами, мы должны сообщить Liquibase, на каком этапе мы находимся, чтобы он начал применять изменения с этой точки.

Плагин Maven этого не поддерживает, поэтому вам придется запустить Liquibase напрямую. Но это не так сложно. Сначала запустите mvn liquibase:help, чтобы загрузить все артефакты. Затем замените заполнители на свои реальные учетные данные:

Liquibase проанализирует вашу текущую схему базы данных и скопирует свою собственную схему в src/main/liquibase/2014/000-initial-schema.xml.

Теперь создайте основной набор изменений XML и сохраните его в src/main/liquibase/master.xml:

Это точка входа для Liquibase. Он начинается с этого файла и загружает все остальные изменения, доступные в src/main/liquibase/2014. Они могут быть либо в формате .xml, либо в формате .sql. Я рекомендую использовать в основном формат XML, поскольку он проще в поддержке и работает быстрее.

Давайте создадим простой набор изменений, который добавляет новый столбец в существующую таблицу.

Мы сохраняем этот файл в src/main/liquibase/2014/002-add-user-address.xml. В больших проектах вы можете называть ваши файлы именами билетов, в которых они были созданы. Например, 045-3432.xml, что означает изменение номер 45, полученное из билета #3432.

Важно иметь этот числовой префикс перед именами файлов, чтобы правильно их сортировать. Мы хотим, чтобы изменения применялись в правильном хронологическом порядке.

Вот и все. Мы готовы запустить mvn liquibase:update -Pproduction, и наша рабочая база данных будет обновлена - новый столбец будет добавлен в таблицу user.

Также обратите внимание, как плагин MySQL Maven может помочь вам автоматизировать интеграционное тестирование классов, связанных с базой данных.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-15 at 06:43

sixnines availability badge   GitHub stars