У меня есть набор целей, каждая из которых делает по существу одно и то же, за исключением того, что каждая содержит определенный набор паттернов , для которого нужно выполнить свои задачи. Я хочу свернуть эти цели в одну «повторно используемую» цель, которая вместо этого принимает набор файлов «в качестве параметра».
Например, это
<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} вместо набора с именем test .
Как можно написать повторно используемую цель NAnt, которая работает с различным набором файлов? Есть ли способ сделать это в NAnt как есть, не прибегая к написанию пользовательских задач?