将Ant参数列表复制到属性中

时间:2008-11-11 23:34:12

标签: ant psexec

在Ant中有任何方法可以做这样的事情:

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

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

我正在尝试为psexec编写一个宏,我正在寻找一种传递参数列表的好方法。

我知道你可以用classpaths做类似的事情......

谢谢!

2 个答案:

答案 0 :(得分:9)

我不知道您具体问题的答案。文档很清楚,refid'仅为结构或属性的PATH引用产生合理的结果。'

如果没有更多关于你要做什么的信息,很难发表评论。有可能改变你的设计,而不是回答你的问题,我建议:

1)您可以将参数列表作为一行传递给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"/>

将运行example.exe:

example.exe arg1 arg2

2)我将参数传递给调用外部应用程序的宏:

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

这将运行example.exe:

example.exe somearg arg1 arg2

我希望我没有教过我的祖母在这里吮鸡蛋。

答案 1 :(得分:0)

您是否了解Ant-Contrib任务For For ForEach: http://ant-contrib.sourceforge.net/tasks/tasks/for.html

还有找到任务:<find ... delimiter=""/> ... </find>。这允许您创建列表。