下面是我运行的完整ant目标,用于将驱动程序插入我的wildfly standalone.xml:
class JobNotifier < ApplicationMailer
def send_post_email(job, email)
@jobs = job
mail(:to => email :subject => 'New job posted on FarFlungJobs')
end
end
根据我的理解,只有当条目尚未存在时才应在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>
。
但显然它正在为oracle驱动程序创建一个额外的unless="modelexists"
的新条目,它会生成两个oracle条目,这会导致我的构建失败。
如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
要解决带有附加xmlns=""
的oracle驱动程序的新条目的问题,您必须为CDATA部分中的节点driver
提供名称空间(在xml的根元素中找到) :
<driver xmlns="namespace_for_this_xml" name="oracle" module="com.oracle.ojdbc6">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
答案 1 :(得分:0)
我猜测standalone.xml
文件与JBoss有关。 JBoss standalone.xml
中的XML元素位于XML名称空间中。因此,嵌套在<copy>
下的<xmltask>
元素需要是名称空间感知的:
<copy path="//*[local-name()='driver' and @module='com.oracle.ojdbc6']/text()" property="modelexists"/>