terça-feira, outubro 07, 2014

Usando Maven Release Plugin para gerar versão

O Apache Maven é um dos mais conhecidos softwares para gerenciamento de ciclo de vida de projetos. Baseado nas informações do arquivo Project Object Model (POM) o Maven pode gerenciar compilação, construção, documentação e geração de informações sobre o projeto.

Atualmente tenho utilizado o bastante o Maven Release Plugin para gerar versões do projeto que estou participando. Os comandos para geração de releases são bem conhecidos, mas mesmo assim estou disponibilizando-os abaixo:

mvn release:prepare release:perform

Gerar versão foi fácil, mas como gerar uma branch a partir de uma tag ?

Para gerar uma branch a partir de uma tag usando o Maven Release Plugin é necessário realizar os seguintes passos:

  1. Realizar o checkout da tag a partir da qual deseja criar a branch.
  2. Executar o comando Maven na raiz do diretório onde a tag a partir da qual a branch será gerada.

O comando Maven citado no passo 2 é:

mvn --batch-mode release:branch -DbranchName=projeto-branch -DautoVersionSubmodules=true -DreleaseVersion=1.0.1-SNAPSHOT -DupdateBranchVersions=true -DbranchBase=http://foo.bar/svn/projeto/branches -Dusername=usuario -Dpassword=senha

Sobre os parâmetros:

  • --batch-mode: Execução em lote, sem intervenção do usuário.
  • -DbranchName=projeto-branch: Nome da branch no Version Control System (VCS). Geralmente usa-se o mesmo nome da tag para manter a rastreabilidade.
  • -DautoVersionSubmodules=true: Atualiza a versão dos submódulos do projeto.
  • -DreleaseVersion=1.0.1-SNAPSHOT: Versão de desenvolvimento da branch e deve ser incrementado a partir da versão da tag. No nosso exemplo estamos gerando uma branch a partir da tag 1.0.0.
  • -DupdateBranchVersions=true: Permite alteração da versão dos POMs na branch.
  • -DbranchBase=http://foo.bar/svn/projeto/branches: URL base das branches do projeto. A URL base deve ser a mesma informada na tag scm do pom.xml.
  • -Dusername=usuario: Usuário do Version Control System (VCS).
  • -Dpassword=senha: Senha do Version Control System (VCS).

Bacana, né? É isso!