java - jidea - intellij idea full linux
Usando Intellij para construir la guerra e implementar en Tomcat (6)
Compruebe la ruta del directorio de salida. NOTA que usar ~
en la ruta no funcionará.
Mi flujo de trabajo básico es en el terminal mvn clean install
en mi directorio base. Esto crea un directorio de destino con un archivo WAR. Copio ese archivo war en el directorio webapps de mi Tomcat.
Si hago cambios obviamente tengo que repetir el proceso que es tedioso. Estoy usando Intellij Ultimate 13.1.6 y sé que es posible hacer todo esto a través del IDE basado en esta guía .
Así que antes de comenzar, ejecuto mvn clean
en mi base, lo que elimina el directorio de destino.
Ahora, para comenzar, cuando esté en la Estructura del proyecto -> Artefactos y creé una nueva aplicación web: Archivar. Lo nombré project_name y tenía un directorio de salida diferente de forma predeterminada (baseDir / out / artifacts / project_name vs baseDir / target), de modo que dejé todo predeterminado y presioné ok.
Ahora voy a Ejecutar -> Editar configuraciones y creo un nuevo servidor Tomcat local con la siguiente configuración
y en la pestaña Implementación agrego el artefacto que está integrado en mi Lanzamiento Antes, como se ve en mi imagen. Muy claro.
Sin embargo, cada vez que ejecuto el servidor a través de Intellij, se inicia correctamente, pero no se implementa nada. Me sale el error
Artifact project_name: com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: /Users/path/to/workspace/project_name/out/artifacts/project_name/project_name.war not found for the web module.
Y reviso mi directorio y, como se ve en el error, no se crea nada. Ni siquiera el directorio de salida.
¿Qué estoy haciendo mal? Sé que una solución es volver a la terminal, ejecutar mvn clean install
y con ese archivo .war que se creó, poner eso en la configuración de implementación. Sentí que eso era más un hackeo ya que todavía lo estoy haciendo a través de la línea de comandos y si no lo tengo ya construido, no puedo establecer el destino como un directorio para encontrar el archivo war.
Cualquier asistencia es apreciada.
Lista de verificación de cosas que puede hacer para verificar dónde van las cosas mal:
1) Construya manualmente los artefactos usando Construir> Construir artefactos.
2) Verifique si el artefacto está en el directorio de salida esperado (out / artifacts / xxx).
3) Si no, vaya a Archivo> Estructura del proyecto> Artefactos
4) Seleccione el archivo de artefacto en cuestión (nombre de proyecto en este caso).
5) Verificar si el directorio de salida es correcto. Opcionalmente, intente crear este directorio en caso de que IntelliJ no lo haga (aunque esto me sorprendería)
6) Verificar si el contenido es correcto.
7) Opcionalmente, marque "Construir en marca" para tener siempre implementada la última versión de su código cada vez que ejecute el servidor.
Tenga en cuenta que para desplegar archivos WAR en un Tomcat, debería preferir usar el WAR despiezado. Esto hace que la implementación / prueba / depuración sea significativamente más rápida.
Me sale este problema, la razón está en la estructura del proyecto, el directorio de salida de los artefactos no existe realmente:
Soluciones:
- Ir a la estructura del proyecto:
File -> Project Structure
- Luego haga clic en el botón de directorio
- Usted crea el directorio uno por uno de acuerdo con los resultados del directorio de salida:
- Luego reinicie su proyecto.
Probé las soluciones anteriores pero el archivo WAR no funcionó cuando lo implementé en el servidor Tomcat. En lugar de las soluciones anteriores, simplemente escriba mvn clean
y luego mvn install
en la ventana del terminal. Su archivo WAR ahora se encuentra en
ProjectName/target/
Recibí este error cuando intenté iniciar una aplicación usando Ejecutar. El problema fue que, por alguna razón, el archivo WAR no se implementó incluso después de seleccionar Construir-> Construir artefactos . Solución: Cerré Idea, luego reimporté el proyecto y lo elegí como artefacto explotado por la guerra . Esta vez el despliegue funcionó.
Tuve el mismo problema y ninguna de las soluciones anteriores resolvió el problema. Compartiéndolo aquí en caso de que alguien más encuentre el mismo problema.
El servidor Tomcat en mi caso se configuró para ejecutar el puerto JMX en 18099 en lugar de 1099. Por lo tanto, el artefacto nunca se implementó, ya que el puerto JMX utilizado en la configuración de IntelliJ Tomcat por defecto es 1099.
Cambiarlo a 18099 o eliminar esa configuración particular de Tomcat resolvió el problema.
El resultado final: si desea que se implemente su artefacto, asegúrese de que el puerto JMX configurado en IntelliJ coincida con el puerto JMX que realmente utiliza su servidor Tomcat.