BLOG

Maven — Gerenciamento de versão utilizando Maven Plugin Release


Uma forma simples de gerenciar a versão de pacotes de seu projeto em CI/CD

Neste artigo falaremos do processo de gerenciamento de versões dentro de um projeto Java utilizando maven. Para esse processo, consideraremos o modelo de versão <MAJOR.MINOR.PATCH> , onde consideraremos Major como uma release oficial, Minor a correção de bugfix e Patch qualquer implementação ou nova feature que deverá ser testada.

O que usaremos ?

Neste processo, utilizaremos :

Configurações

Primeiro, dentro do arquivo pom.xml do seu projeto, iremos configurar o plugin maven-release-plugin que será responsável por gerenciar as versões PATCH ( SNAPSHOT ).

Exemplo:

/media/acf968ba7b94fa93c58c030dae15e158

  • Obrigatóriamente, teremos que manter a versão do projeto finalizando com -SNAPSHOT
  • Dentro da tag scm configuraremos o endereço do repositório Git, para que o processo crie uma git-tag do versionamento feito. Também configuraremos que a tag gerada será o mesmo valor que o atributo version do pom, através da anotação @{project.version}
  • Dentro ta tag <build></build> iremos adicionar o plugin de release. Dentro do mesmo, marcaremos que o formato de tag do repositório será o mesmo padrão da versão do pom e também que nosso processo de geração de versão não verificará se nosso arquivo pom está sem alteração através da marcação checkModificationExcludes

Versão SNAPSHOT

Para esse fluxo, qualquer nova implementação ou nova feature que deverá ser testada e que foi mergeada para a branch master criaremos uma nova versão SNAPSHOT, que ainda não corresponderá a versão release final, apenas uma versão estável para testes e validações.

Para criarmos a primeira versão SNAPSHOT, devemos executar os comandos release:prepare e release:perform .

De forma bem resumida, o comando prepare é responsável por:

  • Criar a git-tag com o mesmo número da versão para o repositósio configurado
  • Atualizar a versão -SNAPSHOT do POM de 0.1.-SNAPSHOT para 0.1.1-SNAPSHOT
  • Testar (equivalente ao mvn package ou mvn test ) o project com a nova versão atualizada do POM
  • Efetuar o commit do POM

Já o comando perform :

  • Fará o checkout de da tag correspondente com a versão do POM
  • Efetuara o mesmo que o comando mvn deploy

mvn –batch-mode release:clean release:prepare release:perform -Darguments=”-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true” -Dusername=<SEU_USER_GIT> -Dpassword=<SUA_SENHA_GIT>

O argumento --batch-mode é responsável por executar todo o processo sem apresentar nenhum prompt para inserção de valores, caso você não utilize, o terminal sempre perguntará qual será a proxima versão SNAPSHOT e solicitará o usuário e senha para commitar no repositório git.

Caso você encontre algum problema no preparo de sua release, utilze a opção -Dargumnts=”-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true” para evitara alguns testes.


Versão MAJOR e MINOR

Considerando um fluxo completo com uma release oficial ou uma correção de bugfix, precisaremos alterar as versões MAJOR e MINOR do projeto e para isso, usaremos a dependência Build Helper Maven Plugin para nos auxiliar na gestão das versões dos pacotes.

Para isso, devemso inserir o seguinte trecho em nosso POM para utilização da lib.
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.2.0</version>
<type>maven-plugin</type>
</dependency>
</dependencies>

Nosso POM final ficará dessa forma:

https://gist.github.com/thihenos/a7eba95481ab0e8a76f658df2ef43a8c#file-mavenreleasepluginbbuilderhelper-xml

Agora, para atualizarmos a versão MINOR, executaremosmvn –batch-mode build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.nextMinorVersion}.0-SNAPSHOT versions:commit

Esse comando transformará nossa versão de 0.1.0-SNAPSHOT para 0.2.0-SNAPSHOTmvn –batch-mode build-helper:parse-version versions:set -DnewVersion=${parsedVersion.nextMajorVersion}.${parsedVersion.minorVersion}.0-SNAPSHOT versions:commit

Esse comando transformará nossa versão de 0.1.0-SNAPSHOT para 1.1.0-SNAPSHOT

Usaremos sempre o argumento versions:commit para que o maven sempre commite as alterações do POM. Em seguida, executaremos novamente o comando de prepare e perform para que essas alterações sejam inseridas em nosso repositório.mvn –batch-mode release:clean release:prepare release:perform -Darguments=”-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true” -Dusername=<SEU_USER_GIT> -Dpassword=<SUA_SENHA_GIT>


Toolbox Devops Consultoria

Toolbox Devops Consultoria

Simplicando seu dia-a-dia na cloud

Esta gostando do conteúdo ? Compartilhe!