Поскольку сгенерированный фрагмент не является допустимым XML-файлом (в конце концов, это фрагмент), невозможно использовать XSLT напрямую. С другой стороны, вам не нужно. Вот простой трюк, который даст вам именно то, что вам нужно.
В вашем файле web.xml вставьте XML-комментарий <!-- @JSPS_MAP@ -->
между <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
без фильтрации.