J'ai un système de construction où la plupart des composants sont exactement les mêmes, donc je l'ai modifié pour utiliser 'import' sur un fichier commun pour la plupart des tâches de construction. Ensuite, le système de construction doit également construire tous les modules dont il dépend. J'ai donc à peu près ...Imports imbriqués dans Ant
common.xml
project1.xml
- import common.xml
project2.xml
- include project1.xml
- import common.xml
Il y a une cible nommée 'build' dans common.xml. Je veux que project2 puisse inclure project1 et utiliser le point d'extension pour placer une dépendance sur la cible de construction. Mais pour une raison quelconque, il ne reconnaît pas que project1 a une cible de construction. Si je le change pour dépendre d'une cible définie dans project1.xml, alors ça va. Mais je dois être capable de spécifier une cible qui est en common.xml.
Y a-t-il un moyen de le faire?
Pas de fourmi-contrib. Le projet avait l'habitude de l'utiliser, mais j'essaie de m'en débarrasser pour ne pas avoir un code de système horrible, procédural. Le projet a de nombreux cas de dépendances qui ressemblent à un diamant et un graphique de dépendance approprié (celui que la fourmi génère automatiquement) aiderait grandement. J'ai donc créé quelques fichiers simples pour illustrer mon problème.
<project name="top" default="build">
<include file="mid.xml" as="mid" />
<target name="build">
<antcall target="mid.build" />
</target>
</project>
<project name="mid" default="build">
<!-- <target name="build"> -->
<!-- <echo message="build mid" /> -->
<!-- </target> -->
<import file="common.xml" />
</project>
<project name="common">
<target name="build">
<echo message="build common" />
</target>
</project>
Échec. top.xml ne peut pas trouver mid.build. Quand je lance ant -p pour lister les cibles, il affiche build et common.build. J'ai donc essayé d'ajouter dans le fichier de construction mid.xml et je l'ai eu pour construire correctement. Le seul problème est maintenant que si je décommente le XML ci-dessus pour mid pour définir sa propre étape de construction, il est écrasé par l'importation et ignoré. Donc ça finit par devenir [build, common.build] au lieu de [build, mid.build].