Template para criação de projeto com o Maven2

Para criar um projeto novo usando o Maven é bem rápido, bastam alguns passos para que o projeto esteja pronto e configurado com a sua IDE preferida.

Neste post vou descrever o passo-a-passo para a criação de um projeto WAR. Os passos de execução podem precisar de pequenos ajustes para que seja executado no seu ambiente de desenvolvimento.

As características do meu projeto são: Projeto Web, Struts, jUnit.

O Maven tem a capacidade de resolver todas as dependências do projeto a partir do arquivo pom.xml e desta forma fará o download de todas as dependências, no meu caso todos os Jar´s do Strut´s e do jUnit, bem como todas suas dependências, automaticamente.

Para realizar esta tarefa o Maven pode precisar acessar seu repositório padrão, e para tanto uma conexão com a internet é necessária. Como no meu ambiente de trabalho as conexões com a internet são realizadas através de Proxy HTTP, então um passo adicional precisa ser realizado para indicar ao Maven que suas requisições utilize o Proxy configurado, e fornecendo usuário e senha, caso existam.

Não vou descrever o processo de instalação do Maven, que é bem simples. Considero que para continuar você possui o Maven2 instalado e que o diretório $MAVEN_HOME/bin esteja no PATH da máquina.

1. Proxy HTTP (Opcional)

Editar o arquivo $MAVEN_HOME/conf/settings.xml

<settings>
    …
    <proxies>
        <proxy>
            <id>optional</id>
            <active>true</active>
            <protocol>http</protocol>
            <username></username>
            <password></password>
            <host>proxy.mycomp.com</host>
            <port>8080</port>
            <nonProxyHosts>mycomp.com, localhost</nonProxyHosts>
        </proxy>
    </proxies>
    …
</settings>

2. Criando o template do projeto

Neste passo vou criar o diretório que servirá como raiz do meu projeto, seguindo uma estrutura definida qualquer:

  • #cd $USER_HOME/projetos
  • /export/home/fsantos/projetos# mkdir –p testewar/modules
  • /export/home/fsantos/projetos# cd testewar/modules
  • …/testewar/modules# mvn archetype:create -DgroupId=com.mycompany
    -DartifactId=portal -DarchetypeArtifactId=maven-archetype-webapp

Em promeiro lugar foram criados três diretórios, dois deles foram criados explicitamente pelo comando mkdir –p testewar/modules e o terceiro diretório foi criado pelo maven e o nome deste diretório será o artifactId da aplicação, que neste caso é portal.

3. Criando o workspace
  • /export/home/fsantos/projetos/testewar# mkdir –p workspaces/eclipse_33
  • /export/home/fsantos/projetos/testewar# cd workspaces/eclipse_33
  • /export/home/fsantos/projetos/testewar/workspaces/eclipse_33# pwd
    /export/home/fsantos/projetos/testewar/workspaces/eclipse_33
    (Copiar este path)

Executar o eclipse, no meu caso é o Eclipse 3.3 e indicar o path “/export/home/fsantos/projetos/testewar/workspaces/eclipse_33″ como o caminho para o workspace.

Quando o eclipse termina de carregar terá sido criado o diretório “.metadata”,
deixo o eclipse de lado por enquando e minimizo.

4. Criando os arquivos de configuração de projeto do Eclipse
  • #cd $USER_HOME/projetos/testewar/modules/portal

  • …/projetos/testewar/modules/portal# mvn -Dwtpversion=1.5 eclipse:eclipse

Ao final deste, uma estrutura de diretórios foi criada usando a arquétipo padrão do Maven. Os arquivos .classpath e .project estão prontos e com as dependências já relacionadas.

5. Configurando o projeto no Eclipse

Com o Eclipse rodando, preciso importar o projeto já criado, estes passos serão necessários:

  1. File -> Import…
  2. Import -> General -> Existing Projects into Workspace
    1. Botão Next
  3. Select root directory:
    1. Browse…
    2. Apontar para o diretório portal
  4. Botão Finish

O projeto será importado mas falta indicar o caminho do repositório do Maven para que o Eclipse possa compilar os fontes:

  1. Window -> Preferences…
  2. Na janela Preferences: buscar por Classpath variables
  3. Adicionar a variável M2_REPO com o valor $USER_HOME/.m2/repository
  4. Clicar Botão Ok
6. Adicionando Struts

Para adicionar struts no meu projeto preciso apenas editar o arquivo: $USER_HOME/projetos/testewar/modules/portal/pom.xml

<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”>
    …
    <dependencies>
        …
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts-core</artifactId>
            <version>1.3.8</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        …
    </dependencies>
    …
</project>

Agora as dependências com o Struts e com o jUnit já estão relacionadas e a partir de agora qualquer comando do Maven executado, o download das bibliotecas será realizado, exemplo:

  • /export/home/fsantos/projetos/testewar/modules/portal# mvn compile

Como as dependências com as bibliotecas foram adicionadas depois da criação dos arquivos do projeto (Tópico 5), o que foi feito de proppósito para tornar claro como adicionar uma dependencia a um projeto já pronto. Será necessário executar:

  • …/projetos/testewar/modules/portal# mvn eclipse:eclipse
7. Comandos do úteis (Goals)
mvn clean Limpa os diretórios de bibliotecas e de arquivos compilados
mvn compile Compila projeto
mvn eclipse:eclipse Atualiza lista de bibliotecas referenciadas pelo Eclipse
mvn install Adiciona arquivo war no repositório local do Maven
mvn deploy Adiciona arquivo war no servidor de artefatos do Maven
mvn package Gera arquivo war
mvn verify Verifica as dependências
mvn war:war Gera arquivo WAR no diretório target
mvn war:inplace Gera WAR ‘explodido’ no diretório ’src/main/webapp’, de modo que possa realizar o deploy deste usando configuração do Tomcat
.
Desvantagem: diretórios criados: ‘WEB-INF/classes’ e ‘WEB-INF/lib’ não são removidos quando é executado comando mvn clean
Digg this     Create a del.icio.us Bookmark     Add to Newsvine

One Response to “Template para criação de projeto com o Maven2”

  1. myspace proxy Says:

    Thank you for the easy to follow blog post on proxies.

Leave a Reply