gpt4 book ai didi

properties - 文件集/模式集的 refid 属性未展开。您将如何编写一个对任意文件集进行操作的目标?

转载 作者:行者123 更新时间:2023-12-03 16:47:19 28 4
gpt4 key购买 nike

我有一组目标,每个目标基本上做同样的事情,除了每个包含一个特定的 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 email posting 中的回答那样展开。因为模式集和文件集不同于属性。在这个非工作代码中,当 echo 被调用时,它的 patternset 元素引用一个字面上名为 ${sourcefiles} 的模式集,而不是名为测试

如何编写一个可重复使用的 NAnt 目标来操作一组不同的文件?有没有办法在 NAnt 中按原样执行此操作而无需编写自定义任务?

最佳答案

我终于想到了这个,这符合我的目的。作为奖励,这还演示了动态调用目标。

<project
name="dynamic-fileset"
default="use"
xmlns="http://nant.sourceforge.net/release/0.86-beta1/nant.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<target name="configs">
<fileset id="files">
<include name="*.config"/>
</fileset>
</target>

<target name="xmls">
<fileset id="files">
<include name="*.xml"/>
</fileset>
</target>

<target name="echo">
<foreach item="File" property="fn">
<in>
<items refid="files"/>
</in>
<do>
<echo message="${fn}" />
</do>
</foreach>
</target>

<target name="use">
<property name="grouplist" value="xmls,configs"/>
<foreach item="String" in="${grouplist}" delim="," property="filegroup">
<do>
<call target="${filegroup}"/>
<call target="echo"/>
</do>
</foreach>
</target>
</project>

关于properties - 文件集/模式集的 refid 属性未展开。您将如何编写一个对任意文件集进行操作的目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com