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"/>
Другие вопросы по тегам