それぞれがタスクを実行するための特定のパターンセットを含んでいることを除いて、それぞれが本質的に同じことを行う一連のターゲットがあります。これらのターゲットを単一の「再利用可能な」ターゲットに集約し、代わりに「パラメーターとして」ファイルのセットを取得したいと思います。
たとえば、これ
<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>
ただし、パターンセットとファイルセットはプロパティとは異なるため、 nant-devの電子メール投稿refid
で回答されたように拡張されていないことがわかりました。この機能しないコードでは、が呼び出されると、その要素はtestという名前のパターンではなく、文字通り${sourcefiles}という名前のパターンセットを参照します。echo
patternset
さまざまなファイルのセットで動作する再利用可能なNAntターゲットをどのように作成しますか?カスタムタスクを作成せずに、NAntでこれをそのまま行う方法はありますか?