2008-11-11 9 views
6

In Ant ist es eine Möglichkeit, so etwas zu tun:eine Ant-Argument-Liste in eine Eigenschaft Kopieren

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

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

Ich versuche, ein Makro für psexec zu schreiben, und ich bin für eine nette Art und Weise der Suche nach Übergeben Sie die Argumentliste.

Ich weiß, dass Sie etwas ähnliches mit CLASSPATHs ...

Dank tun können!

Antwort

9

Ich weiß keine Antwort auf Ihre spezifische Frage. Die Dokumentation ist klar, dass refid 'nur zu vernünftigen Ergebnissen für Referenzen auf PATH wie Strukturen oder Eigenschaften führt.'

Ohne ein bisschen mehr Informationen über das, was Sie versuchen, ist es schwer zu kommentieren. Auf die Gefahr des Designs zu ändern, anstatt Ihre Frage zu beantworten, schlage ich vor:

1) Sie können die Argumentliste übergeben als eine Linie von exec:

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

Welche example.exe laufen:

example.exe arg1 arg2 

2) ich gehe in Argumente zu Makros, die externe Anwendungen wie diese nennen:

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

Dies wird beispiel.exe laufen lassen:

example.exe somearg arg1 arg2 

Ich hoffe, ich habe nicht meine Großmutter unterrichtet, Eier hier zu saugen.

+0

Das zweite Beispiel ist, was ich suchte. Vielen Dank! :) –

+0

Sollen die Elemente im Block nicht "args" (Plural, nicht Singular) heißen wie der Elementparameter zum MacroDef? –

+0

Ken, wenn du im zweiten Beispiel meinst, dann nein. Da args implizit ist, müssen Sie es nicht benennen. Alle Elemente, die Sie nicht explizit einem Element zuordnen, werden als Teil von Argumenten betrachtet. Ich werde die Lösung bearbeiten, um verschiedene Namen zu verwenden, um Verwirrung zu vermeiden. –