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 Plugin может помочь вам автоматизировать интеграционное тестирование классов, связанных с базой данных.

Translated by ChatGPT gpt-3.5-turbo/36 on 2023-11-17 at 12:26

sixnines availability badge   GitHub stars