Плагин liquibase-maven-plugin предназначен для управления liquibase из Maven. Вот пример команды mvn liquibase:update, для обновления базы данных.
Для начала предлагаю разобраться с тем, что такое Maven и liquibase.
Мавен — это инструмент для сборки Java проекта: компиляции, создания jar, создания дистрибутива программы, генерации документации. Более подробно о самом Maven можно прочитать в статье Apache Maven — основы
Liquibase — это система управления миграциями базы данных. Для ознакомления с liquiabase так же можно прочитать в статье Управление миграциями БД с Liquibase
После того, как мы разобрались с Maven и liquibase, можно перейти к созданию maven проекта и настройке liquibase плагина.
Для начала создадим новый Maven проект, его структура будет выглядеть следующим образом:
Соответственно, pom файл, данного проекта, будет выглядеть:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>liquibaseTest</groupId> <artifactId>ru.test.liquibase</artifactId> <version>1.0-SNAPSHOT</version> </project>
Далее в папке «src/main/resources» создадим папку «liquibase» в которой у нас будут храниться changelog файлы.
В папке liquibase создадим 2 файла:
- db.changelog-master.xml — основной файл миграции, в него с помощью тега
<include>
включаются файлы ченджлогов каждой версии - db.changelog-0.1.0.xml — ченджлог файл, содержащий ченджсеты. Каждый ченджсет это одна транзакция
Рассмотрим данные файлы более подробно:
db.changelog-master.xml
<?xml version="1.0" encoding="UTF-8"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd"> <include file="src/main/resources/liquibase/db.changelog-0.1.0.xml"/> </databaseChangeLog>
В строке <include file="src/main/resources/liquibase/db.changelog-0.1.0.xml"/>
мы подключаем db.changelog-0.1.0.xml файл с ченджсетами, в которых мы выполняем действия с базой данных.
db.changelog-0.1.0.xml
<?xml version="1.0" encoding="UTF-8"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd"> <changeSet id="19082014-1" author="autor"> <comment> Создание таблицы изображений </comment> <sql> CREATE TABLE images ( id bigint NOT NULL, alt character varying(255), url_big character varying(255), url_small character varying(255), CONSTRAINT images_pkey PRIMARY KEY (id) ) </sql> </changeSet> </databaseChangeLog>
Теперь нам необходимо настроить liquibase plugin для Maven. Для этого открываем наш pom файл и добавляем туда:
<plugins> <plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>3.0.7</version> <configuration> <changeLogFile>src/main/resources/liquibase/db.changelog-master.xml</changeLogFile> <driver>org.postgresql.Driver</driver> <url>jdbc:postgresql://localhost:5432/test</url> <username>postgres</username> <password>postgres</password> </configuration> <executions> <execution> <phase>process-resources</phase> <goals> <goal>update</goal> </goals> </execution> </executions> </plugin> </plugins>
В данной конфигурации мы подключаем liquibase-maven-plugin и для него определяем:
- changeLogFile — путь до основного файла миграции
- driver — драйвер для подключения к бд
- url — url для подключения к бд
- username — для подключения к бд
- password — для подключения к бд
Внутри тега <goal>update</goal>
мы определяем, что будем обновлять базу данных при сборке проекта, так же возможны и другие варианты.
Вот в принципе и все, ничего сложного нет. Теперь мы можем обновить нашу базу данных одной командой mvn liquibase:update, находясь в папке с проектом, или при сборке основного проекта. В данном случае будет использоваться <goal>update</goal>
.
Более подробно о плагине можно прочитать на его официальном сайте.
Ниже приведу пример полностью сконфигурированного pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>liquibaseTest</groupId> <artifactId>ru.test.liquibase</artifactId> <version>1.0-SNAPSHOT</version> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.liquibase</groupId> <artifactId>liquibase-maven-plugin</artifactId> <version>3.0.7</version> <configuration> <changeLogFile>src/main/resources/liquibase/db.changelog-master.xml</changeLogFile> <driver>org.postgresql.Driver</driver> <url>${server.db.host}</url> <username>${server.db.user}</username> <password>${server.db.pass}</password> <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase> </configuration> <executions> <execution> <phase>process-resources</phase> <goals> <goal>update</goal> </goals> </execution> </executions> </plugin> </plugins> <finalName>liquibaseTest</finalName> </build> </project>
ссылка на оригинал статьи http://habrahabr.ru/post/233973/
Добавить комментарий