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!

sexta-feira, 4 de janeiro de 2013

Saudações

Olá pessoal!
Sejam bem-vindos.

Me propus escrever este blog para não deixar somente na memória uma série de experiências em desenvolvimento na área de TI.

Apesar de saber que já existem um diversidade enorme, quero disponibilizar mais uma fonte de conhecimento, afinal de contas as minhas experiências em projetos não são iguais às das outras pessoas mesmo as que estiveram nos mesmos projetos. Cada um leva consigo aquilo que conseguiu absorver e isso é algo bem distinto.

Gosto de trabalhar com desenvolvimento de soluções e comecei até bem cedo a enveredar nesta área. Desde que comecei mantenho o conceito de não defender plataformas e/ou tecnologias. Acredito que o importante é uma solução adequada, ainda que isso implique em abandonar o que há de mais cool no momento...

Então não se surpreenda ao encontrar materiais de tecnologias muito diferentes ou tidas como obsoletas...

E espero de fato que possa agregar algo aos leitores!

Um abraço!