Back-End

13 jun, 2014

Criando projeto JSF com Maven no Eclipse

Publicidade

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.

mavenproject1

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?

mavenappfuse

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:

mavennewproject

Clica em next e na tela seguinte vamos escolher maven-achetype-webapp:

mavenachetypewebapp1

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:

mavenconfigpom

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:

mavenaddingjsf

Escolha o Servlet version 2.5.

mavenjsf

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

mavensunfacesjsf

Não esqueça de adicionar também:

javax.servlet javax.servlet-api
javax.servlet jstl

Feito isso, seu projeto deve estar assim:

mavenmeuprojeto

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!