生成されたフラグメントは有効な XML ファイルではない (結局はフラグメントである) ため、XSLT を直接使用することはできません。一方、する必要はありません。これは、必要なものを正確に提供する簡単なトリックです。
web.xml ファイルで、要素と要素<!-- @JSPS_MAP@ -->
の間に XML コメントを挿入します。<servlet>
<servlet-mapping>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>my.servlets.MyServlet</servlet-class>
<servlet>
<!-- @JSPS_MAP@ -->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/my-servlet</url-pattern>
</servlet-mapping>
次に、トークン フィルターを使用して、@JSPS_MAP@
タグを生成されたコンテンツに置き換えます。
<loadfile
property="generated.web.xml.fragment"
srcFile="${generated.fragment.file}"
/>
<copy file="${orig-web-content.dir}/WEB-INF/web.xml"
toFile="${generated-web-content.dir}/WEB-INF/web.xml"
>
<filterset>
<filter token="JSPS_MAP"
value=" --> ${generated.web.xml.fragment} <!-- "
/>
</filterset>
</copy>
このアプローチには、元の web.xml ファイルが完全に有効であるという利点があります (コメント内にタグが隠されています) が、生成されたフラグメントが挿入される場所とタイミングを完全に制御できます。
したがって、DEV ビルドの場合は、フィルタリングせずにコピー${orig-web-content.dir}/WEB-INF/web.xml
するだけです。${generated-web-content.dir}/WEB-INF/web.xml