Cuando construye con Maven en una máquina multinúcleo / CPU múltiple, a menudo sería posible construir diferentes subproyectos en paralelo. ¿Hay alguna manera de hacer esto con maven? ¿Hay un complemento para esto / lo que sea?
Cuando construye con Maven en una máquina multinúcleo / CPU múltiple, a menudo sería posible construir diferentes subproyectos en paralelo. ¿Hay alguna manera de hacer esto con maven? ¿Hay un complemento para esto / lo que sea?
Respuestas:
Maven 3 (a partir de beta 1) ahora admite compilaciones paralelas como una característica experimental.
Por ejemplo,
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
La documentación completa se puede encontrar en la wiki de Maven.
https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3
Las soluciones sugeridas son geniales, pero quería agregar algo a las respuestas aquí con respecto a la estabilidad de la prueba durante las compilaciones paralelas .
Entonces, cuando se usa la construcción paralela de Maven :
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
Pueden aparecer algunos problemas con las pruebas . Tenga en cuenta cualquier comportamiento en las pruebas que sea diferente entre la ejecución de pruebas en serie y paralelas. La mayoría de las veces sucede para hacer un aislamiento de prueba no apropiado en cuanto a recursos .
Por ejemplo, test1 manipula la entrada db con la clave 12345, que está codificada y test2 usa la misma entrada. No puede ser bueno ...
Es una situación que debe considerarse en primer lugar, pero en algún momento se olvida y podría generar problemas diferentes una vez que se realiza el cambio a la construcción paralela de Maven.
En caso de que eso suceda, y aún desee usar la ejecución paralela al menos en algunas ocasiones, puede (por supuesto, además de tratar de arreglar la prueba y aislarla adecuadamente) para deshabilitar las pruebas de Maven con el argumento -DskipTests:
mvn clean install -T 4 -DskipTests
Algunas de las aplicaciones de compilación de CI (por ejemplo, hudson) pueden construir múltiples proyectos maven al mismo tiempo (e incluso en múltiples máquinas).
El soporte para esto en maven 'autónomo' también sería bueno, un vistazo rápido a través del rastreador de problemas de maven me dio: http://jira.codehaus.org/browse/MNG-3004
Si llegaste a esta pregunta buscando resolver tu servidor de compilación y no estás usando uno que trate con maven de forma nativa, la bandera mágica que estás buscando es esta:
-Dmaven.repo.local=someNoneGlobalDir
¡haz eso para cada una de tus compilaciones y puedes dejar que se ejecuten todas al mismo tiempo en lugar de tener todo lo que usa Maven en una cola!