Maven + jetty + jsf 2 (richfaces 4) [RESOLVIDO]

Boa tarde pessoal,

Estou tentando nos últimos 2 dias fazer o Jetty subir via maven com richfaces 4, mas ele insisti em apresentar uma exceção

java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:392) at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363) at org.mortbay.util.Loader.loadClass(Loader.java:91) at org.mortbay.util.Loader.loadClass(Loader.java:71) at org.mortbay.jetty.servlet.Holder.doStart(Holder.java:73) at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:242) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736) at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:115) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132) at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:454) at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:396) at org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210) at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 2011-10-18 11:44:14.483:INFO:/:Unavailable javax.servlet.UnavailableException: javax.faces.webapp.FacesServlet 2011-10-18 11:44:14.484:WARN::failed Faces Servlet: java.lang.NullPointerException 2011-10-18 11:44:14.572:WARN::Failed startup of context org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@59c4650e{/,/home/wescley/projetos/teste/jsf/src/main/webapp} java.lang.NullPointerException at java.lang.Class.isAssignableFrom(Native Method) at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:256) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:736) at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:115) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132) at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:454) at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:396) at org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210) at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

Fiz algumas pesquisas e vi que pode ser problemas entre duas implementações diferentes do JSF sendo carregadas, ou ainda o Jetty não conseguir carregar os jars da implementação do jsf. Mas não consegui descobrir realmente se era isso.

aqui está o simples pom do projeto

<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>webapp</groupId>
	<artifactId>jsf</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>jsf Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<properties>
		<!-- for Alhpa versions it was just 'ALPHA2' -->
		<org.richfaces.bom.version>4.0.0.Final</org.richfaces.bom.version>
		<project.build.directory>/home/wescley/projetos/jsf/target/jsf/WEB-INF</project.build.directory>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.richfaces</groupId>
				<artifactId>richfaces-bom</artifactId>
				<version>${org.richfaces.bom.version}</version>
				<scope>import</scope>
				<type>pom</type>
			</dependency>

		</dependencies>
	</dependencyManagement>


	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.4</version>
			<scope>test</scope>
		</dependency>
		
	</dependencies>
	<build>
		<finalName>jsf</finalName>
		<plugins>
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<configuration>
					<contextPath>/</contextPath>
					<connectors>
						<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
							<port>8080</port>
							<maxIdleTime>60000</maxIdleTime>
						</connector>
						<connector implementation="org.mortbay.jetty.security.SslSocketConnector">
							<port>8443</port>
							<maxIdleTime>60000</maxIdleTime>
							<keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
							<password>jetty6</password>
							<keyPassword>jetty6</keyPassword>
						</connector>
					</connectors>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>keytool-maven-plugin</artifactId>
				<executions>
					<execution>
						<phase>generate-resources</phase>
						<id>clean</id>
						<goals>
							<goal>clean</goal>
						</goals>
					</execution>
					<execution>
						<phase>generate-resources</phase>
						<id>genkey</id>
						<goals>
							<goal>genkey</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
					<dname>cn=localhost</dname>
					<keypass>jetty6</keypass>
					<storepass>jetty6</storepass>
					<alias>jetty6</alias>
					<keyalg>RSA</keyalg>
				</configuration>
			</plugin>
		</plugins>

	</build>
</project>[/code]

Observem que existe a referência para um arquivo BOM que já tem todas as dependecias para o uso do richfaces.. 


[code]<!-- JBoss, Home of Professional Open Source Copyright 2010, Red Hat, Inc. 
	and individual contributors by the @authors tag. See the copyright.txt in 
	the distribution for a full listing of individual contributors. This is free 
	software; you can redistribute it and/or modify it under the terms of the 
	GNU Lesser General Public License as published by the Free Software Foundation; 
	either version 2.1 of the License, or (at your option) any later version. 
	This software is distributed in the hope that it will be useful, but WITHOUT 
	ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
	FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
	details. You should have received a copy of the GNU Lesser General Public 
	License along with this software; if not, write to the Free Software Foundation, 
	Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the 
	FSF site: http://www.fsf.org. -->
