turnos simulador puntos matricula licencias ant

simulador - ant turnos



sutilezas sutiles del error fallido (2)

Tengo un código ant que inicia una compilación de lanzamiento en todos los subdirectorios:

<target name="all-release" > <subant target="sub-release" failonerror="true"> <fileset dir="." includes="*/build.xml" /> </subant> </target>

Tal como está escrito, si falla cualquier compilación individual, todas las versiones fallarán rápidamente (ninguna de las versiones posteriores tendrá éxito. Si cambio failonerror = "false", la versión completa tendrá éxito todo el tiempo. -los constructores son independientes, entonces lo que realmente quiero es:

ejecutar todas las compilaciones de subdesarrollo, y luego tener fallas en todas las versiones posteriores si falla una o más sub-versiones (idealmente con un bonito mensaje de error sobre qué compilaciones fallaron).

¿Algunas ideas?


Te sugiero que veas las extensiones disponibles en las tareas ant-contrib .

La tarea ''para'' probablemente pueda adaptarse para cumplir con sus requisitos.

Su objetivo de "liberación total", con la taskdef ant-contrib, podría verse así:

<taskdef resource="net/sf/antcontrib/antlib.xml"> <classpath> <pathelement location="lib/ant-contrib-1.0b3.jar"/> </classpath> </taskdef> <target name="all-release"> <for keepgoing="true" param="file"> <path> <fileset dir="." includes="*/build.xml" /> </path> <sequential> <ant antfile="@{file}" target="sub-release" /> </sequential> </for> </target>

Usando algunas otras características ant-contrib es posible obtener la lista de fallas.

Registro de muestra desde arriba build.xml:

$ ant all-release Buildfile: build.xml all-release: [echo] /work/Scratch/dir1/build.xml sub-release: [echo] dir1 [echo] /work/Scratch/dir2/build.xml sub-release: [echo] dir2 [for] /work/Scratch/dir2/build.xml: The following error occurred while executing this line: [for] /work/Scratch/build.xml:17: The following error occurred while executing this line: [for] /work/Scratch/dir2/build.xml:6: dir2 failed [echo] /work/Scratch/dir3/build.xml sub-release: [echo] dir3 BUILD FAILED /work/Scratch/build.xml:11: Keepgoing execution: 1 of 3 iterations failed. Total time: 0 seconds


Las extensiones Antelope Ant tienen un comando try-catch que se puede usar para lo que necesita:

<taskdef name="try" classname="ise.antelope.tasks.TryTask"/> .... <try break="false" printmessage="true" > <antcall target="xmlValidate" /> <antcall target="runJunit" /> <antcall target="..." /> <catch> <property name="haderrors" value="true"/> </catch> </try> <fail message="FAILED" if="haderrors" />

break=false continuemos el siguiente comando después de fallar. Pero los objetivos fallidos establecen la propiedad de los haderrors que se comprueba al final. Lo usé mucho para crear trabajos (y funciona bien) pero no estoy seguro de que funcione para <fileset> dentro de <subant> . Tal vez <subant> enumerar todas las llamadas <subant> explícitamente.