Maven - Bom (bill of material) com o Richfaces 4.1.0

3 respostas
Z

Galera,

Para quem tentou configurar um projeto com o maven + richfaces 4.1.0 e teve que fazer aquelas configurações no settings.xml (adicionando o repositório do Jboss) e ainda adicionar ao pom do seu projeto o gerenciador de dependencia do Richfaces, conhecido como "bom" eu pergunto:
Nesse arquivo richfaces-bom-4.1.0-Final.pom tem todas as dependências que o Richfaces precisa para executar, e ao coloca-lo no nosso pom com as devidas configurações para uso do repositório correto, ele deve baixar todas as dependencias. Acontece que nesse arquivo bom, existem as dependências a implementação do JSF (mojarra e myfaces tb), mas o próprio comentário (abaixo) diz que essas dependecias devem ser fornecidas com o escopo "provided", isso é, ele tem que estar no servidor. Dessa forma, eu devo baixar manualmente essas implementações e colocar no meu servidor web e também adicionar a referência do eclipse para esses jar para não ter mais o erro de compilação? Verifiquei que nada referente a essas implementações foi baixado, eu achei que esse escopo provided, baixaria e adicionaria a referência no maven, mas em uma fase de deploy ele ignoraria os mesmos, mas acho que não é isso;

Outra pergunta seria: E no caso de usar o maven com um servidor embarcado (jetty ou próprio tomcat), devo colocar as dependências ao Mojarra no plugin que faz o deploy?

Parte do arquivo bom que comento acima
<!-- JSF 2.1 RI:
                API should be used as provided since jsf-impl does bundle
                its version-specific equivalent (that's why there is jsf-api in another
                version that jsf-impl);
                - use javax.faces:javax.faces-api on JavaEE app servers (reference API, without method bodies)
                - use com.sun.faces:jsf-api on servlet containers (Mojarra project API, with method bodies) -->
            <dependency>
                <groupId>javax.faces</groupId>
                <artifactId>javax.faces-api</artifactId>
                <version>2.1</version>
            </dependency>
            <dependency>
                <groupId>com.sun.faces</groupId>
                <artifactId>jsf-api</artifactId>
                <version>2.1.0</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish</groupId>
                <artifactId>javax.faces</artifactId>
                <version>2.1.3</version>
            </dependency>

3 Respostas

Z

Só corrigindo algo que eu disse no primeiro post: eu disse que apesar de estar no pom do richfaces a dependência ao mojarra ele não havia feito download, eu estava errado, fez sim, estava procurando no lugar errado, ele fica em uma pasta chamada glassfish. Então resolvi adicionar a referência na “mão”, o erro de compilação que aparecia em tempo de desenvolvimento no eclipse (com a risco vermelho sobre as classes da api do JSF) sumiram, porem ao compilar ele ainda continua dando erro.

Z

Eu consegui fazer parar o erro de compilação dessa configuração replicando a parte que tem no bom (mostrada abaixo) no pom do meu projeto e colocando o escopo provided, seria isso mesmo que deveria fazer? Por que agora aparentemente ficou redundante, a informação tem no pom do richfaces (que não adicionava a referẽncia para o maven) e também tem no meu pom, apenas com a tag scope a mais, inclusíve no meu eclipse essas tags ficam amarelinhas falando que estou sobreescrevendo o gerenciador.

<dependency> <groupId>javax.faces</groupId> <artifactId>javax.faces-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.faces</artifactId> <version>2.1.3</version> <scope>provided</scope> </dependency>

Z

achava que tinha entendido direito a idéia desse gerenciador de dependência, mas parece que não, então comecei a ler novamente a documentação do richfaces https://community.jboss.org/wiki/HowToAddRichFaces4xToMavenBasedProject que fala sobre essa configuração, mais precisamente essa parte


What is a BOM?

BOM’s are maven pom.xml files that specify the versions of all runtime dependencies for a given module. So by importing this BOM, you are specifying the versions of the dependencies required to use RichFaces, but not (yet) specifying the dependencies themselves

.

Então ele não baixa nada estando nesse arquivo, creio que ele é apenas um guia para montar o seu projeto com as versões corretas de todas as dependências (talvez ele até de alguma exceceção se você colocar uma dependência inválida) e também, não sei se tudo que está no arquivo precisa ser configurado no pom do projeto, seria isso mesmo?

Criado 5 de maio de 2012
Ultima resposta 5 de mai. de 2012
Respostas 3
Participantes 1