Configurando o liquibase num projeto pequeno usando maven

Oba, código pronto!

Olha eu gosto de escrever sobre essas coisas, tecnologia e tal.
Mas faz tempo q não atualizo o blog por falta de tempo.
Peço desculpas à multidão dos meus 5 seguidores por isso🙂

Anyway, eu preparei um exemplinho aqui de como estruturar um projeto pequeno, usando maven e liquibase.
(É bom quando a gente tá procurando na internet como fazer alguma coisa e tem o código pronto né? Eu gosto!)

Estou assumindo que vc leu os posts anteriores e possui um conhecimento básico de maven (sabe o que é um pom, já fez alguns “clean install” na vida, etc).
Se não, veja:
1) Esse link; e
2) esse outro link; e

O código tá lá no bitbucket. Se vc tem um clientezinho GIT, clone o repositório:

git clone https://bitbucket.org/tonylampada/tonylampada_examples.git

Se não, vai lá e clica em “get source” e baixa o zip.

Lá dentro tem uma pasta LIQUIBASE/exemplo.

A estrutura é mais ou menos assim:

exemplo
-- pom.xml //pom que agrega os 2 sub-módulos
-- exemplo-liquibase
---- liquivai.vat
---- mostrabanco.bat
---- pom.xml
---- src/main/resources
------ master.xml
------ exemplo
-------- 1.0
---------- master.xml
---------- (outros changelogs)
-------- 1.1
---------- master.xml
---------- (outros changelogs)
-- exemplo-web
---- pom.xml
---- src //faz de conta que isso aqui é uma aplicação web

Os xmls estão numa estrutura tal que os patches são executados na ordem cronológica das versões.
A hora que vc for criar sua estrutura, sugiro não inventar muita moda não: segue essa mesma receitinha aí que deve dar certo. E lembre-se de não renomear os arquivos e pastas, conforme mencionado no post anterior.

Esse módulo maven “exemplo-liquibase” é um cara que se vc fizer um “clean install” nele, ele vai simplesmente gerar um jar com esse monte de xml dentro. Não é esse o maior objetivo da vida dele.

Tem outra coisa bem mais interessante que ele sabe fazer: aplicar esse conjunto de changelogs no banco.
Pra isso vc deve rodar o seguinte comando (no diretorio exemplo-liquibase)

mvn clean package liquibase:update 

Ou simplesmente roda esse “liquivai.bat” que tem aí.

O que torna isso possível é a configuração do pom dele, através do uso do liquibase-maven-plugin.
A parte relevante do pom é a seguinte:

  <plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>2.0.1</version>
    <configuration>
      <changeLogFile>master.xml</changeLogFile>
      <driver>org.hsqldb.jdbcDriver</driver>
      <url>jdbc:hsqldb:file:banquinho;shutdown=true</url>
      <username>sa</username>
      <password></password>
      <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
      <verbose>true</verbose>
    </configuration>
  </plugin>

O que acontece na hora que vc roda esse comando é o seguinte:

Na hora do “package”, uma das coisas que o maven faz é copiar o conteúdo do src/main/resources pra dentro de target/classes.

O diretório target/classes é que é levado em consideração pelo liquibase-plugin na hora de buscar os arquivos changelog.
Ou seja, essa configuração “master.xml” se refere ao caminho do arquivo relativo a esse diretorio, blz?

Aí, depois do goal “package”, o liquibase:update aplica os patches no banco.
Que banco? Esse banco “banquinho” aí, que vai ser criado em HSQL no seu disco a primeira vez que vc rodar.
Por isso o plugin precisa tb da dependência do driver do hsql.

<dependency>
  <groupId>org.hsqldb</groupId>
  <artifactId>hsqldb</artifactId>
  <version>2.2.8</version>
</dependency>

Pra quem não conhece, o hsql é um banco de dados “pure java” que pode rodar em memoria ou persistido no disco.
É muito bom pra fazer testes em ambiente de desenvolvimento, e há quem use até em produção tb.

Depois de rodar o liquibase:update, tem um outro “mostrabanco.bat” que vc pode rodar – esse cara executa um utilitário do hsql que abre uma tela de administracao do banco. Vc pode executar comandos SQL aí (dá uma olhada aí no bat e no pom pra entender como que eu configurei isso – é bem simples)

Se vc usa outro banco diferente desse (provavelmente é o caso né…), vc já deve saber o que fazer: colocar a dependência pro driver do seu banco e mexer nas configurações de url, driver, usuario e senha.

Mais detalhes sobre a configuração do plugin no maven, lá no site do liquibase.

Ah, já acabou?

É, esse post era pra ser curtinho mesmo.
O que interessa mesmo é o código pronto que tá lá pra vc baixar.
Essa estrutura simples aí deve ser suficiente pra uma aplicação pequena.

Se vc precisa disso pra uma aplicação maiorzinha, com diferentes módulos, que lidam com partes diferentes do banco, e tem diferentes equipes desenvolvendo, então a solução pra vc precisa de uma estrutura mais complexa…
Cada módulo vai ter que ter o seu jarzinho de xmls liquibase, e depois vc vai ter que dar um jeito de juntar tudo e executar no banco. Mas isso já é assunto pro próximo post…

É isso aí.
Bubble sorte!

[ ]’s
O Lâmpada

Não perca nos próximos posts:

  • Estendendo a estrutura anterior para um projeto grande e modular
  • O que fazer quando houver dependências cíclicas entre os módulos no nível do BD
  • Incluindo testes para os patches liquibase no processo de integração contínua
  • Use o liquibase para reduzir drasticamente o tempo de deploy de novas versões em um ambiente de produção

2 comentários em “Configurando o liquibase num projeto pequeno usando maven

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s