次のようなantconcat
ルールを使用します。
<concat destfile="/some/final/services.xml" fixlastline="yes">
<file file="/first/services.xml" />
<file file="/second/services.xml" />
<filterchain><tokenfilter>
<filetokenizer />
<replaceregex
pattern="</serviceGroup>.+?<serviceGroup>"
flags="gs" />
<replaceregex
pattern="first.default.service.class"
replace="first.actual.service.class" />
<replaceregex
pattern="second.default.service.class"
replace="second.actual.service.class" />
</tokenfilter></filterchain>
</concat>
<file...>
これにより、ソース ファイル (2 つの要素) が宛先ファイル (destfile
属性)に連結されます。この<filterchain>
セクションでは、連結中にテキストを変更できます。1つ目は、2 つのファイルが連結されているポイントからタグをreplaceregex
削除します。</servicegroup><servicegroup>
他のreplaceregex
エントリを使用して、サービス実装クラスの名前を変更したり、サービス ライフサイクル クラス エントリを追加したり、その他の変更を行うことができます。
一部のプロジェクトでは、元のservices.xml
ファイルがファイル システムに直接保存されるのではなく、zipfile または jarfile 内に保存されます。そのためには、<zipentry...>
要素ではなく要素を使用します<file...>
。
<zipentry zipfile="/some/jarfile.jar" name="resources/services.xml"/>