2011-05-21 13 views
56

Tengo este extraño problema al hacer que mi proyecto esté basado en Maven. Creé un nuevo proyecto Maven en Eclipse y habilité las facetas de Dynamic Web. Pero durante el tiempo de ejecución ahora arroja ClassNotFoundException porque las dependencias de Maven no se copian en el directorio WEB-INF/lib. Incluso traté de agregar la sección de copias-dependencias en POM, pero no sirvió.Dependencias de Maven no visibles en WEB-INF/lib

Alguien here parecía haber resuelto este el camino correcto, pero supongo que se olvidó de mencionar la solución:. :(

+1

Pruebe el último complemento m2eclipse. Creo que hay dos partes y me ayudó a obtener las dependencias maven en el camino de la clase Eclipse. – xecaps12

+0

no lo conseguí ... ¿dos partes? –

+0

Para hacer experta en jugar agradable con la dap, tuve que instalar el núcleo y los extras de aquí: http://m2eclipse.sonatype.org/installing-m2eclipse.html – xecaps12

Respuesta

143

Esto no debería tener nada que ver con Eclipse y m2eclipse, y, opcionalmente, para un mejor soporte - m2e-wtp. Además, no necesita copiar las dependencias. Aquí hay algunas razones posibles:

  • que debería invocar mvn package (clic derecho-> Maven> paquete o) y obtener un archivo de la guerra - la <packaging> (en el POM) debe haber war
  • sus dependencias deben estar con el ámbito predeterminado (si son provided o test que no se incluirán en el archivo)
  • si está ejecutando el proyecto como proyecto web dinámico en un servidor dentro de eclipse, entonces usted debe abrir las propiedades del proyecto (clic derecho> propiedades) y seleccione "Ensamblaje de despliegue". Haga clic en "agregar", seleccione "crear entradas de ruta" y seleccione "dependencias maven". Esto indicará a WTP que envíe las dependencias maven al directorio del servidor.
+0

sólo si pudiera votarte dos veces hombre ... miré muchos lugares y blogs e incluso algunas preguntas ASÍ ... todas ellas engañosas ... perdieron alrededor de 6 horas seguidas para esto ... gracias hombre –

+0

¿Cuál de los 3 era? :) – Bozho

+29

el tercero acaba de hacer mi día –

3

Compruebe la Asamblea despliegue propiedad del proyecto que he visto algunos proyectos de Eclipse mvn eclipse:eclipse generados a veces se los activos que son desplegados en el lugar equivocado. Por lo que puedo recordar la nueva Asamblea despliegue tenía algunos problemas con las versiones anteriores de Eclipse 3.6 (Helios).

0

desea utilizar la copia dependencias plugin de

ver this de correos y el docs

12

instala por primera vez Maven Integration for Eclipse WTP (Ayuda-> Eclipse mercado)

Luego, en pom.xml de su proyecto web sólo tiene que añadir:

<packaging>war</packaging> 

Después de eso, haga clic derecho en el proyecto, Maven -> Update Project, que debería agregar Automáticamente las Dependencias de Maven para usted en la Asamblea de implementación.

+0

Gracias por este comentario. Me salvaste horas de depuración. – DigitalGhost

+1

+1 Eso funcionó para mí también. Sin él, Maven empaquetará la dependencia como un contenedor y no quieres eso, quieres que todas tus dependencias se empaqueten en un archivo de tipo war. Esto tiene muchos otros efectos, lea más https://maven.apache.org/pom.html –

+0

maven -> proyecto de actualización funcionó para mí también. parece necesario en la versión Eclipse Luna – kandan

2

Acabo de hacer maven -> proyecto de actualización funcionó para mí.

5

proyecto botón derecho del ratón> Maven> Actualización del Proyecto Maven> Aceptar lo fijó para mí

0

Si nos fijamos en su despliegue y ver que WEB-INF/lib está vacía de sus dependencias Maven, a continuación, asegurando esas dependencias Maven están en su conjunto de implementación es crucial como se menciona en la respuesta elegida.

Sin embargo, tenga cuidado con Eclipse y luego no actualice todo, incluso con una actualización de Maven.Si limpia, reconstruye y vuelve a desplegar y todavía no ve la carpeta lib que se está llenando intente eliminar y volver a agregar la aplicación a las implementaciones del servidor a través de Servidores> Agregar y quitar.

Esto desatascó el sistema para mí.

0

Haga clic derecho en proyecto -> Despliegue Asamblea: Vea si tiene las Dependencias Maven y todas las demás allí. Si no es así, Haga clic en Proyecto -> Maven -> Habilitar Resolución espacio de trabajo

(tal vez entonces Maven -.> Actualización del Proyecto, pero luego mirar de nuevo en "Asamblea de despliegue" y ver lo que tienes) este lo resolvió (¡finalmente!) para mí.

Cuestiones relacionadas