Eclipse + Maven + Tomcat (ou JBoss) - DICA

Uma grande dificuldade que se tem ao se utilizar o Maven em um projeto WEB é

executá-lo em servidores como Tomcat ou JBoss, devido à estrutura padrão de diretórios do

Maven e também em não mais manter as bibliotecas no diretório WEB-INF/lib da aplicação.

Acaba-se optando por usar o Jetty, devido a sua integração com o Maven através do Maven

Jetty Plugin.
Mas como rodar minha aplicação que usa Maven em web containers como JBoss ou Tomcat?

Primeiramente deve-se ter instalado o plugin m2eclipse. Informações como instalá-lo 

podem ser obtidas no site oficial: http://m2eclipse.codehaus.org/
Devemos então configurar um builder para o projeto em questão. Vá no menu Project ->
Properties -> Builders. Adicione um novo Builder clicando em New. Escolha Maven Build.

Escolha um nome para o builder. Configure conforme a figura em anexo. Usaremos a gol

war:exploded no lugar de install. Ela explode a aplicação no diretório target/seuProjeto,

inclusive adicionando em WEB-INF/lib as dependências do projeto. Habilite o builder e

habilite também o build automático (menu Project -> Build Automatically).
Agora toda vez que você salvar algum arquivo do seu projeto ele executará esse

builder, atualizando o diretório target/seuProjeto.
Após isso basta configurar o seu container web para apontar para esse diretório. No

caso do Tomcat, crie um context.xml com o seguinte conteúdo:

<Context path="C:\projetos\meuProjeto\target\meuProjeto" reloadable="true" antiJARLocking="true"> </Context>
E no eclipse crie um server apontando para esse Tomcat ou utilize o plugin Sysdeo.

No caso do JBoss, ele precisa que o diretório de deploy termine com .war, então 

adicione a seguinte configuração no seu pom.xml:

<project> ... <build> ... <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.0</version> <configuration> <webappDirectory> ${project.build.directory}/${project.build.finalName}.war </webappDirectory> </configuration> </plugin> </plugins> </build> </project>
Depois modifique a seguinte seção do seu jboss-service.xml:

<attribute name="URLs"> deploy/, file:/C:/projetos\meuProjeto\target\meuProjeto.war </attribute>

Espero que isso ajude alguém. : )


ola!! parcimonioso

cara muito legal sua dica, só que eu to quebrando a cabeça pra trabalhar com o maven apesar de achar ele muito legal… veja eu ja consegui:
gerenciar dependencias e criar projeto, junto com o plugin do eclipse (sonatype m2)

na verdade o que eu quero é integra-lo ao wtp do eclipse, por exemplo gostaria de no eclipse configurar pra o jetty se auto-reiniciar(saco ta reiniciando servidor sempre q agente altera algo).

ser vc puder me ajudar agradeço

Bruno

bela dica, ajudou mto!

Dica muito interessante. No meu caso (não entendi porque) se eu apontasse diretamente pro meuprojeto.war o jboss mostrava um erro de que o war não era válido. Para fazer funcionar tive que alterar a tag do maven para ele criar uma pasta dentro da pasta target (projeto/target/deploy/)e então criar o war dentro dessa pasta, e la no jboss-service.xml adicionei “/projeto/target/deploy/”.

vale lembrar que tem um ótimo tutorial no GUJ, do Maurício Linhares, que vale a pena ler. É ótimo e abrangente, sem enrolação, fora que o cara manda bem, fez bem didático e de compreensão infalível.
De resto, os livros indicados na bibliografia do tutorial são referências.

PS: Parabéns também pelo tutorial. Quanto mais, melhor :smiley: