Maven - Pom.xml (Hibernate JPA2 + JSF 2)

Pessoal,

Estou iniciando com o Maven e estou apanhando bastante para gerar um projeto com JPA 2 (hibernate) + JSF 2.0

Alguém tem algum exemplo que use estes caras com o maven ?

Obrigado,

Marcelo Gomes

Marcelo,

Crie um projeto usando o archetype de webapp. Exemplo:

mvn archetype:create  -DgroupId=com.blablabla  -DartifactId=TestApp -DarchetypeArtifactId=maven-archetype-webapp

Edite o arquivo pom.xml e coloque o Repositorio da JBoss e a dependencia do JPA

Repositorio

<repositories>
 <repository>
   <id>JBoss Repo</id>
   <url>http://repository.jboss.com/maven2</url>
 </repository>
</repositories>

Dependencia

<dependencies>
  <dependency>
    <groupId>org.hibernate.java-persistence</groupId>
    <artifactId>jpa-api</artifactId>
    <version>2.0-cr-1</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.5.0-Beta-2</version>
  </dependency>
</dependencies>

Para o JSF 2 faça o mesmo.

repositorio

    <repository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2</url>
    </repository>

Dependências

  <dependencies>
    <dependency>
      <groupId>com.sun.faces</groupId>
      <artifactId>jsf-api</artifactId>
      <version>2.0.0-b13</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>com.sun.faces</groupId>
      <artifactId>jsf-impl</artifactId>
      <version>2.0.0-b13</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>

  </dependencies>

Espero ter ajudado

Pessoal boa tarde,

Estou iniciando com Maven, e estou passando pelo mesmo problema, consegui criar a aplicação, com a estrutura correta, porém vou utilizar também o Spring. Como faço para incluir as dependencias, e fazer o deploy da aplicação?

Eu usei a dica do Jair Rillo Junior e funcionou!!!

Qual o erro que esta tendo ? como est o seu pom.xml

[]s

A minha aplicação, é uma aplicação web, como faço para fazer o deploy da aplicação?
E estou usando o Hibernate, devo incluir também no buildpath as libs?

Sei que este post é antigo, mas estou com este mesmo problema. Segui a dica do Jair Rillo, mas pelo Eclipse já aparecem uma série de erros no pom.xml. Pela linha de comando tentei o comando mvn install e tenho a seguinte saída:

[ERROR] Failed to execute goal on project jsf2: Could not resolve dependencies f or project br.com.jsf2:jsf2:war:1.0-SNAPSHOT: Failed to collect dependencies for [junit:junit:jar:3.8.1 (test), org.hibernate.java-persistence:jpa-api:jar:2.0-c r-1 (compile), org.hibernate:hibernate-entitymanager:jar:3.5.0-Beta-2 (compile), com.sun.faces:jsf-api:jar:2.0.0-b13 (compile), com.sun.faces:jsf-impl:jar:2.0.0 -b13 (compile), javax.servlet:jstl:jar:1.2 (compile), javax.servlet:servlet-api: jar:2.5 (compile)]: Failed to read artifact descriptor for hsqldb:hsqldb:jar:1.8 .0.2: Could not transfer artifact hsqldb:hsqldb:pom:1.8.0.2 from/to JBoss Repo ( http://repository.jboss.com/maven2): Access denied to: http://repository.jboss.c om/maven2/hsqldb/hsqldb/1.8.0.2/hsqldb-1.8.0.2.pom, ReasonPhrase:Forbidden. -> [ Help 1]

Vocês podem me dar uma dica para configurar esse pom.xml para JSF (Mojarra - gostaria de usar a mesma implementação do JSF do curso FJ-22 e depois usar o Primefaces), JPA de forma atualizada ?

Obrigado!

Pessoal, meu pom.xml funcionou com a seguinte implementação do faces:

<repository> <id>java-net</id> <name>Java.net Repository for Maven</name> <url>http://download.java.net/maven/2</url> <layout>default</layout> </repository> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0.4-b09</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.0.4-b09</version> </dependency>
Agora, minha pergunta é: essa implementação é do Mojarra?

Pessoal Resolvi este problema substituindo a URL do repositório:

Correto:

JBoss Repo
http://repository.jboss.org

http://repository.jboss.com/maven2 da um erro de (acesso negado), acredito que foi descontinuado.

Espero ter ajudado!

[quote=jamesfrj]Sei que este post é antigo, mas estou com este mesmo problema. Segui a dica do Jair Rillo, mas pelo Eclipse já aparecem uma série de erros no pom.xml. Pela linha de comando tentei o comando mvn install e tenho a seguinte saída:

[ERROR] Failed to execute goal on project jsf2: Could not resolve dependencies f or project br.com.jsf2:jsf2:war:1.0-SNAPSHOT: Failed to collect dependencies for [junit:junit:jar:3.8.1 (test), org.hibernate.java-persistence:jpa-api:jar:2.0-c r-1 (compile), org.hibernate:hibernate-entitymanager:jar:3.5.0-Beta-2 (compile), com.sun.faces:jsf-api:jar:2.0.0-b13 (compile), com.sun.faces:jsf-impl:jar:2.0.0 -b13 (compile), javax.servlet:jstl:jar:1.2 (compile), javax.servlet:servlet-api: jar:2.5 (compile)]: Failed to read artifact descriptor for hsqldb:hsqldb:jar:1.8 .0.2: Could not transfer artifact hsqldb:hsqldb:pom:1.8.0.2 from/to JBoss Repo ( http://repository.jboss.com/maven2): Access denied to: http://repository.jboss.c om/maven2/hsqldb/hsqldb/1.8.0.2/hsqldb-1.8.0.2.pom, ReasonPhrase:Forbidden. -> [ Help 1]

Vocês podem me dar uma dica para configurar esse pom.xml para JSF (Mojarra - gostaria de usar a mesma implementação do JSF do curso FJ-22 e depois usar o Primefaces), JPA de forma atualizada ?

Obrigado![/quote]

Amigos,

Sei que o post é um pouco antigo mas como essas duvidas são comuns, seguem algumas dicas:

  • Evitar utilizar o scope COMPILE para dependencias embarcadas no servidor de aplicação, ex:
    JSF, Hibernate etc. Essas dependencias são fornecidas pelo servidor então caso você utilize um scope COMPILE sera você devera ter um controle completo de versões e tudo mais. Caso seja necessario informar uma dependencia especifica utilizar o scope PROVIDED (Caso ela seja fornecida pelo Servidor de Aplicação).

  • Evitar resolver dependencias unitariamente.
    Grande parte dos containers (Servidores de Aplicação) fornecem meta pacotes que fornecem todas, ou quase todas, dependencias disponiveis pelo container. Ex: org.jboss.spec:jboss-javaee-all-7.0

  • Não é preciso declarar repositorios externos para a grande maioria das dependencias. Por default o repositorio maven2 esta disponiveis, sem a necessidade de declaração no pom e o mesmo possui proxy para a GRANDE MAIORIA dos repositorios, portante só sera necessario a declaração de outros repositorios quando necessaria a utilização de dependencias legadas, em processo de desenvolvimento (em casos especificos) e bibliotecas protegidas por licenças muito restritivas.

Portanto vamos evitar configurações extras desnecessarias pois as mesmas vão dificultar o aprendizado e tornar a utilização da ferramenta frustrante. :slight_smile: