h1. Configuração e uso de "CarbonFive":http://code.google.com/p/c5-db-migration (C5-db) para migrações de bancos de dados.

C5-db migration é um arcabouço para migrações discretas incrementais de bancos de dados. Cada migração é versionada em uma tabela do banco quando é aplicada nesse banco. C5-db incluye un plugin de Maven que facilita o uso do arcabouço e o integra com o ambiente de desenvolvimento.

h2. Configuração

Com o intuito de evitar conflitos nas configurações pessoais do banco de dados de cada desenvolvedor, a configuração do plugin é feita utilizando o esquema de perfis de Maven. Para isto, basta com criar um arquivo *profiles.xml* na pasta do projeto (onde também está o POM) e estabelecer os parâmetros de configuração do plugin. Na pasta principal do projeto existe um arquivo de exemplo de configuração (profiles_example.xml), o qual pode ser copiado para o *profiles.xml* e modificado segundo o ambiente de desenvolvimento próprio. A configuração padrão é a seguinte:

<pre>
<profiles>
        <profile>
            <id>default-profile</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <db.url>jdbc:postgresql://localhost:5432/bd_teste</db.url>
                <db.username>postgres</db.username>
                <db.pass>postgres</db.pass>
                <db.groupId>postgresql</db.groupId>
                <db.artifactId>postgresql</db.artifactId>
                <db.version>8.3-603.jdbc3</db.version>
            </properties>
        </profile>
        <!-- outros profiles -->
</profiles>
<activeProfiles>
    <activeProfile>default-profile</activeProfile>
</activeProfiles>
</pre>

É importante ativar o perfil utilizando o tag _<activeProfile>[Nome do perfil]</profile>_. O perfil também pode ser configurado usando o argumento *-Pnomedoperfil* na consola quando for executado o comando de migração, mas para uso com Netbeans é preferível usar a configuração com tags. 

O arquivo de exemplo também contem a configuração do tomcat para ser executado desde Netbeans:

<pre>
<profile>
   <!--configuração de netbeans-->
   <id>netbeans-private</id>
      <activation>
         <property>
            <name>netbeans.execution</name>
            <value>true</value>
          </property>
      </activation>
      <properties>
         <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
         <!-- pasta do servidor-->
         <netbeans.deployment.server.id>tomcat60:home=/caminho/para/o/apache-tomcat-6.X.YZ</netbeans.deployment.server.id>
      </properties>
</profile>
</pre>

_Nota_: com Netbeans também é possível ativar um perfil nas propriedades do projeto, na opção Ações, onde pode-se adicionar o parâmetro @-Pnomedoperfil@

h2. Usando o c5-db-migration

h3. Criação de um novo script de migração

Os scripts de migração estão na pasta @${basedir}/src/db/migrations@. Para criar um novo script usa-se o comando:
<pre>
    mvn db-migration:new -Dname=nomeDaMigracao
</pre>

O plugin vai criar um arquivo com o formato *AAAAMMDDhhmmss_nomeDaMigração.sql*
h3. Revisar o status da migração
Usar o comando @mvn db-migration:validate@ para verificar o estado do banco e as migrações pendentes. Também é possível usar o comando @mvn db-migration:check@, que realiza a mesma verificação, mas apresenta um erro quando existem migrações pendentes.

h3. Migrar o banco

Usar o comando @mvn db-migration:migrate@

h3. Reestabelecer o banco

Usando o comando @mvn db-migration:reset@, o c5-db apaga o banco de dados, cria ele de novo e realiza todas a migrações pendentes.


h2. IMPORTANTE

Por favor verificar o correto funcionamento do script de migração antes de ser enviado ao svn. Depois que um script de migração tenha sido enviado ao svn, este NÃO deve ser modificado, pois os outro integrantes da equipe de desenvolvimento pode ter usado esse script para migrar seu banco e as subsequentes modificações podem não ser aplicadas no seu banco. Se é necessário realizar alguma modificação, crie um novo script com tal modificação.

h2. C5-db e Netbeans

Para utilizar c5-db desde Netbeans é necessário criar novas *metas*. Fazer click direito no projeto e selecionar P_ersonalizar>Metas_. Uma janela com a configuração de uma nova meta é apresentada onde podem ser configurados os comando do c5-db. Por ejemplo, para configurar o comando de migração só é necessário colocar _db-migration_ no campo _Metas_. Também é possível configurar o perfil ativo para tal meta. As metas personalizadas podem ser executados fazendo click direito no projeto e clicando no _Personalizar>nome_da_meta_, 
