Ciclos de Vida

Entendendo Ciclos de Vida


Uma das coisas importantes que temos que saber sobre o maven é referente ao conceito de ciclo de vida dos build, toda vez que digitamos o comando mvn estamos em algum ciclo de vida de construção. Basicamente temos três ciclos e cada um deles tem fases próprias de construção, são eles, o default, site e clean.

O ciclo de vida de build é construir em cima de fases e cada fase possui um goal. O goal nada mais é do que a atividade que é executada na fase que está o build. Por exemplo o ciclo default possui resumidamente as seguintes fases:

  • validate - valida se o projeto está correto
  • compile - Compila os fontes do projeto
  • test - testa os códigos de testes compilados utilizando um framework de testes.
  • package - realiza o empacotamento de acordo com tipo definido no pom.
  • integration-test - efetua o deploy do pacote no ambiente se necessário para realização de testes integrados
  • verify - verifica a integridade do pacote
  • install - instala o pacote no repositório local
  • deploy - atualiza o pacote no repositório remote, disponibilizando o componente para todos os desenvolvedores

Todas as fases de um build possui associadas um Goal (Alvo, meta), no ciclo de vida default temos uma fase chamada packaging e nesse caso o Goal associado pode variar de acordo com o tipo de empacotamento, por exemplo, se o packaging é jar, a saida será um arquivo .jar, se o packaging war, teremos na saída um .war como resultado do build, variando de acordo com o que informamos no pom.xml do projeto.

Podemos solicitar a execução de mais de um ciclo de vida ao mesmo tempo, exemplo:

mvn clean compile site

O que está acontecendo na linha acima é o seguinte: primeiro estamos excutando o ciclo clean, para o ciclo default simplesmente informamos a fase que queremos executar, nesse caso compile e por último o ciclo site.


Plugins

Temos como também associar a cada fase de um ciclo de vida de build, um plugin com uma atividade específica, esse recurso trazem aos builds um recurso poderoso, pois podemos adicionar uma variedade de funcionalidades novas aos projetos, permitindo que usemos as mais variadas api, frameworks, execução de tarefas, entre muitas outras coisas. Existem diversos desenvolvedores criando novos plugins para integrarmos aos builds, facilitando muito a execução das mais variadas tarefas.

Nos exemplos que vamos encontrar aqui no site, vamos ver vários plugins integrados a construção dos mais variados tipos de projetos. Abaixo para que você possa entender, vemos como adicionar um plugin e como definir a fase que ele será executado no momento do build.

  <plugin>
   <groupId>com.mycompany.example</groupId>
   <artifactId>display-maven-plugin</artifactId>
   <version>1.0</version>
   <executions>
     <execution>
       <phase>process-test-resources</phase>
       <goals>
         <goal>time</goal>
       </goals>
     </execution>
   </executions>
 </plugin>

Nesse exemplo estamos adicionando o plugin Display, onde ao chegar na fase process-test-resources do ciclo de vida default vai executar o Goal time, onde será exibida o timestamp do momento de inicio da fase.