Nesse post vou mostrar como criar um projeto Maven com JSF 2.2, PrimeFaces e JEE 7 para rodar no Wildfly 10.
Estou utilizando a última versão do Eclipse (Mars).
Vamos lá, primeiro passo é criar um projeto Maven no Eclipse, para isso, no eclipse clique em File/New/Maven Project
Na janela que vai abrir selecione as seguintes opções:
Create a simple project (Skip archetype selection)
Use default workspace location (Caso queira armazenar o projeto em outro diretório, basta escolher o diretório desejado)
Clique em Next, na próxima janela, vamos preencher os dados do nosso projeto maven, segue o print abaixo como exemplo:
Clique em Finish.
O nosso projeto foi criado, agora precisamos fazer algumas configurações nele.
Primeiro vamos alterar a versão do compilador java, para isso clique com o botão direito no projeto e em seguida clique em Properties.
Na janela que abriu clique em Java Compiler e selecione a versão desejada do java, no meu caso eu selecionei a versão 1.8, segue o print abaixo como exemplo:
Em seguida clique em Apply.
Agora vamos configurar algumas opções do nosso projeto, na mesma janela clique em Project Facets, configure as opções conforme o print abaixo:
E clique em Apply e em seguida OK.
Pronto, agora nós já fizemos as configurações para trabalhar com nosso projeto no eclipse.
Agora vamos inserir as depências do projeto no maven, atualizando o nosso pom.xml.
Vamos precisar das dependências do JEE 7 e do Primefaces.
Segue abaixo como ficara o nosso pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>br.com.brunorota.tutorial</groupId> <artifactId>tutorialjsfmaven</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>TutorialJSFMaven</name> <dependencies> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-all-7.0</artifactId> <version>1.0.1.Final</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>5.3</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>all-themes</artifactId> <version>1.0.10</version> </dependency> </dependencies> <repositories> <repository> <id>JBoss Repository</id> <url>https://repository.jboss.org/nexus/content/groups/public/</url> </repository> <repository> <id>prime-repo</id> <name>PrimeFaces Maven Repository</name> <url>http://repository.primefaces.org</url> <layout>default</layout> </repository> </repositories> </project> |
Nesse pom nós podemos ver as dependências do PrimeFaces e a dependência do theme do PrimeFaces, inserimos também a dependência do JEE 7, porém apenas para compilação, os jars não serão inseridos no projeto, pois todos os jars necessários estão no Wildfly.
Com o pom.xml configurado, vamos agora alterar o web.xml para inserir algumas configurações relacionadas ao JSF.
Vamos configurar o Faces Servlet e definir o theme a ser utilizado pelo PrimeFaces, segue abaixo como ficará o nosso web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>tutorialjsfmaven</display-name> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- CONFIGURAÇÃO DO Faces Servlet --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <!-- DEFINIMOS O THEME A SER UTILIZADO PELO PRIMEFACES --> <context-param> <param-name>primefaces.THEME</param-name> <param-value>bootstrap</param-value> </context-param> </web-app> |
Pronto, fizemos todas as configurações necessárias para rodar nosso projeto JSF, vamos criar uma página utilizando o PrimeFaces e testar o nosso projeto.
Vamos criar uma página xhtml no diretório webapp, vamos nomeá-la de olaPrimeFaces.xhtml e inserir o seguinte conteúdo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"> <h:head> </h:head> <h:body> <p:outputLabel value="Olá Prime Faces" /> <p:spinner /> </h:body> </html> |
Pronto já temos nossa página, vamos agora compilar e gerar o war do nosso projeto utilizando o maven.
Acesse o diretório do projeto e rode o comando mvn clean install.
Nosso war foi gerado com sucesso, agora basta fazer o deploy no wildfly e acessar a página criada.
Quando eu trabalho com o eclipse eu costumo fazer deploy da seguinte maneira:
Clique com o botão direito no projeto e em seguida em Export/WAR File.
Na janela que abriu, no campo Destination, selecione o diretório deployments do seu wildfly, no meu caso ficou assim /home/bruno/tools/wildfly/wildfly-10.0.0/standalone/deployments/tutorialjsfmaven.war .
Feito o deploy basta acessar a página que criamos.
Pronto, é isso ai galera.
Até o próximo post.
Bruno, blza? excelente tutorial…
Me tira uma dúvida, trabalhando com o Maven vc é obrigado a usar “export WAR…”???? acho esse modo muito contraprodutivo, imagine repetir esse processo para cada teste…
Opa Tiago, tudo certo e ai?
Que bom que gostou =)
Então, é uma forma que eu gosto de trabalhar, com o mavem você precisaria rodar o comando mvn clean install e configurar o pom.xml para gerar o pacote no diretório do wildfly.
Existem algumas ferramentas para “hot deploy” que fazem o deploy automatico, o eclipse mesmo tem uma ferramenta dessas, porém quando eu trabalho com EJB já tive vários problemas, por isso que eu prefiro usar o export mesmo.
Tem outra ferramenta muito boa que faz isso, chama JRebel.
Dê uma olhada nessas duas.
Valeww