Pregunta

Tengo un proyecto con varios módulos, cada uno en su propio directorio. Cada módulo tiene su propio archivo de compilación ant (build.xml)

En el directorio raíz, he configurado un archivo de compilación general que llama al archivo de compilación de cada módulo en el orden correcto.

<?xml version="1.0"?>
<project name="bridgedb" default="all" basedir=".">
  <target name="all">
    <ant dir="corelib"/>
    <ant dir="tools"/>
    <ant dir="makeGdb"/>
    <ant dir="cytoscape-plugin"/>
  </target>
</project>

Ahora, cada módulo también tiene un " limpio " objetivo, así que agrego estas líneas:

 <target name="clean">
    <ant dir="corelib" target="clean"/>
    <ant dir="tools" target="clean"/>
    <ant dir="makeGdb" target="clean"/>
    <ant dir="cytoscape-plugin" target="clean"/>
  </target>

Y hay más objetivos así. ¿Hay una manera de volver a escribir el archivo de compilación para evitar esta duplicación? He buscado una propiedad incorporada que contiene el objetivo activo, pero no pude encontrarla.

¿Fue útil?

Solución

¿Por qué no usar antcall para llamar a un objetivo que haga referencia a todos sus subdirectorios, y parametrizar el objetivo a llamar. por ejemplo

 <antcall target="doStuffToSubdirs">
    <!-- let's clean -->
    <param name="param1" value="clean"/>
  </antcall>

y luego:

<target name="doStuffToSubdirs">
   <ant dir="corelib" target="${param1}"/>
   <ant dir="tools" target="${param1}"/>
    ...etc
</target>

por lo que esto le permite parametrizar las llamadas a sus subdirectorios. Si agrega un nuevo subdir, solo tiene que agregarlo al destino 'doStuffToSubdirs' (¡yo también cambiaría el nombre!)

Otros consejos

Coloque un destino limpio en su commonbuild.xml y en los archivos secundarios, solo importe su build.xml principal

<import file="${parent.dir}/commonbuild.xml" />

Ahora podrá llamar al objetivo limpio en las compilaciones de su hijo. También puede anular este objetivo creando un objetivo limpio en cualquiera de sus construcciones secundarias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top