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

发布于 2024-07-08 10:01:25 字数 307 浏览 8 评论 0原文

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

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

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

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

我知道您可以对类路径执行类似的操作...

谢谢!

In Ant is there any way to do something like this:

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

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

I'm trying to write a macro for psexec and I'm looking for a nice way to pass in the argument list.

I know that you can do something similar with classpaths...

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

慢慢从新开始 2024-07-15 10:01:25

我不知道你的具体问题的答案。 该文档清楚地表明 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

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

I don't know of an answer to your specific question. The documentation is clear that refid 'Only yields reasonable results for references to PATH like structures or properties.'

Without a bit more information on what you're trying to do, it's hard to comment. At the risk of changing your design, rather than answering your question, I suggest:

1) You can pass the argument list to exec as a line:

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

Which will run example.exe:

example.exe arg1 arg2

2) I pass in arguments to macros that call external apps like this:

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

This will run example.exe:

example.exe somearg arg1 arg2

I hope I haven't been teaching my grandmother to suck eggs here.

删除→记忆 2024-07-15 10:01:25

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

还有查找任务: ...。 这允许您创建一个列表。

Did you know about Ant-Contrib Tasks For and ForEach :
http://ant-contrib.sourceforge.net/tasks/tasks/for.html

There is also find task : <find ... delimiter=""/> ... </find>. This allow you to create a list.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文