<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.richfaces</groupId>
	<artifactId>richfaces-bom</artifactId>
	<packaging>pom</packaging>
	<version>4.0.0.Final</version>
	<name>RichFaces BOM</name>

	<parent>
		<groupId>org.richfaces</groupId>
		<artifactId>richfaces-parent</artifactId>
		<version>10</version>
		<relativePath>../build/parent/pom.xml</relativePath>
	</parent>

	<description>
        The RichFaces "Bill of Materials". This defines all runtime dependency
        versions for RichFaces.
   </description>

	<properties>
	</properties>

	<!-- Runtime dependency management -->
	<dependencyManagement>
		<dependencies>
			<!-- Project Versions -->
			<dependency>
				<groupId>org.richfaces.core</groupId>
				<artifactId>richfaces-core-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.core</groupId>
				<artifactId>richfaces-core-impl</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.common</groupId>
				<artifactId>richfaces-ui-common-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.common</groupId>
				<artifactId>richfaces-ui-common-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.core</groupId>
				<artifactId>richfaces-ui-core-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.core</groupId>
				<artifactId>richfaces-ui-core-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.iteration</groupId>
				<artifactId>richfaces-ui-iteration-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.iteration</groupId>
				<artifactId>richfaces-ui-iteration-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.output</groupId>
				<artifactId>richfaces-ui-output-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.output</groupId>
				<artifactId>richfaces-ui-output-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.misc</groupId>
				<artifactId>richfaces-ui-misc-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.input</groupId>
				<artifactId>richfaces-ui-input-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.input</groupId>
				<artifactId>richfaces-ui-input-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.validator</groupId>
				<artifactId>richfaces-ui-validator-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.validator</groupId>
				<artifactId>richfaces-ui-validator-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.dnd</groupId>
				<artifactId>richfaces-ui-dnd-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui.dnd</groupId>
				<artifactId>richfaces-ui-dnd-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui</groupId>
				<artifactId>richfaces-components-api</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<dependency>
				<groupId>org.richfaces.ui</groupId>
				<artifactId>richfaces-components-ui</artifactId>
				<version>4.0.0.Final</version>
			</dependency>
			<!-- JSF 2 -->
			<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>
			<dependency>
				<groupId>org.apache.myfaces.core</groupId>
				<artifactId>myfaces-api</artifactId>
				<version>2.0.4</version>
			</dependency>
			<dependency>
				<groupId>org.apache.myfaces.core</groupId>
				<artifactId>myfaces-impl</artifactId>
				<version>2.0.4</version>
			</dependency>

			<!-- Misc -->
			<dependency>
				<groupId>javax.el</groupId>
				<artifactId>el-api</artifactId>
				<version>1.0</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>servlet-api</artifactId>
				<version>2.5</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet.jsp</groupId>
				<artifactId>jsp-api</artifactId>
				<version>2.1</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jstl</artifactId>
				<version>1.2</version>
			</dependency>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>r08</version>
			</dependency>
			<dependency>
				<groupId>javax.validation</groupId>
				<artifactId>validation-api</artifactId>
				<version>1.0.0.GA</version>
			</dependency>
			<!-- Required for EL-CSS func -->
			<dependency>
				<groupId>net.sourceforge.cssparser</groupId>
				<artifactId>cssparser</artifactId>
				<version>0.9.5</version>
			</dependency>

			<!-- Optional cache dependencies -->
			<dependency>
				<groupId>opensymphony</groupId>
				<artifactId>oscache</artifactId>
				<version>2.3</version>
			</dependency>
			<dependency>
				<groupId>org.jboss.cache</groupId>
				<artifactId>jbosscache-core</artifactId>
				<version>3.2.5.GA</version>
			</dependency>
			<dependency>
				<groupId>net.sf.ehcache</groupId>
				<artifactId>ehcache</artifactId>
				<version>1.6.0</version>
			</dependency>

			<!-- Push dependencies -->
			<dependency>
				<groupId>org.atmosphere</groupId>
				<artifactId>atmosphere-runtime</artifactId>
				<version>0.6.5</version>
			</dependency>
			<dependency>
				<groupId>javax.jms</groupId>
				<artifactId>jms</artifactId>
				<version>1.1</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<scm>
		<connection>scm:svn:http://anonsvn.jboss.org/repos/richfaces/tags/4.0.0.20110319-Final/build/bom</connection>
		<developerConnection>scm:svn:https://svn.jboss.org/repos/richfaces/tags/4.0.0.20110319-Final/build/bom</developerConnection>
		<url>http://fisheye.jboss.org/browse/richfaces/tags/4.0.0.20110319-Final/build/bom</url>
	</scm>

</project>

Eu olho no repositório, e aparentemente as dependências foram baixadas corretamente. Ainda configurei o Classpath do eclipse com a variável M2_REPO apontando para a pasta do repositório, mesmo assim o erro persiste. Alguém teria uma luz?

Só colocando que esse caso deu certo, para subir o Jetty com o JSF era preciso criar as dependências para o pluggin do jetty usando os jars do JSF e não somente criar o classpath com o repositório como estava querendo

             <plugins>
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<configuration>
					<contextPath>/rd</contextPath>
					<connectors>
						<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
							<port>8080</port>
							<maxIdleTime>60000</maxIdleTime>
						</connector>
						<connector implementation="org.mortbay.jetty.security.SslSocketConnector">
							<port>8443</port>
							<maxIdleTime>60000</maxIdleTime>
							<keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
							<password>jetty6</password>
							<keyPassword>jetty6</keyPassword>
						</connector>
					</connectors>
				</configuration>
				<dependencies>
					<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>
					<dependency>
						<groupId>javax.faces</groupId>
						<artifactId>javax.faces-api</artifactId>
						<version>2.1</version>
						<scope>compile</scope>
					</dependency>

				</dependencies>
			</plugin>