Olá, pessoal!
No artigo 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 hoje veremos o motivo.
Antes de mais nada, instale o Jboss tools. Após a instalação, vamos ver o cenário que temos.
Cenário 01
Você pode adicionar o Maven ao seu projeto manualmente, ou seja, basta adicionar o pom.xml ao projeto e fazer as devidas configurações. O ideal é quando você já tem um projeto e no início não usava o Maven, resolvendo adotá-lo agora. Então, 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 02
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 01. Mas e se eu quiser criar um já automático? Há uma opção usando o File -> New Maven Project.
Quando escolhemos o Maven Project, existem várias opções de criar um projeto: desde um simples 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 tem algumas exceções e trava tudo. Um exemplo é a appfuse para jsf + Hibernate + Spring. Se ele tivesse funcionando, seria muito bom, mas infelizmente não está. E o que fazer, ir para o cenário 01?
Fiquei pensando: apesar de podermos criar a nossa própria estrutura archetypes e isso ser fácil e rápido, ainda fiquei incomodado pelo fato de não conseguir gerar um projeto JSF. Já com o Maven consegui com apenas alguns cliques.
Solução? 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:
Clique 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 o projeto ainda 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 estar assim:
Workaround para Windows 7
Quem tem Windows 7 pode se deparar com o problema de não conseguir executar “cmd”. Para resolver, 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 artigo.
See ya!