maven-2 - pom - mvn release perform
¿Cómo puedo acelerar mi build maven2? (8)
Estoy usando un artifactory local para proxy de la solicitud, pero las fases de compilación y prueba aún son un poco lentas. No es la compilación real y las pruebas que son lentas, es el "calentamiento" del marco maven2. ¿Algunas ideas?
Si está utilizando Maven3 ( $ mvn -version
), también puede seguir esta guía . En mi caso, los resultados son:
Ejecución normal:
$ mvn clean install
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:05 min
[INFO] Finished at: 2015-07-15T11:47:02+02:00
[INFO] Final Memory: 88M/384M
Con procesamiento paralelo (4 hilos):
$ mvn -T 4 clean install
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:22 min (Wall Clock)
[INFO] Finished at: 2015-07-15T11:50:57+02:00
[INFO] Final Memory: 80M/533M
Procesamiento en paralelo (2 hilos por núcleo)
$ mvn -T 2C clean install
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:12 min (Wall Clock)
[INFO] Finished at: 2015-07-15T12:00:29+02:00
[INFO] Final Memory: 87M/519M
[INFO] ------------------------------------------------------------------------
Como podemos ver, la diferencia es casi un minuto, cerca del 20-30% de la mejora de la velocidad.
Descubrí que los proyectos de análisis de reactor son significativamente más lentos que los proyectos de un solo pomo. Si su compilación es reactor (multi-módulo) y sus desarrolladores no están trabajando en todos los módulos al mismo tiempo, puede eliminar el POM padre y compilarlos por separado, resolviendo las dependencias utilizando el repositorio local. La desventaja es que necesita instalar o implementar un módulo para que sus dependientes puedan ver los cambios.
Además, es posible que desee ver el nuevo Maven 2.1 M1 que contiene algunas mejoras de velocidad significativas.
Si ninguno de estos ayuda, publique más detalles sobre la configuración de su proyecto (estructura de módulos y complementos), parámetros de línea de comando y configuración de hardware (memoria y disco). Ejecutar Maven con -X también podría mostrar dónde se está tomando su tiempo.
Hay algunas posibilidades para optimizar algunas de las tareas de compilación. Por ejemplo, la tarea ''limpia'' se puede optimizar de minutos a solo milisegundos utilizando un simple truco: cambiar el nombre de la carpeta ''objetivo'' en lugar de eliminar.
Para obtener detalles sobre cómo hacerlo, consulte acelerar la construcción de Maven .
Yo usaría Nexus instalado localmente.
Puede usar -DskipTests=true
para omitir las pruebas unitarias. lo que aceleraría las construcciones
Ajuste las configuraciones de memoria al óptimo para, por ejemplo: agregue esta línea a mvn.bat establezca MAVEN_OPTS = -Xmx512m -XX: MaxPermSize = 256m
La fase limpia de mvn normalmente elimina la carpeta de destino. En cambio, si cambiamos el nombre de la carpeta de destino, la fase de limpieza será mucho más rápida. < QuickClean >
-Dmaven.test.skip = true omitirá la ejecución de la prueba.
Add -Denforcer.skip = verdadero para el argumento mvn de la línea de comandos (Esto está imponiendo las versiones de maven, jdk, etc., podemos omitirlo después de las ejecuciones iniciales)
Inhabilite operaciones no críticas durante la fase de construcción: análisis, generación de javadoc, empaque de fuente. Esto ahorrará mucho tiempo.
El nuevo proceso de Spawnig también ayuda a mejorar el tiempo: Dmaven.junit.fork = true (inserta las pruebas junit en un nuevo proceso) -Dmaven.compile.fork = true (divide la compilación)
Espero eso ayude.
No sé qué versión de Maven estás usando, supongo que 2, pero daré lo que uso para Maven 1.x para acelerar y hacer que las cosas se desarrollen un poco más rápido.
Estos combinarán las pruebas junit en un nuevo proceso (también ayuda cuando usa variables de entorno en las pruebas, etc. y le da a las pruebas un poco más de memoria).
-Dmaven.junit.fork=true
-Dmaven.junit.jvmargs=-Xmx512m
Esto hace que la compilación te acelere las cosas
-Dmaven.compile.fork=true
Espero que esto pueda ayudar un poco, pruébalo.
También consulte obtener más velocidad con su compilación maven2 .
Inicialmente, debería obtener un análisis más detallado de sus tiempos de construcción usando algo como esto e identificar a los candidatos que están tomando más tiempo.
¿Las pruebas están girando en una base de datos H2 por prueba? ¿La descarga de archivos jar externos toma tiempo? Esto guiará dónde enfocar su investigación. Simplemente aplicar indicadores rápidos no suele funcionar, ya que por defecto ya se han incluido, y no quiere sacrificar sus pruebas con banderas omitidas.