sheet script es6 cheatsheet cheat bash maven-2 ant scripting

es6 - cómo detectar un error de compilación de ant/maven a través de un script bash?



linux script bash (4)

Estoy escribiendo un script bash para automatizar el proceso de compilación. hay dos bloques de compilación principales, uno es una tarea ant y uno es una simple y antigua "instalación limpia de mvn". Quiero hacer algo cuando hay un error de construcción proveniente de cualquiera de estos dos procesos de compilación.

y el problema es que estas compilaciones contendrán fallas o errores de prueba de vez en cuando, pero el resultado final es exitoso. y creo que el código de estado ($?) devuelto por estos procesos debería ser 0, no importa si la construcción falla o tiene éxito, podría estar equivocado.

Entonces, ¿cuál es la mejor manera para que mi script detecte el resultado final (compilación fallida / exitosa) sin capturar la información falsa durante la compilación media (errores de prueba, etc.) de ellos?


Aquí es exactamente lo que hago para obtener el resultado que desea.

<exec executable="${env.M2_HOME}/bin/mvn" dir="${basedir}" failonerror="true" osfamily="unix"> <arg value="-DskipTests=${argSkipTests}"/> <arg value="-Doffline=${argOffline}"/> <arg line="${projectsLine}"/> <arg line="${resumeFromLine}"/> <arg line="${alsoMakeLine}"/> <arg line="${alsoMakeDependentsLine}"/> <arg line="${commandsLine}"/> </exec>


Hay algunos problemas contra Maven 2 que devuelve códigos de retorno incorrectos (es decir, siempre devuelve 0). Notablemente MNG-3651 que se corrigió en Maven 2.0.9.

En versiones anteriores, mvn.bat terminaba con esta línea:

exit /B %ERROR_CODE%

Desde Maven 2.0.9 en adelante, la última línea se cambió a esto:

cmd /C exit /B %ERROR_CODE%

Por lo tanto, se devuelve un código de retorno que no sea 0 si falla la compilación. En el caso de un ERROR de compilación, el código de retorno es 1. Si no puede actualizar a 2.0.9+, podría considerar modificar mvn.bat como se indicó anteriormente para devolver el código correcto.


De acuerdo con el manual de Ant :

los scripts de inicio de ant (en su versión de Windows y Unix) devuelven el código de retorno del programa java. Entonces, una compilación exitosa devuelve 0, las compilaciones fallidas devuelven otros valores.

Maven también devuelve un código de salida distinto de cero en caso de error. Aquí hay un enlace que muestra cómo interrogar este estado usando Maven Invocation API.

Por lo tanto, me parece que debe ser capaz de manejar explícitamente los códigos de retorno en su secuencia de comandos. Presumiblemente, puede ignorar los códigos de error relacionados con las pruebas, etc., si no le conciernen.

los códigos de error de exe en Ant son específicos del sistema operativo. Estos pueden ayudarlo a:


mvn clean test rc=$? if [[ $rc -ne 0 ]] ; then echo ''could not perform tests''; exit $rc fi