sábado, 12 de janeiro de 2013

Simplificando a vida com Apache Maven

    Apache Maven é uma daquelas ferramentas que a gente acaba tendo uma relação de amor e ódio... Particularmente, aprendi a gostar a medida que via o quão mais simples a construção dos projetos se tornaram ao longo do tempo... Fazendo valer o tempo investido no inicio. Quebrando também o paradigma da maneira como era acostumado a iniciar os projetos, importando um monte de libs, que as vezes nem sabia porque estavam lá, mas se faziam tudo funcionar então está valendo... =\

    Maven é um apoiador na construção de projetos, que facilita, e muito, a gestão de dependências, a automatização das construções, o gerenciamento de configuração e, se a equipe tiver o cuidado de escrever os JavaDocs, dá pra extrair uma documentaçãozinha!!!

    Trabalhando com um conceito de modelo de objeto do projeto (POM) em que as dependências e parâmetros de construção são configurados em um arquivo XML do projeto, nos trouxe uma simplificação enorme em relação à responsabilidade de gerenciar as dependências inclusive as dependências transitivas, a remontagem dos projetos nas estações de desenvolvimento e a liberdade de ter o ambiente de desenvolvimento da forma que mais esteja confortável.

    Com Maven também temos o poder de iniciar projetos WEB, ejb, ear, Android e muitos outros a partir de templates predefinidos ou até mesmo criar nossos próprios templates!

Vamos ver um pouco da ferramenta em ação?

Instalação básica do Maven

    Primeiro passo para usarmos a ferramenta e instalar a dita cuja... Vamos trabalhar aqui com a versão 3.0.4, publicada em Janeiro de 2012.

    Suponho que já tenha o JDK pelo menos 1.5 instalado em seu computador, então comece baixando o pacote do Maven em maven.apache.org. Escolha o pacote de acordo com o descompactador que achar mais conveniente em seu sistema operacional, zip ou tar.

    Na hora de descompactar, se estiver no Windows, sugiro descompactar no caminho c:\javatools\apache\maven-3.0.4, já em sistemas com base unix, sugiro em /usr/local/apache/maven-3.0.4.

    Após descompactar, crie a variável de ambiente chamada M2_HOME apontando para o caminho em que foi descompactado a ferramenta e em seguida e insira a variável no PATH do sistema. 
    Abaixo segue como ficou no Windows 7 (64 bits):


Criação da variável de ambiente M2_HOME
    Ao inserir a variável M2_HOME no PATH do Sistema Operacional, faça-o da seguinte forma: 
        Windows: %M2_HOME%\bin
        Unix Based: $M2_HOME\bin


Inclusão do M2_HOME no PATH do SO
    Depois das ações acima, vamos verificar a instalação. Abra um promp de comando e execute o comando "mvn -version", que deve retornar algo semelhante a:


Resultado do comando "mvn -version"
    Pronto!!! Agora que instalamos o Maven, vamos fazer um test drive rápido =)

Criando um projeto java simples utilizando Maven 

    Bem, estamos com Maven instalado e pronto para uso. Vamos criar um projeto bem básico explorando uma facilitação da ferramenta que citei acima que é o template de projetos, chamados oficialmente de arquétipo (archetype).

    Na demostração, vamos utilizar um dos arquétipos mais simples, o maven-archetype-quickstart e o plugin de criação de projetos (archetype:generate)Criarei um projeto chamado exemplo-jar-simples com a versão 1.0.0 e pacote com.blogger.exemplos. Não é necessário criar a pasta do projeto pois o Maven criará um pasta com o valor do parâmetro . 

    Observe o comando a seguir em que são aplicados os parâmetros ao comando.

    mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart 
        -DartifactId=exemplo-jar-simples -DgroupId=com.blogger.exemplos -Dversion=1.0.0

    Como executamos indicando que será em modo iterativo, sem o parâmetro DinteractiveMode, o Maven solicitará a confirmação dos parâmetros informados, conforme a tela a baixo. Responda "Y" e deixe-o proseguir.


Solicitação de confirmação dos parâmetros
    Ao termino da execução uma mensagem de sucesso será exibida e então poderemos encontrar a seguinte estrutura:



    Vamos dar uma rápida olhada no arquivo pom.xml do projeto que está no diretório base do projeto, junto ao diretório src ...


        <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>com.blogger.exemplos</groupId>
            <artifactId>exemplo-jar-simples</artifactId>
            <packaging>jar</packaging>
            <version>1.0.0</version>
            <name>exemplo-jar-simples</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>

    O arquivo descreve o tipo de empacotamento do projeto no bloco <packaging>jar</packaging>, a versão no bloco <version>1.0.0</version>, o nome no bloco  <artifactId>exemplo-jar-simples</artifactId>, o pacote no bloco <groupId>com.blogger.exemplos</groupId> e as dependências no bloco <dependencies>...</dependencies>, neste momento a unica dependência encontrada no projeto é o JUnit 3.8.1, que usamos para implementar nossos testes. Em outro momento vamos explorar mais e entender mais detalhes do pom.xml e assim enriquecer nossos projetos com outros blocos de configurações.

    Vamos preparar nosso projeto para ser aberto na IDE Eclipse? Dentro da pasta do projeto utilizamos o comando mvn eclipse:eclipse assim o Mavem baixa as dependências, cria os arquivos da estrutura dos projetos eclipse e então podemos importa-lo na IDE e escrever nossos códigos!!

    Finalmente ainda na pasta do projeto, usamos alguns comandinhos básicos:
     - mvn clean => Limpa a compilação do projeto;
     - mvn compile => Compila o projeto;

     - mvn install => Compila, empacota e instala o projeto no repositório local;

     - mvn test => Executa os testes implementados no projeto;

     - mvn package [tipo de empacotamento] => empacota o projeto que em nosso caso, por ser um jar simples, devemos informar "jar:jar".

    Estes comandos podem ser usados em conjunto como mvn clean install ou mvn test package jar:jar

    Por enquanto estas são as informações que quero deixar. Vamos, mais a frente, entender melhor a estrutura do arquivo pom.xml, os plugins que estendem muito o poder da ferramenta, as dependências, as configurações da própria ferramenta como utilizar-la junto com ferramentas de construção automatizada como o Jenkins.

    Já já apresentarei mais informações, fiquem ligados!

Um comentário:

  1. Caro,

    Gostaria se possível de ver algum post relacionado o SBT (scala build tools) e graddle. Abraços,

    ResponderExcluir