run intellij instalar idea generate descargar dependencias configurar scala maven jar intellij-idea war

scala - instalar - maven generate intellij project



Intellij multi-module maven proyecto, actualización en uno de los submódulos no se propaga a la guerra (2)

Estoy usando Intellij Idea 12 y tengo un proyecto de múltiples módulos maven.

Para hacerlo simple, supongamos que tengo:

  • Módulo A: compilado a JAR
  • Módulo B: según el módulo A y también compilado para JAR
  • Módulo C, según el módulo B, pero compilado para WAR

Sé que Intellij tiene su propio mecanismo de construcción para proyectos maven, así que cuando construyo un WAR por primera vez y lo despliego a Tomcat, en general todo funciona como debería. El problema comienza cuando necesita hacer cambios en uno de los submódulos, por ejemplo, el Módulo A y reconstruir la Guerra (reconstruir el Módulo C)

Parece que Intellij utiliza el antiguo jar del Módulo A que se compiló anteriormente e ignora los cambios que hice en el Módulo A cuando creé / construí el Módulo C.

La única forma que encontré para resolver esto es ejecutar una compilación de Maven en el Módulo A y B y construir el WAR con Maven y desplegarlo como fuente externa.

El problema es que tengo 10 WAR que quiero implementar y más de 20 submódulos que se compilan en frascos. No tiene sentido reconstruir todas las guerras cuando solo quiero ver los cambios que hice en uno de los submódulos que afectan a una GUERRA. Y seguro no tiene sentido construirlos externamente con línea de comando mientras pago por la licencia Intellij Ultimate (para que pueda trabajar con servidores de aplicaciones)

Ahora comparando este comportamiento con otro IDE 1. Netbeans trabaja con proyectos maven de forma natural a través de Maven y todas las construcciones / implementaciones, y eso se hace con Maven y no con algún mecanismo interno. 2. Eclipse hace lo mismo con su mecanismo interno, pero todos los JAR se actualizan cuando se reconstruye el proyecto WAR. (O alguna otra magia que funciona)

¿Hay alguna manera de trabajar de manera diferente con IDEA o no?


Creo que la implementación de código caliente solo funciona con artefactos explosivos. En IDEA 11 cambio el nombre del directorio explotado, porque los artefactos maven están en la misma ubicación y el nombre es el mismo.


Finalmente, encontré una solución híbrida para esto: cosas que hay que hacer antes de ejecutar Tomcat:

  1. Limpiar todo
  2. Construye, empaqueta y registra (en el repositorio) todos los proyectos que deberían convertirse en JAR
  3. Compilar solo (No compilar) proyectos de WAR
  4. Construya artefactos de WAR con Intellij (Esto es necesario para la disponibilidad de intercambio en caliente)

Así es como comienzo Tomcat.

Información detallada:

  1. Crear 3 configuraciones de ejecución Maven

    1.1 Limpiar todos los proyectos 1.2 Construya todos los proyectos con artefactos JAR. Necesitas incluir manualmente todos tus proyectos con la opción ''-pl'' maven. Opcionalmente puede ejecutar "Maven clean" antes de iniciar esta configuración (vea la captura de pantalla) 1.3 Compilar todos los proyectos con artefactos WAR - Sin embalaje con Maven

  2. Cree la configuración de Tomcat para construir artefactos de Guerra e incluya otras configuraciones para ejecutar antes de Lanzar

Ahora, cuando se ejecuta Tomcat, es posible realizar cambios en el código de acceso en caliente (si JVM lo permite) o simplemente reiniciar el servidor para incluir todos sus códigos / cambios nuevos. El inconveniente de esto es un tiempo de inicio algo más largo de Tomcat. Eso es algo con lo que estamos dispuestos a vivir ..... Por ahora