文件集/模式集的 refid 属性未扩展。您将如何编写一个对任意文件集进行操作的目标?
我有一组目标,每个目标基本上执行相同的操作,除了每个目标都包含特定的 patternset 来执行其任务。我想将这些目标折叠成单个“可重用”目标,该目标将一组文件“作为参数”。
例如,这
<target name="echo1">
<foreach item="File" property="fn">
<in>
<items>
<include name="*.config"/>
</items>
</in>
<do>
<echo message="${fn}" />
</do>
</foreach>
</target>
<target name="echo2">
<foreach item="File" property="fn">
<in>
<items>
<include name="*.xml"/>
</items>
</in>
<do>
<echo message="${fn}" />
</do>
</foreach>
</target>
<target name="use">
<call target="echo1"/>
<call target="echo2"/>
</target>
将被替换为
<patternset id="configs">
<include name="*.config"/>
</patternset>
<patternset id="xmls">
<include name="*.xml"/>
</patternset>
<target name="echo">
<foreach item="File" property="fn">
<in>
<items>
<patternset refid="${sourcefiles}"/>
</items>
</in>
<do>
<echo message="${fn}" />
</do>
</foreach>
</target>
<target name="use">
<property name="sourcefiles" value="configs"/>
<call target="echo"/>
<property name="sourcefiles" value="xmls"/>
<call target="echo"/>
</target>
但是,事实证明 refid
没有按照 nant-dev 电子邮件发布,因为模式集和文件集与属性不同。在此非工作代码中,当调用 echo
时,其 patternset
元素引用字面上名为 ${sourcefiles} 的模式集,而不是名为测试。
如何编写一个可重用的 NAnt 目标来运行一组不同的文件?有没有办法在 NAnt 中按原样执行此操作,而无需编写自定义任务?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我终于想出了这个,这符合我的目的。作为奖励,这还演示了动态调用目标。
I finally came up with this, which serves my purposes. As a bonus, this also demonstrates calling a target dynamically.
我不确定我完全理解您想要实现的目标,但不应该将 dynamic 属性/tasks/property.html" rel="nofollow">任务
property
完成这项工作吗?I'm not sure I completely understood what You're trying to achieve, but shouldn't attribute
dynamic
of taskproperty
do the job?