2011-09-21 9 views
11

Estoy desarrollando un sitio web basado en magnolia. Estoy usando el arquetipo webapp para crear una nueva aplicación web. Usando la línea de comando, puedo producir un WAR y desplegarlo en mi contenedor (Tomcat). Luego lo ejecuto y funciona bien.Uso de superposiciones maven en la configuración de ejecución de aplicaciones web con IntelliJ?

Mi siguiente paso fue importar la estructura de mi proyecto a IntelliJ. IntelliJ ve todo bien y puede compilarlo todo. He probado esto haciendo primero un maven clean y luego dejo que IntelliJ haga el resto (reconstruir el proyecto).

El último paso es dejar que se ejecute en mi contenedor. He configurado las configuraciones de ejecución antes para aplicaciones web (no usan superposiciones de guerra), y funcionaron muy bien. En este caso, lo configuré como antes y apunto a mi artefacto de webapp explotado.

Una vez que ejecuto tomcat, no encuentra mi aplicación web. Me parece que la superposición no se ha fusionado en el directorio de destino del proyecto (que normalmente es el caso cuando se hace la instalación de maven). Sin embargo, IntellJ ha creado un directorio de superposiciones en mi proyecto y ha desempaquetado el archivo WAR (superposición/super) allí.

Lo hago funcionar cuando hago una instalación maven yo mismo, y luego ejecuto Tomcat en IntelliJ. Lo cual es obvio, porque todo tipo de archivos necesarios ahora están en mi directorio de destino (como un web.xml por ejemplo :)).

Lo que quiero es esto: - IntelliJ sabe que cuando ejecuta Tomcat, debería haber preparado el directorio de destino como lo haría "mvn install" o "mvn package".

Qué hace: - Hace algo intermedio. Crea un directorio de destino y copia recursos del proyecto de aplicación web. No se superpone a ninguna dependencia de WAR, por lo que el directorio de destino de la aplicación web está incompleto.

¿Alguien tiene algún consejo para resolver esto?

Respuesta

10

Encontré que marcar la casilla "ejecutar objetivo maven" en la configuración de ejecución, y establecer el paquete mvn hace que funcione.

+0

¿Esto me permitirá 'Actualizar clases' también? ¿O tendría que volver a implementar para ver cada cambio? – Abhimanyu

+1

Cuando actualice las clases, se cargarán en la memoria y funcionarán. Pero tenga en cuenta que cuando usa múltiples dependencias, la próxima vez que inicie su contenedor debe asegurarse de que el contenedor (es decir, tomcat) también esté mirando sus últimas fuentes de las dependencias. Encontré esto bastante engorroso, tuve que limpiar mvn estas dependencias para asegurarme de que estaban en mi repositorio local. Y de esa forma, el objetivo del paquete mvn podría recogerlos correctamente. –

+0

@StefanHendriks: Gracias por el consejo. Tuve un problema similar en el que IntelliJ ignoraba mi definición de superposición. Parece que IntelliJ ignora algunas de las configuraciones del plugin maven-war cuando construye una aplicación web usando su propio mecanismo de compilación interno. Decirle que delegue la construcción de guerra a maven significa que se respeta toda la configuración war-plugin. – skaffman

Cuestiones relacionadas