2012-10-10 70 views
9

El plugin maven funciona muy lento para mí. En mi proyecto, la carpeta de aplicaciones web tiene casi 15 000 archivos pequeños (imágenes, jsp, css, etc.). Cuando lo ensamblo con el experto, primero copia todos los archivos en el directorio target/myProject-1.0.0 y luego crea el archivo myProject-1.0.0.war. El proceso de copia toma 10 minutos, construir el .war lleva 2 minutos.Acelera el plugin maven war

Como veo, la compilación podría ser mucho más rápida si el archivo .war se ensambla directamente desde la carpeta de aplicaciones web. Es posible de hacer?

+0

Directamente desde la carpeta 'src/main/webapp'? Entonces, ¿qué hay de dependencias, recursos, etc.? – maba

+0

@maba Claro, ¿por qué no? Jar.exe podría archivar archivos desde múltiples ubicaciones. La tarea ant '' hace el truco fácilmente. – kan

+0

No es la manera de maven. Puede usar el ['maven-antrun-plugin'] (http://maven.apache.org/plugins/maven-antrun-plugin/) para usar esa tarea ant. – maba

Respuesta

4

Sugiero que utilice el uso del objetivo war:inplace de maven-war-plugin junto con una tarea personalizada maven-antrun-plugin.

El war:inplace generará la aplicación web en el directorio fuente WAR. Creará todas las carpetas adicionales necesarias bajo webapp.

El antrun:run se puede personalizar para crear la guerra de acuerdo con sus necesidades especiales.

Esto mejorará potencialmente el rendimiento, ya que la mayoría de los archivos de recursos que tiene todavía estarán en la carpeta webapp y no se copian.

+0

Guarda parte de la copia absurda pero war: inplace también copia todas las bibliotecas en WEB-INF/lib, lo que también es innecesario y molesto. 8- (¿Alguien realmente intentó esto? –

3

Solo quiero mencionar que hay una configuración useCache que aumenta significativamente el rendimiento (~ 3 minutos en lugar de 12). Sin embargo, es aceptable solo para desarrollo, no para el servidor CI, que siempre debe hacer compilaciones limpias.

+1

¿Podría incluir su configuración de Maven que logró lo que describe aquí? –

1

En la sección de configuración del complemento war, use warSourceExcludes para excluir directorios y archivos innecesarios. En el siguiente ejemplo, los componentes de directorios y node_modules serán excluidos de la guerra de explosión así como también de la guerra final. En mi caso, esto redujo el tiempo de construcción de 3 minutos a 14 segundos.

 <configuration> 
       <warSourceExcludes> 
       components/**, 
       node_modules/** 
       </warSourceExcludes> 
     </configuration>