tutorial proyecto español ejecutar desde crear consola como comandos maven-2 jetty maven-plugin maven-jetty-plugin

maven 2 - español - Maven: cómo usar jetty: se ejecuta en un proyecto Maven de múltiples módulos, sin necesidad de instalar



maven tutorial pdf (5)

Basado en esta respuesta: Best practice wrt. `mvn install`, proyectos de múltiples módulos, y ejecutar un submódulo, una solución alternativa alrededor de Mavens, las restricciones horribles y las limitaciones del reactor es definir el complemento en el pom principal con skip true, y luego volver a habilitarlo en el submódulo respectivo usando skip false.

Soy nuevo en Maven. Tengo un proyecto de varios módulos maven 2 que tiene la siguiente estructura (algo simplificado):

Project (POM packaging) | +-- Module1 (JAR) | | | +-- src | | | +-- main | | | +-- java | +-- resources | +-- Module2 (JAR) | | | ... | +-- Web Module (WAR) | ...

He configurado el módulo web para incluir el complemento Maven Jetty . Esto funciona muy bien para construir los artefactos de producción. Para el desarrollo, descubrí que necesito llamar a mvn install en cualquier módulo que cambie, seguido de detener jetty y llamar a jetty: ejecutar de nuevo.
Sería mucho más productivo si hubiera una forma para que el complemento seleccione los cambios directamente desde los directorios de destino de cada módulo. De acuerdo con la documentación del complemento de embarcadero, parece que existe una característica de este tipo, pero parece que esto solo se aplica al módulo WAR.
Aún más importante para mí es poder realizar cambios en los archivos de recursos, sin la necesidad de reiniciar Jetty. Esto se debe a que la mayoría de los recursos son archivos de plantillas HTML, y es mucho más productivo diseñar y actualizar las plantillas durante el desarrollo sin necesidad de reiniciar para ver los cambios.

Entonces, ¿hay una manera de configurar la ruta de clase del complemento de jetty para incluir los directorios de destino / clases y recursos de cada módulo JAR, en lugar de los JAR reales en el repositorio local?

¡Gracias!
Yaniv


En Eclipse, puedes usar el plugin "Ejecutar Jetty" para lograr esto.
En la Configuración de ejecución de IDEA, hay una opción ''Resolver los artefactos del área de trabajo'', verifíquelo.


Esto no es posible con un proyecto de varios módulos de Maven. Una regla fundamental de los proyectos de Maven es que cada proyecto debe ser independiente. Eso no impide que se construyan juntos, pero cualquier proyecto debe poder construirse solo mientras se satisfagan todas sus dependencias.

En este caso, significa que el proyecto WAR no puede mirar a los otros proyectos para ver si necesitan ser actualizados, el POM para esos otros proyectos es la declaración definitiva de lo que se necesita hacer para construir el artefacto. Y una vez que se construye el artefacto, se coloca en el repositorio local. No hay asociación entre los archivos de origen y el artefacto en ese momento, por lo que no hay forma de saber qué archivos de origen activarán una reconstrucción del artefacto del que depende WAR.


Resolví utilizando un lanzador experto y configurando los artefactos del Área de trabajo de resolución , que no están verificados por defecto


Si usa M2Eclipse (el complemento Eclipse para una integración cercana de Maven dentro de Eclipse), puede ejecutar su jetty: run goal en el módulo web y otras dependencias se tomarán en cuenta desde su espacio de trabajo, incluso si no lo son. disponible en su repositorio local.

Hay una opción en su ejecución para decirle a Maven que resuelva sus módulos en el área de trabajo (de manera predeterminada, solo buscará lo que se implementa en el repositorio local).

Desafortunadamente, no puedo tener el mismo comportamiento en IDEA y tengo que ejecutar una instalación antes de ejecutar el embarcadero: ejecutar en el módulo web.