15 de jun de 2011

Converta um projeto web do Eclipse para o Maven

Jave_Maven_Eclipse-226Nem sempre começamos um projeto no Maven, não é verdade? Por este motivo ensinarei como converter um projeto Web, que fora criado diretamente no Eclipse, para que o mesmo seja compatível com o Maven e use todas as suas possibilidades.

 

Antes de mais nada irei explicar como criar um projeto web no Eclipse…

O primeiro passo é criar um novo projeto, através do menu File / New. A tela abaixo será exibida, para facilitar digitei a palavra web para encontrar a opção Dynamic Web Project.

SelectWizard

Agora é necessário dar um nome ao projeto e pressionar o botão Finish.

DynamicWebProject

Como você pode perceber, o Eclipse criará um novo projeto Web. Veja que o código Java ficou na pasta src e código fonte web ficou na pasta WebContent.

Até então o pom.xml do Maven não foi criado. Para criar o pom basta clicar no nome do projeto com o botão direito do mouse e selecionar a opção Maven / Enable Dependency Management.

EnableDependencyManagement

A próxima tela exibida pelo Eclipse é a tela de configurações básicas de conversão. Como se trata de um projeto web é necessário alterar o parâmetro Packaging para war. Após isto pressione o botão Finish.

CreateNewPom

Pronto, agora temos o “esqueleto” pom.xml. Deve ser semelhante ao código abaixo:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>EclipseToMaven</groupId>
  <artifactId>EclipseToMaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
</project>

Infelizmente o trecho de código acima não é suficiente para “entender” o projeto criado no Eclipse. Altere este trecho de código para que fique semelhante a:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>EclipseToMaven</groupId>
  <artifactId>EclipseToMaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
        </configuration>
      </plugin>
    </plugins>
    <sourceDirectory>src</sourceDirectory>
  </build>
</project>
Agora para ver se a conversão vai funcionar execute o comando
mvn package

Não podia esquecer de dizer que caso o seu projeto seja um projeto com muitas dependências você terá que adicioná-las como dependências do Maven para que o seu código compile através do pom.xml. As pastas build pelo Eclipse fora da pasta target(criada pelo maven) será ignorada.
E aí? Conseguiu, qualquer dúvida deixe um comentário!
Pesquisa personalizada

4 comentários:

  1. Não estou conseguindo adicionar o Hibernate-3.6.0-Final, tem alguma idéia de como fazer-lo ?

    ResponderExcluir
  2. Olá desculpe-me pela demora em responder. Não sei se precisa ainda da ajuda porém lá vai:

    Adicione o repositório


    JBoss
    JBoss repository
    https://repository.jboss.org/nexus/content/groups/public-jboss




    E a dependência abaixo


    org.hibernate
    hibernate-core
    3.6.0.Final



    Veja se funciona e me avise.

    ResponderExcluir
  3. Olá Jony, muito bom seu tutorial, bem explicativo e funcional!
    Rapaz, estou com o problema inverso ao que você explicou, ou seja, instalei um projeto a partir do maven (projeto disponibilizado no framework Demoiselle seguindo o tutorial "http://www.frameworkdemoiselle.gov.br/documentacaodoprojeto/manuais-e-tutoriais/tutorial-da-versao-2-2-3-0/").
    O problema é que, como o tutorial é gradual, quando chega na hora de acrescentar a parte do jsf, primeiro que o projeto não é convertido para um projeto web automaticamente como o autor explicou, não sei se fiz alguma coisa errada, mas o projeto não fica disponível para o servidor (Jboss-AS-7.1.1.Final) mesmo após dar um update project pelo maven.
    Então eu converto pra um Dynamic Web Project no braço (no project facets na verdade) e configuro o content pra src/main/webapp, o projeto aparece para o deploy, o servidor sobe, mas a aplicação não é reconhecida.
    Já consegui botar pra rodar com um snapshot gerado pelo maven, mas não é muito bom para mim porque não consigo debugar pelo eclipse, além do trabalho ser muito braçal e demandar mais tempo que um deploy normal de dentro do ambiente.
    Você já passou por essa situação? Tem algum tutorial explicando esse problema?
    Agradeço muito se puder dar alguma ajuda! =)

    ResponderExcluir
    Respostas
    1. Desculpe-me pela demora em responder. Pelo tempo já deve ter conseguido resolver, correto?
      Até mais!

      Excluir

Leia as regras:
Todos os comentários são lidos e moderados previamente.
Apenas os que respeitam as regras abaixo serão publicados:
- o comentário deve estar relacionado ao assunto do post
- não serão aceitos palavrões e ofensas ao redator do blog ou a terceiros
- não inclua links desnecessários no conteúdo do comentário
- se quiser deixar sua url, comente com a opção OpenId
Obs.: os comentários dos leitores não refletem a opnião do blog.