2016-06-21 13 views
1

Im Folgenden finden Sie die komplette ant Ziel, das ich den Treiber meiner Wildfly standalone.xml einfügen leite:Ant xmltask eine leere Xmlns Zugabe = „“

<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> 

Gemäß meinem Verständnis sollte der Eintrag gemacht werden in der Standalone.xml nur wenn es nicht schon vorhanden ist, da ich unless="modelexists" benutze.

Aber anscheinend macht es einen neuen Eintrag für Orakel-Treiber mit einem zusätzlichen xmlns="", die zwei Einträge von Oracle macht und dies bewirkt, dass mein Build fehlschlägt.

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

+0

können Sie die Frage Update mit ihm mit voller Aufgabe bearbeiten, in der oben Sie schien in pi zu setzen eces. Zeigen Sie auch das Eingabe-XML an, an dem Sie arbeiten. – Rao

Antwort

0

Ich vermute, die standalone.xml Datei ist mit JBoss verwandt. Die XML-Elemente in einem JBoss standalone.xml befinden sich in XML-Namespaces. Also, das <copy> Element unter <xmltask> verschachtelt werden muß Namespace-aware:

<copy path="//*[local-name()='driver' and @module='com.oracle.ojdbc6']/text()" property="modelexists"/> 
1

Um das Problem mit dem neuen Eintrag für Oracle-Treiber mit einer zusätzlichen xmlns="" Sie den Namensraum zur Verfügung stellen müssen lösen (im Wurzelelement gefunden im xml) für den Knoten driver im CDATA-Abschnitt:

<driver xmlns="namespace_for_this_xml" name="oracle" module="com.oracle.ojdbc6"> 
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class> 
</driver> 

Source