У меня есть набор целей, каждый из которых делает по существу одно и то же, кроме каждого, содержит конкретный patternset, на котором выполняются его задачи. Я хочу свернуть эти цели в одну «повторно используемую» цель, которая вместо этого принимает набор файлов «как параметр».Атрибут refet файла набора/шаблона не расширен. Как бы вы написали цель, которая работает с произвольным набором файлов?
Например, это
<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 потому patternsets и наборы файлов отличаются от свойств. В этом нерабочем коде, когда вызывается echo
, его элемент patternset
ссылается на шаблонный набор буквально с именем $ {sourcefiles} вместо имени test.
Как написать повторно используемый NAnt-объект, который работает с различным набором файлов? Есть ли способ сделать это в NAnt as-is, не прибегая к написанию пользовательских задач?
Вторая ссылка не указывает на отправку электронной почты nant-dev, а на документацию NAnt шаблонов. –
Спасибо, фиксированная ссылка. – Kit