with tools scm jdk example compile maven jenkins maven-3 parameterized incremental-build

maven - tools - Crecimiento incremental en Jenkins



jenkinsfile maven example (1)

Estoy usando Jenkins 1.462 y la versión de maven es 3.0.4. En Jenkins habilité la casilla de verificación "Incremental build - only build changed modules"

Quiero descubrir 2 preguntas:

  1. Si la construcción incremental es suficiente? Aquí ¿Cómo disparo una compilación de Jenkins de un solo módulo en una compilación Maven de varios módulos de Subversion? por ejemplo, se afirma que no funciona al 100%. Aquí http://www.slideshare.net/andrewbayer/7-habits-of-highly-effective-jenkins-users en la página 19 se afirma que las compilaciones incrementales son complementarias a construcciones completas, no reemplazos.

  2. Si la construcción incremental, solo los módulos modificados de la construcción funcionan realmente como se esperaba? ¿Qué quiero decir con esto? Si tengo los módulos A, B, X, C, D. X usa A y B, C usa X, D usa C y hago cambios en el módulo X. Que quiero recompilar los módulos X (itslef), C (que usan X directamente) y D (que está en el cierre transitivo; D usa C, que usa C).

Nota: este es el único cambio que hice para habilitar la compilación incremental.


Como se indica en la documentación de Maven, las compilaciones incrementales no son muy confiables al menos hasta 3.0.4:

Actualmente (3.0.4) Apache Maven no admite compilaciones incrementales muy bien.

https://cwiki.apache.org/confluence/display/MAVEN/Incremental+Builds (primera línea)

En cambio, le sugiero que use cualquiera de estos dos enfoques para acelerar su compilación:

  • Usando construcciones paralelas. En mi experiencia en proyectos grandes, esto funciona muy bien y puede reducir enormemente el tiempo de construcción con un riesgo mínimo (si existe). Simplemente ejecute algo como mvn -T 1.5C clean install https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3

  • Si sus módulos son independientes, puede moverlos a diferentes proyectos y pegarlos mediante el uso de dependencias maven.