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. : )