Ant xmltask добавление пробела xmlns=""
Ниже приведена полная цель муравья, которую я запускаю для вставки драйвера в мой wildfly standalone.xml:
<target name="xmlrewrite" >
<!--Driver-->
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<xmltask source="standalone.xml" dest="standalone.xml" report="true">
<copy path="//driver[@module='com.oracle.ojdbc6']/text()" property="modelexists"/>
<insert
path="*[local-name()='server']/*[local-name()='profile']/*[local-name()='subsystem'][3]/*[local-name()='datasources']/*[local-name()='drivers']"
unless="modelexists">
<![CDATA[
<driver name="oracle" module="com.oracle.ojdbc6">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
]]>
</insert>
</xmltask>
</target>
Насколько я понимаю, запись должна быть сделана в standalone.xml, только если она еще не существует, так как я использую unless="modelexists"
,
Но, видимо, он делает новую запись для драйвера оракула с дополнительным xmlns=""
, что делает две записи оракула, и это приводит к сбою моей сборки.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
2 ответа
Чтобы решить проблему с новой записью для oracle driver с дополнительным xmlns=""
Вы должны предоставить пространство имен (находится в корневом элементе в XML) для узла driver
в разделе CDATA:
<driver xmlns="namespace_for_this_xml" name="oracle" module="com.oracle.ojdbc6">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
Я угадываю standalone.xml
Файл связан с JBoss. Элементы XML в JBoss standalone.xml
находятся в пространствах имен XML. Итак <copy>
элемент, вложенный в <xmltask>
нужно будет учитывать пространство имен:
<copy path="//*[local-name()='driver' and @module='com.oracle.ojdbc6']/text()" property="modelexists"/>