java - files - Las dependencias de Maven no son visibles en WEB-INF/lib
maven build war with dependencies (8)
Tengo este extraño problema al hacer mi proyecto 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 intenté agregar la sección de copias dependientes en POM, pero no ayudó.
Alguien here parecía haber resuelto esto de la manera correcta, pero supongo que olvidó mencionar la solución :(
Acabo de hacer maven -> proyecto de actualización funcionó para mí.
Compruebe la propiedad de ensamblaje de implementación del proyecto. He visto algunos mvn eclipse:eclipse
proyectos Eclipse generados por eclipse a veces tienen los activos desplegados en la ubicación incorrecta. Por lo que puedo recordar, la nueva Asamblea de Implementación tuvo algunos problemas con las versiones anteriores de Eclipse 3.6 (Helios).
Esto no debería tener nada que ver con eclipse y m2eclipse, y opcionalmente para una mejor compatibilidad - m2e-wtp . Además, no necesita copiar las dependencias. Aquí hay algunas posibles razones:
- deberías invocar el
mvn package
(o hacer clic con el botón derecho del ratón en> maven> paquete) y obtener un archivo de guerra; el<packaging>
(en el pom) debe ser unawar
- sus dependencias deben estar con el alcance predeterminado (si se
provided
otest
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 debe abrir las propiedades del proyecto (clic con el botón derecho> propiedades) y seleccionar "Ensamblaje de implementación". 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.
Haga clic con el botón derecho del mouse en proyecto -> Ensamblaje de despliegue: vea si tiene las Dependencias de Maven y todas las demás allí. De lo contrario, haga clic derecho en el proyecto -> Maven -> Habilitar la resolución del espacio de trabajo
(tal vez entonces Maven -> Actualizar Proyecto, pero luego mire de nuevo en "Asamblea de Implementación" y vea lo que tiene.) Esto lo resolvió (¡por fin!) para mí.
Haga clic con el botón derecho en el proyecto> Maven> Actualizar proyecto de Maven> Aceptar me lo arregló
Primero instale Maven Integration For Eclipse WTP (Ayuda-> Eclipse Marketplace)
Luego, en el pom.xml de tu proyecto web simplemente agrega:
<packaging>war</packaging>
Después de eso, simplemente haga clic derecho en el proyecto, Maven -> Actualizar proyecto, que debe agregar Automáticamente las Dependencias de Maven para usted en el Ensamblaje de implementación.
Si observa su implementación y ve que WEB-Inf / lib está vacío de sus dependencias Maven, entonces asegurar que esas dependencias Maven estén en su ensamblado de implementación es crucial como se menciona en la respuesta elegida.
Sin embargo, desconfíe de Eclipse y 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í.