principales - cómo llamar a un objetivo ant cuando se invalida el objetivo en un archivo secundario
cuáles son los objetivos de un archivo (2)
Encontré una solución, que ejecutaría mis comandos y luego llamaría a la prueba desde el archivo ant del padre. Anule la prueba de los padres, luego llame cuando la prueba de los padres una vez que haya hecho su propia "magia".
Todos los otros objetivos de los padres pueden ser llamados también.
Entonces, para alguien que no conoce su archivo de ant, ella puede realizar la prueba de hormigas como se espera.
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="test">
<echo message="do foo"/>
<ant antfile="../build-common-portlet.xml" target="test"/>
</target>
</project>
Tengo un proyecto que utiliza un archivo ant padre
similar a ésto:
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="test">
<echo message="do foo"/>
RUN TEST FROM PARENT HERE
</target>
</project>
ahora quiero anular el objetivo de la prueba principal de esta manera:
- hacer un poco de copia de los frascos necesarios
- ejecutar el objetivo de prueba desde el archivo principal
la primera parte no es un problema, pero no veo una manera de llamar a la prueba desde el archivo principal
También quiero que el objetivo se denomine prueba, para que CI pueda simplemente ejecutar el objetivo de prueba.
¿hay una manera de llamar a prueba en ../build-common-portlet.xml?
La forma más sencilla es utilizar la dependencia en la prueba de los padres.
Para eso es importante que mantenga el atributo de <project>
sincronizado con su nombre de archivo (OK, eso no es, estrictamente hablando, necesario, pero mejora en gran medida la legibilidad y el mantenimiento de su script).
Así que en build-common-portlet.xml:
<project
name="build-common-portlet" <-- note the name
...
>
<target name="test">
<echo message="Calling parent test target"/>
...
</target>
</project>
De esa manera puedes simplemente hacer:
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="test"
depends="build-common-portlet.test" <-- note parent specification
>
<echo message="do foo"/>
RUN TEST FROM PARENT HERE
</target>
</project>
>> En respuesta al comentario
Si desea realizar algún trabajo antes de ejecutar la prueba de los padres, simplemente cree un nuevo objetivo y ponga dependencia en ella antes de la prueba de los padres:
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="copy-jars">
<echo message="copying jars"/>
</target>
<target name="test"
depends="
copy-jars,
build-common-portlet.test
"
/>
</project>