6

在 Ant 中有没有办法做这样的事情:

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

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

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

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

谢谢!

4

2 回答 2

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

我希望我没有教祖母在这里吸鸡蛋。

于 2008-11-12T00:01:53.993 回答
0

你知道 Ant-Contrib 任务 For 和 ForEach 吗: http://ant-contrib.sourceforge.net/tasks/tasks/for.html

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

于 2011-11-29T14:14:44.233 回答