Dado que el fragmento generado no es un archivo XML válido (después de todo, es un fragmento), no es posible usar XSLT directamente. Por otro lado, no es necesario. Aquí hay un truco simple que le dará exactamente lo que necesita.
En su archivo web.xml, inserte el comentario XML <!-- @[email protected] -->
entre <servlet>
y <servlet-mapping>
elementos, p. Ej.
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>my.servlets.MyServlet</servlet-class>
<servlet>
<!-- @[email protected] -->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/my-servlet</url-pattern>
</servlet-mapping>
A continuación, utilice un filtro de contadores a reemplazar @[email protected]
la etiqueta con el contenido generado.
<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>
Este enfoque tiene la ventaja de que el archivo web.xml original es completamente válido (una etiqueta se esconde en el comentario), pero le da un control total de dónde y cuándo se va a insertar el fragmento generado.
Por lo tanto, para la compilación DEV, solo copie ${orig-web-content.dir}/WEB-INF/web.xml
en ${generated-web-content.dir}/WEB-INF/web.xml
sin filtrar.
Lo bueno es que me desplacé hacia abajo, esto era exactamente lo que estaba buscando. OP debería considerar cambiar la respuesta aceptada. Para responder a su pregunta, la fusión fue limpia en mi caso. Pone todo entre limpias '' comentarios. –