Técnico

Criando seu primeiro projeto Maven

Começando com Maven 2

O objetivo desse post é ensinar como configurar um projeto para usar maven desde o início, deixando um pouco de lado a origem e a motivação por trás do maven. Também não será detalhado o funcionamento do maven, o que será feito em um outro post.

Instalando maven

Para instalar basta baixar a pasta compactada do próprio site (http://maven.apache.org/download.html). Existem várias tipos de arquivos compactados, mas todos contém a mesma pasta, escolha o de sua prefência. Como o maven é feito em Java, não existe restrição de SO.

Uma vez que a pasta foi descompactada no diretório de sua escolha, basta adicionar no PATH de seu SO o caminho para a pasta ‘bin‘ de onde o maven foi descompactado.

No Linux e no OSX, basta adicionar uma linha em seu arquivo ‘.bash_profile‘ na pasta do seu usuário:

export PATH=$PATH:<diretório do maven descompactado>/bin

No Windows vá em ‘Configurações Avançadas do Sistema‘ -> ‘Variáveis de Ambiente‘, na parte de ‘Variáveis de ambiente para o usuário‘ clique em ‘Novo‘.

No campo ‘Nome‘ coloque ‘PATH‘, e no valor o caminho até a pasta ‘bin‘ do diretório do maven. No caso da imagem ‘C:mavenbin‘.

Adicionando o Maven no PATH do Windows

Lembrando que o maven é feito em Java, portanto é obrigatório que o Java esteja instalado na máquina e que a pasta ‘bin‘ do java esteja definida também no ‘PATH‘ para usá-lo.

Para usar as dependências que ele irá vincular no projeto dentro do Eclipse, basta adicionar a variável de ambiente no Eclipse M2_REPO:

Windows‘ -> ‘Preferences‘ -> ‘Java‘ -> ‘Build Path‘ -> ‘Classpath Variables

Clique em ‘New‘ e crie uma varável que se chama ‘M2_REPO‘ com o valor apontando para o diretório do seu usuário seguido de ‘/.m2/repository‘:

Criando variável que aponta para o repositório do Maven dentro do Eclipse

Criando o projeto

Uma vez que o maven esteja instalado, rode em um terminal:

$ mvn --version

Para se certificar que o maven está instalado corretamente e que a versão é a que você fez o download.

Agora que o maven está rodando corretamente, basta escolher uma para pasta colocar seu novo projeto e rodar o seguinte comando dentro da mesma:

$ mvn archetype:generate

Feito isso:

  • Uma série de opções irá aparecer para você escolher, apenas aperte Enter para que seja escolhido o tipo padrão de projeto Java.
  • Agora o maven irá pedir uma versão do gerador de projetos, apenas escolha a opção ‘1‘ e aperte Enter;
  • Feito isso você deve especificar um ‘groupId‘ para seu novo projeto, no caso do exemplo ‘br.com.‘, que é onde o maven irá armazenar todos os artefatos que conterem esse mesmo ‘groupId‘. No caso do Hibernate por exemplo, o ‘groupId‘ é ‘org.hibernate‘;
  • Agora especifique um ‘artifactId‘, que no caso é o nome do projeto. Seguindo o exemplo do hibernate, o ‘artifactId‘ é ‘hibernate-core‘;
  • Especifique uma versão que no caso de nosso exemplo a versão padrão atende bem (1.0-SNAPSHOT);
  • E por último escolha um nome para o pacote que já será criado dentro da pasta do seu projeto.
Confirmação de criação do projeto

Confirme as informações e deixe o maven terminar de criar seu projeto. Certifique-se que tudo está configurado corretamente e rode dentro da pasta de seu projeto novo:

$ mvn clean install

Isso fará com que o maven compile seu código, rode os teste, e gere um artefato (jar) que estará disponível em seu repositório local. Para entender como o maven organiza os artefatos, entre na sua pasta de usuário e depois na pasta ‘.m2‘ e dentro ‘repository‘. Repare que existe uma pasta com o nome do seu ‘groupId‘ e sua respectiva hierarquia, e dentro dessa pasta existe uma outra com o nome do seu artefato e por último uma outra pasta com a versão do mesmo. Abra a pasta e veja que o jar do seu projeto está dentro junto com o pom do mesmo. Por exemplo os artefatos do JUnit:

Localização dos artefatos do JUnit no repositório local

Para importar seu projeto novo no Eclipse, basta rodar o comando no terminal:

$ mvn eclipse:eclipse

Com isto o projeto se tornará um projeto que o eclipse entende, e assim será possível importá-lo. Importe o projeto e veja como o maven organizou as pastas e pacotes:

Hierarquia de um projeto criado no Maven e importado no Eclipse

Abra na ‘View‘ ‘Package Explorer‘ do Eclipse e repare que existem duas pastas principais no projeto: ‘src/main/java‘ e ‘src/test/java‘. Em ambas as pastas existe o pacote ao qual tínhamos dado nome no momento em que criamos o projeto pelo maven. Também existe uma classe com um método ‘main‘ que apenas imprime “Hello World!”, e uma classe de teste que apenas possui um ‘assertTrue(true);‘.

Alguns detalhes importantes: o projeto que o maven cria por padrão usa o JUnit 3.8.1, e para mudar a versão basta alterar o ‘pom.xml‘ que o maven criou. Outro detalhe importante é que por padrão o maven compila o projeto usando Java 1.3, portanto é preciso adicionar o seguinte trecho de xml no ‘pom‘ do projeto para alterar a versão do compilador, dentro da tag ‘project‘:

[cc_xml]
org.apache.maven.plugins
maven-compiler-plugin

1.61.6
1.6
UTF-8

[/cc_xml]

Note que foi adicionado uma tag ‘encoding’ com o valor ‘UTF-8‘, isso para dizer que as classes estão escritas em formato UTF-8 para padronizar o build.

Agora que o projeto está criado e configurado podemos começar a desenvolver em cima dele. Todas as suas classes da aplicação devem sempre estar dentro de ‘src/main/java‘, pois esta é a pasta que o maven irá exportar no jar que estará disponível no repositório.

Dica: rode o comando:

$ mvn clean install

Agora abra a pasta do projeto. Será criada uma pasta ‘target‘ que contém o ‘jar‘ do seu projeto além de alguns relatórios de teste e os arquivos compilados.

Na pasta ‘src/test/java‘ devem ir todas as classes de teste do seu projeto. Assim o maven se encarregará de rodá-los quando o jar for gerado, garantindo a integridade do projeto.

No próximo post será explicado melhor o funcionamento do maven, por isso tente seguir o exemplo e poste dúvidas a vontade.

Autor(a)

Gustavo Moreira

Comentários (9)

  1. Marvin Froeder
    10 de setembro de 2010

    Welcome to the dark side 😀

    Só uma sugestão, instala o m2e no eclipse, daih não precisa fazer nenhuma configuração.
    http://m2eclipse.sonatype.org/

    VELO

  2. Daniel T. S.
    10 de setembro de 2010

    Na internet há uma porção de pessoas com problemas para utilizar o maven com flex, seja flex 3 ou o 4, e eu sou uma delas. Seria interessante um post sobre este assunto, pois sei que a D-Click possui uma ótima equipe de desenvolvimento, e com certeza já devem ter desenvolvido algum projeto com essa integração.

    Agradeço a atenção.

  3. gustavo.moreira
    10 de setembro de 2010

    Boa noite galera,
    o m2eclipse é muito bom para quem ainda está se familiarizando com o Maven. Eu vou esperar pelo Maven 3 que está prometido para o fim do ano para me arriscar com ele =).
    Obrigado pela dica Marvin!

    Quanto ao Flex, estamos providenciando um post sobre o assunto! Obrigado pelo feedback também Daniel.

  4. Hugo Carvalho
    10 de setembro de 2010

    Fala Gustavo,

    bacana o post, mas vc poderia adicionar “o que é o Marven”, já que o post é pra quem está começando.

    []!

  5. gustavo.moreira
    13 de setembro de 2010

    Obrigado pelo feedback Hugo!
    Gostei da idéia, vou colocar uma explicação sobre o propósito do Maven no próximo post.
    Abraço!

  6. Fabio da Silva
    13 de setembro de 2010

    Muito bom o post.
    Tb estou tendo problemas com Maven + Flex, ficarei no aguardo do post.

    []s

  7. Paulo Henrique Nonaka
    21 de setembro de 2010

    Opa, mais um na espera pelo post Maven+Flex =]
    Muito bom os tutoriais, estou gostando muito mais do que outros que busquei na internet, parabéns pelo trabalho!

  8. Elano
    20 de outubro de 2010

    Consegui executar tudo aqui, estou estudando Maven a algum tempo só na net.
    Sugiro aos que nao conseguirem, que nao desistam.
    Leia um artigo aqui e outro ali, e uma hora a coisa ingrena.
    Obrigado ao autor do excelente artigo.
    grato,
    Elano

  9. Codado
    2 de abril de 2012

    Kade a integração do Maven com Flex pessoal????
    Só falta isso em…
    Prabens pelo post mas não pare de contribuir please

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *