Olá Pessoal,
No post de hoje vamos ver como criar um projeto JSF no Eclipse já suportando o Maven. Parece algo simples, concorda? Mas pode dar uma dor de cabeça, e veremos o motivo.
Lets GO…
Starting…
Antes de mais nada instale o Jboss tools, conforme este post. Após a instalação, vamos ver o cenário que temos.
Cenário 1
Você pode adicionar o maven ao seu projeto manualmente, ou seja, basta adicionar o pom.xml ao projeto e fazer as devidas configurações. Ideal é quando você já tem um projeto e no inicio não usava o maven, mas resolveu adotar agora, daí você não vai querer deletar o projeto e criar um novo “maven Project” certo. Mas sabemos que fazer configuração manualmente sempre é chato. Porém essa é uma forma de você adicionar o Maven ao seu projeto.
Cenário 2
Você está querendo começar um projeto do zero, tipo JSF Project. Mas, ao criar, vê que ele não está na estrutura do maven. E o que fazer? Podemos ir pelo cenário 1. Mas e se eu quiser já criar automático? Há uma opção usando o File New Maven Project.
Quando escolhemos Maven Project há varias opções de criar um projeto, desde um simple maven Project, até um Project webapp. Na imagem a seguir você pode ver as opções de maven Project disponíveis, porém muitos deles estão com bugs críticos que não cria o projeto ou dá umas exceções e trava tudo. Um exemplo é a appfuse para jsf + hibernate + Spring. Se tivesse funcionando seria muito show, mas infelizmente não está. E o que fazer ir para o cenário 1?
É o que fiquei pensando. Apesar de podermos criar a nossa própria estrutura archetypes http://maven.apache.org/guides/mini/guide-creating-archetypes.html e ser fácil e rápido, mesmo assim ainda fiquei incomodado pelo fato de não conseguir gerar um projeto JSF, já com o Maven consegui com apenas alguns cliques.
Solução?
Sim, depois de muitas horas tentando entender o motivo e quebrando a cara com alguns plugins, achei um workaround. Vamos lá:
Crie um Maven Project (File è new è Project è maven project)
Na próxima tela deixe assim:
Clica em next e na tela seguinte vamos escolher maven-achetype-webapp
Clica em next
E agora vamos preencher. Estou presumindo que você já conhece o maven, então não irei explicar o que significa cada campo. Veja como ficou a minha:
Clique em finish.
Como você percebeu, o workaround foi criar um projeto do tipo webapp, mas ainda o projeto não tem suporte JSF, podemos fazer isso manualmente ou automaticamente. Clique com o botão direito no projeto e escolha configure >> add jsf capabilities:
Escolha o Servlet version 2.5
Clique em finish, no warning que aparecer clique em Yes
O projeto vai ficar “quebrado”, pois a versão do web.xml está diferente. Abra o web.xml e altere o version para 2.5
Agora precisamos adicionar as libs para JSF no pom.xml. Abra o pom.xml e clique na aba dependencies
E adicione:
com.sun.faces jsf-api
com.sun.faces jsf-impl
Não esqueça de adicionar também:
javax.servlet javax.servlet-api
javax.servlet jstl
Feito isso seu projeto deve tá assim:
Workaround para Windows 7
Quem tem Windows 7 pode se deparar com o problema de não conseguir executar “cmd” e para resolver o problema basta adicionar ao path do sistema o seguinte valor:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
O Maven não está atualizando no eclipse
Passei por esse problema de alterar o pom.xml e o maven não fazer o download das libs e a modificação não refletir no eclipse, daí basta forçar o download:
mvn eclipse:eclipse -DdownloadSources=true
Vou ficando por aqui, espero que tenham gostado do post.
See ya!