Transmettez la cible ant à plusieurs fichiers build.xml dans des sous-répertoires

StackOverflow https://stackoverflow.com/questions/819568

  •  03-07-2019
  •  | 
  •  

Question

J'ai un projet avec plusieurs modules, chacun dans son propre répertoire. Chaque module a son propre fichier de compilation ant (build.xml)

Dans le répertoire racine, j'ai configuré un fichier de construction général qui appelle le fichier de construction de chaque module dans le bon ordre.

<?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>

Chaque module possède également un "nettoyage". cible, alors j'ajoute ces lignes:

 <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>

Et il y a plus de cibles comme ça. Y at-il un moyen de réécrire le fichier de construction pour éviter cette duplication? J'ai cherché une propriété intégrée contenant la cible active, mais je ne l'ai pas trouvée.

Était-ce utile?

La solution

Pourquoi ne pas utiliser antcall pour appeler une cible qui référence tous vos sous-répertoires, et paramétrer la cible à appeler. par exemple

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

et ensuite:

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

donc cela vous permet de paramétrer les appels de vos sous-répertoires. Si vous ajoutez un nouveau sous-répertoire, il vous suffit d'ajouter ce sous-répertoire à la cible 'doStuffToSubdirs' (je le renommerais également!)

Autres conseils

Placez une cible propre dans votre fichier commonbuild.xml et dans les fichiers enfants, importez simplement votre fichier build.xml parent

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

Vous pourrez désormais appeler la cible propre dans vos versions enfant. Vous pouvez également remplacer cette cible en créant une cible propre dans n’importe laquelle de vos générations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top