5 Réponses :


11
votes

Vous devez supprimer le antcalls et ajouter do.first et do.second comme dépendances de do.several : xxx

Cela s'assurera , que configuration est uniquement appelé une seule fois: xxx

documentation dit pourquoi une propriété définie dans la configuration ne fonctionne pas avec AntCall:

La cible appelée (s) est exécutée dans un nouveau projet; Sachez que cela signifie que les propriétés, les références, etc. définies par les cibles appelées ne persisteront pas le projet d'appel.


1 commentaires

! Pour vous débarrasser du . Donne David Sad ... 99% du temps, n'est pas seulement inutile, mais détruit également l'efficacité du système de construction. Les développeurs aiment utiliser car ils sont utilisés pour contrôler l'ordre d'exécution. Un fichier de build.xml. Nous avions appelé chaque dépendance au moins 14 fois. La fourmi est une langue de dépendance matricielle. Vous devriez simplement indiquer les dépendances pour chaque tâche et laisser les fourgonner à la commande.



1
votes

Voir la différence, entre Inclure et importation dans le manuel de fourmis. Utilisez également macrodefs .

J'ai légèrement adapté votre exemple, vous aurez besoin de plusieurs fichiers: build.xml, commun.xml et macrodef_project_setup.xml

build.xml xxx

common.xml < / strong> xxx

macrodef xxx

Sortie: xxx

cible par défaut est maintenant init. xxx

mais tu pouvais encore Utilisez la configuration des fourmis. xxx

exécutez-le avec do.several. xxx < / p>


1 commentaires

Merci, Dean. C'est très impressionnant. Je regarderai en effet inclure, importer et macrodef plus en détail. Merci.



3
votes

Une alternative aux réponses que vous avez déjà reçues est de créer un conteneur de tâches personnalisé qui veille à ne pas répéter une action. J'ai une telle tâche personnalisée dans Mon antlib personnel , mais il y a une charge entière de D'autres jonques là-bas que vous ne voulez probablement pas, alors peut-être que vous pourriez peut-être copier La source et l'ajoutez à votre propre projet. Il ressemble à quelque chose comme ceci: xxx


2 commentaires

Merci, dan. Je n'étais pas au courant qu'un taskontainer personnalisé était une possibilité. Il est clair que j'ai plus de lecture à faire.


Grand travail Dan! J'ai hâte d'essayer de sortir de quelques minutes avec Ivy, Hudson et surtout en utilisant les tâches Maven-Ant - rend la construction, le déploiement, le test beaucoup plus facile. Merci.



2
votes

Les cibles peuvent avoir un élément "Sauf si" qui ignorera la cible si la propriété référencée par "Sauf si" est défini.


0 commentaires

9
votes

Je voudrais juste ajouter un autre moyen possible de le faire. XXX

De cette façon, vous ne l'exécutez qu'une seule fois et définissez instantanément le drapeau qu'il a déjà été exécuté une fois. De plus, il ne casse pas la partie "dépend" de votre code, car elle ne gère que des cibles si elles sont possibles / nécessaires, mais cela ne casse pas l'exécution de la cible dépendante cible.

Il s'agit également de la moindre quantité de changement dans vos scripts.

EDIT: L'explication du "ne casse pas la partie dépend":

si "fourmi do.first do.seconde 'est invoquée, il entraîne une configuration appelée deux fois même avec toutes les cibles à l'aide d'une configuration comme une dépendance. Ce serait un problème si la configuration fait des choses comme clonant un représentant ou une autre opération de consommation de temps. Cette approche fonctionne pour les deux cas - c'est-à-dire «ant do.several» ou «fourmi do.first do.seconde».


0 commentaires