Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Maven 2 Release

O objetivo desse artigo é mostrar um exemplo de geração de uma release da sua aplicação Java utilizando um subversion client juntamente com o plugin maven:release.

 

O objetivo desse artigo é mostrar um exemplo de geração de uma release da sua aplicação Java utilizando um subversion client juntamente com o plugin maven:release.

 

É necessário que o leitor já tenha instalado na máquina Maven 2 (http://maven.apache.org/download.html) e um subversion client (http://downloads.open.collab.net/collabnet-subversion.html).

 

É necessário que o leitor também já tenha experiência com a configuração do maven 2 (settings.xml, pom.xml, etc.).

 

Com esse plugin é possível evitar uma série de tarefas repetitivas e “braçais” na hora de se gerar uma nova versão da sua aplicação. Esse processo se divide em 2 etapas, basicamente: prepare e perform.

 

Para obter mais informações sobre esse plugin visite http://maven.apache.org/plugins/maven-release-plugin/index.html.

 

Prepare

Preparar a release consiste em realizar os seguintes passos:

 

Verificar se não há alterações a versionar.

Garantir que não há dependências com outros componentes na versão SNAPHOST.

Mudar a versão dos componentes no arquivo pom.xml

Utilizar a tag scm do arquivo pom para incluir a tag da versão a ser gerada.

Executar os testes unitários do projeto após a alteração do pom.xml.

Versionar os poms modificados.

Aplicar a tag da versão aos artefatos de implementação.

 

Para executar essa série de tarefas basta apenas executar o comando

 

mvn release:prepare

 

Caso algum erro ocorra e a goal prepare for executada novamente, ele continua a partir do ponto aonde o erro aconteceu. Caso queira executar novamente, desde o início, execute o comando

 

mvn release:prepare –Dresume=false ou

mvn relase:clean release:prepare

 

Porém se no ponto aonde ocorreu o erro algum arquivo de implementação já tiver sido alterado é necessário fazer um rollback das mudanças. Faça isso utilizando o comando

 

mvn release:rollback

 

Perform

Gerar a nova release consiste dos seguintes passos:

 

Fazer checkout dos componentes com uma tag específica.

Executar deploy e site-deploy.

 

Exemplo

Abaixo segue um exemplo do arquivo pom.xml de configuração de um componente.

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>br.edu.ucb.rotagro</groupId>

  <version>1.1-SNAPSHOT</version>

  <artifactId>rotagro</artifactId>

  <name>rotagro</name>

  <packaging>pom</packaging>

  <modules>

    <module>rotagro-pojo</module>

    <module>rotagro-web</module>

  </modules>

  <scm>

    <connection>scm:svn:https://rotagro.dev.java.net/svn/rotagro/</connection>

    <developerConnection>scm:svn:https://username:password@rotagro.dev.java.net/svn/
  rotagro/</developerConnection>

    <url>https://rotagro.dev.java.net/svn/rotagro/</url>

  </scm>

  <build>

    <finalName>rotagro</finalName>

    <plugins>

      <plugin>

        <artifactId>maven-release-plugin</artifactId>

          <configuration>

            <tagBase>

              https://usuario:password@rotagro.dev.java.net/svn/rotagro/tags

            </tagBase>

          </configuration>

      </plugin>

    </plugins>

  </build>

  <distributionManagement>

    <repository>

      <id>rotagro-repository</id>

      <name>Repository Name</name>

      <url>

        https://rotagro.dev.java.net/svn/rotagro/builds

      </url>

    </repository>

    <site>

      <id>rotagro-website</id>

      <url>   https://rotagro.dev.java.net/svn/rotagro/site</url>

    </site>

  </distributionManagement>

</project>

 

 

Todos os comandos devem ser executados no diretório do arquivo pom.xml que contém a configuração acima.

 

Ao executar o comando mvn release:prepare será perguntado qual a versão da release do seu componente. Se estiver na versão 1.1 SNAPSHOT será sugerido pelo plugin que o nome da release seja 1.1.

 

Após confirmar o nome da versão do projeto e de seus modules será perguntado qual o nome da tag que deverá ser criada no svn na url especificada em tagbase. Se o nome da sua release é 1.1, é sugerido o nome da tag como o nome do projeto – nome da versão.

 

Após confirmar todos os dados da sua release é hora de preparar o novo ambiente para desenvolvimento. Para isso o release:prepare pergunta qual o nome da nova versão de desenvolvimento do seu projeto e do seus modules. Se a versão anterior era a 1.1 SNAPSHOT é sugerido criar a 1.2 SNAPHOST.

 

gnmaven2rfig01.jpg 

 

Após setar todas as configurações os novos pom.xml são gerados, os testes unitários serão executados (caso houverem), o componente é gerado e seu novo pom.xml é versionado e os artefatos da release também serão versionados com a tag especificada.

 

Nesse momento é gerado um arquivo release.properties que será utilizado pelo goal release:perform. Esse arquivo é utilizado, também, caso se queira fazer o rollback.

 

#release configuration

#Mon Jun 25 11:28:48 BRT 2007

scm.commentPrefix=[maven-release-plugin]

project.rel.br.edu.ucb.rotagro\:rotagro=1.1

project.scm.br.edu.ucb.rotagro\:rotagro-web.empty=true

scm.tag=rotagro-1.1

scm.tagBase=https\://username\:password@rotagro.dev.java.net/svn/rotagro/tags

project.dev.br.edu.ucb.rotagro\:rotagro-pojo=1.2-SNAPSHOT

project.scm.br.edu.ucb.rotagro\:rotagro.tag=HEAD

scm.url=scm\:svn\:https\://username\:password@rotagro.dev.java.net/svn/rotagro/

project.rel.br.edu.ucb.rotagro\:rotagro-pojo=1.1

preparationGoals=clean integration-test

project.scm.br.edu.ucb.rotagro\:rotagro.url=https\://rotagro.dev.java.net/svn/rotagro/

project.dev.br.edu.ucb.rotagro\:rotagro=1.2-SNAPSHOT

project.scm.br.edu.ucb.rotagro\:rotagro.connection=scm\:svn\:https\://rotagro.dev.java.net/

  svn/rotagro/

project.scm.br.edu.ucb.rotagro\:rotagro.developerConnection=scm\:svn\:https\://username

  \:password@rotagro.dev.java.net/svn/rotagro/

project.dev.br.edu.ucb.rotagro\:rotagro-web=1.2-SNAPSHOT

project.rel.br.edu.ucb.rotagro\:rotagro-web=1.1

completedPhase=run-preparation-goals

project.scm.br.edu.ucb.rotagro\:rotagro-pojo.empty=true

 

Agora que já preparamos a release é hora de gerá-la. Executando o mvn release:perform, será feito o checkout do projeto com a tag 1.1 no diretório checkout na raiz do seu projeto.

 

Após isso o projeto será gerado e o deploy será feito no diretório especificado em distributionManagement, no arquivo pom.xml.

 

Conclusão

Gerar a release de um software é difícil e sujeito a falhas, pois geralmente, é cheio de passos manuais que devem ser seguidos, e em uma ordem definida.

 

Com o maven:release é possível automatizar esse processo tornando as builds consistentes e facilitando o controle de configuração e mudança do seu software.

 

Referências

Maven Release Plugin - http://maven.apache.org/plugins/maven-release-plugin/index.html

Maven Continuum – http://maven.apache.org/continuum/

SubVersion – http://subversion.tigris.org/

Maven Release Process – http://docs.codehaus.org/display/MAVEN/Maven+Release+Process





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Autor
Gabriel Nascimento

Gabriel Nascimento (gamnascimento@yahoo.com.br), é arquiteto de soluções corporativas. Trabalha com Java a 5 anos. Atualmente, é responsável pela área de sistemas de alta disponibilidade J2EE para canais lotéricos da Caixa Econômica Federal.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03