DBDeploy Plugin


A utilização do dbdeploy garante que todas as bases se mantenham sincronizadas evitando que você aplique configurações diferentes nos bancos de cada ambiente, vamos ver como funciona esse plugin, criando sua configuração para desenvolvimento e como administradores de dados podem se beneficiar do uso do mesmo.

Configuração:

1 - Criando o banco de dados Template para testes com o plugin, acessar o mysql e criar o banco:

create database template;
DBDeploy Plugin

2 - Antes de executar o maven com o plugin dbdeploy é necessário criar no banco template uma tabela chamada changelog, conforme abaixo:

 use template;
 
 create table changelog (change_number DECIMAL(22,0) NOT NULL,
  complete_dt TIMESTAMP NOT NULL,
  applied_by VARCHAR(100) NOT NULL,
  description VARCHAR(500) NOT NULL
 );
 
 Alter table changelog ADD CONSTRAINT Pkchangelog PRIMARY KEY (change_number);

Criando o banco

O script de setup do plugin está na pasta setup que fica no caminho:

dbdeploy\src\main\sql\setup

Com o nome: setup-dbdeploy.sql

A tabela changelog é usada para manter o histórico de execução dos scripts do banco, os scripts podem ser de criação de estruturas (DML) ou inserção/atualização de dados (DDL).

Vizualizando o banco

Uma vez criada a tabela changelog, necessária para controle de versão dos scripts, já podemos efetuar a configuração do plugin no POM do projeto, nesse caso vamos criar um projeto maven somente para manter a parte de banco de dados.


3 - A configuração do plugin no POM

Abaixo segue um exemplo da configuração do plugin para uso com o maven

  <plugins>
    <plugin>
      <groupId>com.dbdeploy</groupId>
      <artifactId>maven-dbdeploy-plugin</artifactId>
      <version>3.0M3</version>
      <configuration>
        <scriptdirectory>${basedir}/src/main/sql</scriptdirectory>
        <driver>com.mysql.jdbc.Driver</driver>
        <url>jdbc:mysql://localhost/template?autoReconnect=true</url>
        <userid>root</userid>
        <password>password</password>
        <delimiter>;</delimiter>
        <delimiterType>normal</delimiterType>
      </configuration>
      <executions>
        <execution>
          <id>update-database</id>
          <goals>
            <goal>update</goal>
          </goals>
          <phase>process-test-resources</phase>
        </execution>
        <execution>
          <id>update-IT-database</id>
          <goals>
            <goal>update</goal>
          </goals>
          <phase>pre-integration-test</phase>
        </execution>
      </executions>
      <dependencies>
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.20</version>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>

Os scripts criados devem ficar armazenados no caminho definido na tag: scriptdirectory, no exemplo acima, os scripts estão armazenados em:

<scriptdirectory>${basedir}/src/main/sql</scriptdirectory>

Os scripts devem ser criados seguindo um padrão no nome do arquivo para que ele seja controlado pelo plugin, o nome do script deve iniciar com um timestamp (invertido) seguido de _ + o nome do script, segue exemplo:

20130221192045_create_table_users.sql

Comandos do plugin

Para listar a documentação completa do plugin:

mvn help:describe -Dplugin=com.dbdeploy:maven-dbdeploy-plugin –Ddetail

Para realizar a execução dos scripts que estão configurados na tag scriptdirectory

mvn dbdeploy:update

Utilizando um profile para atualização de ambiente (exemplo, base de produção)

Uma vez definido um profile, vamos efetuar a atualização da base de produção, nesse caso devemos utilizar o comando (Faça o download para você ver a configuração de profile):

mvn dbdeploy:update -Pdatabase-template-prd

Caso o parâmetro –P não seja informado será utilizada a configuração padrão, a que está configurada fora dos profiles.


Download

http://www.javadev.com.br/downloads/plugins/dbdeploy.rar.


Referência

https://code.google.com/p/dbdeploy/wiki/UsingTheMavenPlugin.