17 de mai de 2011

Maven em 5 Minutos

Veja como em pouco tempo já conseguimos criar um projeto no Maven!

Instalação

Maven é uma ferramenta Java, portanto, é necessário ter o Java instalado para prosseguir.

Para início de conversa, faça o download do Maven e siga as instruções de instalação. Após este passo digite o seguinte comando no terminal ou no prompt de linha de comando:

mvn –version ou também mvn –v. No meu computador, por exemplo, apareceu o seguinte resultado:

 

[image[11].png]

Atenção amantes do Linux, sim eu uso Windows!

Atenção, segundo o próprio site do Maven, dependendo da sua configuração de rede, você pode precisar de mais configurações extras. Em casa, por exemplo, não tenho restrições de proxy, já no trabalho, é necessário configurar informações de acesso a rede(usuário e senha para servidor proxy).

 

Criando um projeto

Abra uma nova linha de comando e execute o seguinte comando:

mvn archetype:generate -DgroupId=br.com.maven3.tutorial -DartifactId=projeto.exemplo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Caso tenha acabado de instalar o Maven a primeira execução pode demorar um um pouco. Não estranhe, o Maven irá instalar as últimas atualizações dos artefatos necessários(plugins e outros arquivos) para o seu repositório local. Na prática você pode precisar executar mais de uma vez para que realmente funcione. Como disse, não estranhe a princípio. Isto pode acontecer devido ao servidor remoto que demorar muito e ocasionar os conhecidos timeouts antes do término dos downloads necessários.

No meu computador, que já possui o Maven configurado demorou apenas 7 segundos, veja:

image

Você perceberá que ao executar o comando será criado um diretório com o mesmo nome associado como um artifactId. 

Para ficar mais fácil de apresentar esta estrutura resolvi importar o projeto que acabamos de criar no Eclipse, conforme tela abaixo:

image


Após selecionar a opção de importar um projeto Maven já existente(menu File/Import do Eclipse, indique a pasta onde está o seu projeto criado.


image


Veja que neste exemplo usamos o conceito de Templates de Projeto Maven para agilizar o processo.


O diretório src/main/java contém o código fonte do projeto. A pasta src/test/java contém o código fonte necessário para os testes. O Arquivo pom.xml define o modelo do projeto assim como as suas particularidades, ou simplesmente, POM.


 


O POM


O arquivo pom.xml é o núcleo da configuração do projeto no Maven. Este arquivo de configuração contém a maioria das informações necessárias para construir  um projeto exatamente da forma que você precisa. O POM é algo complexo e inicialmente pode até te assustar(para ser mais sincero ainda, sempre assusta aos iniciantes!) devido ao nível de complexidade que podemos configurar nele porém não é necessário conhecer todos os detalhes para que você possa usá-lo com eficiência. No nosso exemplo o POM ficou assim:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>br.com.maven3.tutorial</groupId>
  <artifactId>projeto.exemplo</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>projeto.exemplo</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 


A pergunta óbvia…O que eu realmente preciso fazer agora?


Você executou o comando Maven archetype:generate passando vários parâmetros. O prefixo archetype é o plugin que contém a meta(ou goal no inglês). Caso esteja familiarizado com o Ant, você fazer uma analogia com algo semelhante a uma task. Este goal(ou meta, fique a vontade para usar o mais apropriado) criou um projeto simples baseado em um archetype(ou template de projeto). Por enquanto, basta dizer que um plugin é uma coleção de metas com um objetivo geral comum.


Dica: Depois leia também sobre o ciclo de vida de um projeto Maven.


Construa o Projeto


mvn package


O comando abaixo irá imprimir uma série de várias ações e no final teremos a seguinte mensagem de sucesso(claro, se você fez tudo certo):


image


Ao contrário do primeiro comando executado(archetype:generate) você pode perceber que é uma simples palavra package. Embora isto parece uma meta(ou goal), isto é na verdade uma fase(phase). A fase é passo do ciclo de vida de construção do projeto, ou seja, parte de uma série ordenada de fases necessários. Quando uma fase é informada, o Maven irá executar cada fase na sequência até que inclua a última informada no comando( no caso mvn package). Por exemplo, para executarmos a fase compile as seguintes fases também serão executadas antes: validate, generate-sources, process-sources, generate-resources e finalmente compile.


Para testar o arquivo jar compilado e empacotado neste exemplo apenas com o seguinte comando:


java -cp target/projeto.exemplo-1.0-SNAPSHOT.jar br.com.maven3.tutorial.App


A saída deve ser:


Hello World!


 


Gerando o Site


mvn site


Esta fase gera um site baseado na informação contida no pom.xml. Você pode olhar esta documentação gerada em target/site.


Finalizando…


Espero que este resumo de 5 minutos venha despertar o interesse no uso do Maven. Isto é bem simples e não tem o caráter de ser sua referência para seguir em frente. Descubra o que é possível criar via Maven e depois comente aqui os resultados. Pesquise mais neste blog sobre o assunto ou vá até as referências do próprio Maven.


Demorei um pouco mais de 5 minutos para escrever mas com certeza fará em menos de 5 minutos!


Boa Sorte.

Pesquisa personalizada

2 comentários:

  1. Eu criei um projeto igual ao seu, mas qdo eu vou criar o site, eu não consigo obter nenhuma arquivo .html. Para mim é gerado apenas algumas imagens na pasta target/site. Vc conseguiu gerar o site?

    ResponderExcluir
  2. Eu realmente percebi o mesmo problema após ter executado o comando mvn site. Até então não tinha percebido que apenas gerava alguns arquivos porém faltou todo o restante da estrutura necessária.

    Após pesquisar sobre o problema encontrei o seguinte link: http://maven.apache.org/plugins/maven-site-plugin-3.0-beta-3/maven-3.html

    Nesta página explica que ocorreram mudanças no uso do plugin maven-site-plugin na versão 3 do Maven e que a forma como funcionava até a versão 2 não funcionaria mais então segue a dica para que este comando funcione na versão 3.0.3:



    Adicione ou complemente a parte do plugin conforme trecho abaixo e irá funcionar:


    <build>

      <plugins>

        <!-- outros plugins aqui -->

        <<plugin>

          <groupId>org.apache.maven.plugins</groupId>

          <artifactId>maven-site-plugin</artifactId>

          <version>3.0-beta-3</version>

        <</plugin>

          </plugins>

        </build>

    ResponderExcluir

Leia as regras:
Todos os comentários são lidos e moderados previamente.
Apenas os que respeitam as regras abaixo serão publicados:
- o comentário deve estar relacionado ao assunto do post
- não serão aceitos palavrões e ofensas ao redator do blog ou a terceiros
- não inclua links desnecessários no conteúdo do comentário
- se quiser deixar sua url, comente com a opção OpenId
Obs.: os comentários dos leitores não refletem a opnião do blog.