Projeto JEE com jetty + maven

Olá Pessoal,

O post de hoje saiu após muito sofrimento de tentar criar um maven Project rodando com Jetty, mas que eu não precisasse ter o jetty na máquina local e que desse suporte JSF. Parece algo simples e fácil, concorda? Mas me deu uma dor de cabeça e consumiu praticamente 2 dias de tentativas. Vamos entender o motivo.

Lets go …

Contexto

Bem, eu precisava criar um projeto para ter tudo gerenciado pelo maven. Primeiro eu decidi sair do TomCat e ir para o Jetty, pois a performance do tomcat e outros problemas que estava tendo com o servidor estavam sendo criticos, mas eu não queria ter o jetty na máquina local para poder rodar minha app, queria fazer isso de maneira simples pelo maven, daí veio as alternativas:

  • Criar um projeto webapps usando o archetype do maven;
  • Criar um dynamic web Project e adicionar o maven ;
  • Criar um projeto maven usando archetype JSF disponíveis;
  • Criar um projeto JSF e depois adicionar maven + jetty
  • Plugin jetty Eclipse via Eclipse Market

Nenhuma dessas alternativas funcionou como eu queria. Muitos dos archetype disponíveis lá no maven estão “bugados” e simplesmente não iniciam aplicação. A opção 2 só funcionava sem JSF, ao adicionar “JSF capacibilities” pelo eclipse simplesmente exigia ter o jetty local para apontar. O mesmo para a opção 4. A opção 3 simplesmente nenhum dos archtype que tentei subia app. Tentei até arrumar, mas era muita mão e tempo que seria gasto. A opção 5 ainda está a desejar, os plugins que testei disponíveis no eclipse market simplesmente estavam cheio de bugs, fora quando não travava a IDE.

E a solução?

Mais simples do que imaginei. Apenas criei um simple maven Project.

 

 

Clique em next

 

Clique em finish. E terá um projeto com a estrutura a seguir:

 

Vamos criar nosso web.xml, WEB-INF e lib.

 

 

Para os arquivos web.xml e face-config.xml, é simples.  Apenas crie um JSF Project e copie o web.xml e face-config.xml gerado. Não recomendo querer criar os arquivos na mão, pois você pode ter erros por digitar algo errado e acabar perdendo tempo fixar algo que não agrega muito valor.

Adicione as libs que você precisa:

 

 

Novamente copiei do projeto jsf. E adicionei as do JSF 2.0 : jsf-api-2.0.9.jar e jsf-impl.jar

Agora vamos  configurar o arquivo  pom do maven:

Feito isso crie um arquivo index.jsp em webapp e dentro de body coloque o que achar necessário para testar.

 

 

Observe que criei um arquivo xhtml para poder testar o JSF 2.0.  Nele  apenas uso uma tag <h:outputLabel value=”Lopes Neto” /> assim verifico se realmente o projeto está dando suporte ao JSF.

Rodando aplicação

Para rodar aplicação é bem simples, clique com o botão direito no projeto e siga os passos a seguir:

 

Clique em maven build e vamos adicionar um build para iniciar o maven

<img mavenrunconfigjettyrun>

Apenas selecione o projeto em base directory e em goals coloque jetty:run que é para iniciar o servidor.

E agora basta acessar e ver sua aplicação rodando sem o jetty local, apenas através do maven:

Enfim, foi a forma que consegui fazer o maven rodar para projetos JEE com JSF sem ter o jetty local na máquina. Não posso dizer que fiquei satisfeito com essa solução, mas foi a que me deu menos dor de cabeça.

Vou ficando por aqui. See ya!!

Abraços!

Deixe um comentário

O seu endereço de e-mail não será publicado.