10 set 2010

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‘:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerVersion>1.6</compilerVersion>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

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.

Comments

  • Marvin Froeder
    setembro 10, 2010 Responder

    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

  • Daniel T. S.
    setembro 10, 2010 Responder

    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.

  • gustavo.moreira
    setembro 10, 2010 Responder

    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.

  • Hugo Carvalho
    setembro 10, 2010 Responder

    Fala Gustavo,

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

    []!

  • gustavo.moreira
    setembro 13, 2010 Responder

    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!

  • Fabio da Silva
    setembro 13, 2010 Responder

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

    []s

  • Paulo Henrique Nonaka
    setembro 21, 2010 Responder

    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!

  • Elano
    outubro 20, 2010 Responder

    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

  • Codado
    abril 2, 2012 Responder

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

Leave a Comment