2008-11-11 7 views
6

Dans Ant est-il possible de faire quelque chose comme ceci:Copier une liste d'arguments Ant dans une propriété

<arguments id="arg-list"> 
    <arg value="arg1" /> 
    <arg value="arg2" /> 
</arguments> 

<property name="prop1" refid="arg-list" /> 

Je suis en train d'écrire une macro pour psexec et je suis à la recherche d'une belle façon passer dans la liste des arguments.

Je sais que vous pouvez faire quelque chose de similaire avec classpaths ...

Merci!

Répondre

9

Je ne connais pas de réponse à votre question spécifique. La documentation est claire que refid 'ne donne que des résultats raisonnables pour les références aux structures ou propriétés similaires à PATH.'

Sans un peu plus d'informations sur ce que vous essayez de faire, il est difficile de commenter. Au risque de changer votre conception, plutôt que de répondre à votre question, je vous propose:

1) Vous pouvez transmettre la liste des arguments à exec en ligne:

<macrodef name="example"> 
    <attribute name="args"/> 
    <sequential> 
    <exec executable="example.exe"> 
     <arg value="somearg" /> 
     <arg line="@{args}"/> 
    </exec> 
    </sequential> 
</macrodef> 

<example args="somearg arg1 arg2"/> 

qui se déroulera exemple.exe:

example.exe arg1 arg2 

2) Je passe dans les arguments aux macros qui appellent des applications externes comme ceci:

<macrodef name="example"> 
    <element name="params" optional="yes" implicit="yes"/> 
    <sequential> 
    <exec taskname="eg" executable="example.exe"> 
     <arg value="somearg" /> 
     <params /> 
    </exec> 
    </sequential> 
</macrodef> 

<example> 
    <arg value="arg1"/> 
    <arg value="arg2"/> 
</example> 

Ceci exécutera example.exe:

example.exe somearg arg1 arg2 

J'espère que je n'ai pas enseigné à ma grand-mère à sucer des oeufs ici.

+0

Le deuxième exemple est ce que je recherchais. Merci! :) –

+0

Les éléments du bloc ne devraient-ils pas être nommés "args" (pluriel, non singulier) comme le paramètre element du MacroDef? –

+0

Ken, si vous voulez dire dans le deuxième exemple, alors non. Comme les arguments sont implicites, vous n'avez pas à le nommer. Tous les éléments que vous avez ajoutés et qui ne sont pas explicitement associés à un élément sont supposés faire partie des arguments. Je vais modifier la solution pour utiliser des noms différents, pour éviter toute confusion. –

Questions connexes