Estoy ejecutando Intellij Ultimate con Tomcat y desplego una guerra. Todo se despliega bien en el directorio webapp de tomcat.
Cuando cambio un archivo como un archivo xhtml, ¿hay alguna forma en que tomcat pueda recoger automáticamente ese cambio? A partir de ahora necesito copiar el archivo de Intellij y copiarlo en el directorio de donde vive en el directorio de aplicaciones web de Tomcat. Sé que hay ciertos archivos que necesitarán una recompilación, pero xhtmls no es uno de ellos.
Esto no se puede hacer si despliegas una guerra con IntelliJ IDEA. Sin embargo, puede ser si despliegas una guerra explotada . En IDEA:
my-webapp-name:war
my-webapp-name:war exploded
Ahora, cada vez que realice un cambio, IDEA volverá a implementar los archivos modificados cuando el marco de IDEA se desactive (es decir, pierde el foco). Tarda uno o dos segundos, lo verá en la barra de estado inferior en IDEA. Obviamente. aún necesitará actualizar su navegador web para que obtenga el nuevo archivo (a menos, por supuesto, si la página tiene una actualización automática de ajax como fetch).
Una buena combinación con Tomcat es establecer "Al desactivar el marco" en "Actualizar recursos" y la acción "Al actualizar" en "Volver a desplegar" o "Reiniciar servidor". Eso permite que las páginas estáticas se actualicen rápidamente mediante la desactivación de marcos, y clase actualizada a través de la acción 'actualizar'.
Una compañía llamada ZeroTurnaround vende JRebel, que es una solución dinámica de carga de clases. También tienen una serie de cinco partes sobre el tema que es muy buena.
fuente
Error: Artifact 'my-webapp-name:war exploded' has invalid extension
¿cómo solucionarlo?Si desea actualizar clases y recursos, ejecute Tomcat en modo de depuración . En este modo, IntelliJ actualiza las clases y los recursos sin problemas (intercambio en caliente).
Tengo el mismo problema IntelliJ no actualizó mi proyecto, porque lo ejecuto como "Modo de ejecución". Cuando ejecuto el modo de depuración y presiono Ctrl+ F10, actualiza las clases y los recursos.
fuente
He encontrado una mejor manera.
En Eclipse hemos creado, compilado y recargado automáticamente archivos estáticos. En realidad, los archivos estáticos se sirven directamente desde src / main / webapp .
En IntelliJ en lugar de servir directamente desde src / main / webapp , hay una carpeta creada en target, en la que tendrá una copia de su src / main / webapp y también otro contexto relacionado ... web-inf / classes / lib.
Si coloca en lugar del destino la salida del artefacto explotado en src / main / webapp , no sobrescribirá sus archivos de origen, y servirá directamente, no tendrá que presionar - actualizar recursos / actualizar recursos y clases
Entonces, lo que debes hacer en IntelliJ es
Después de esto, si tiene trabajos que cambian archivos estáticos desde fuera de IntelliJ, verá cambios inmediatamente sin ir a IntelliJ y Actualizar recursos , y para las clases que tiene esa macro que guarda y compila (Nota: también podría presionar Compilar / Recompilar: cmd + shift + F9 / cmd + F9: si tiene varios editores abiertos, verá que sus editores sucios * no estarán sucios y los cambios (clases) se volverán a cargar)
fuente
Eso es posible solo cuando implementa la carpeta de guerra explotada, habilita la recarga en caliente e inicia tomcat en modo de depuración.
Estos son los pasos para lograr esto.
fuente
Si tiene archivos múltiples que desea ver / reproducir de inmediato, cárguelos directamente en la carpeta de destino. * (solo cambia la ubicación de escritura a la carpeta de destino / static /)
podrá ver su archivo inmediatamente sin tener que reiniciar su IDE
fuente