生成的类的自定义包名称 axis2-wsdl2code-maven-plugin



在尝试了解wsdl2java插件的工作原理之后,我了解到在pom的配置中,我们指定了将从wsdl生成骨架的包名称。

<goals>
<goal>wsdl2code</goal>
</goals>
<configuration>
<packageName>com.a.b.c.d</packageName>
<wsdlFile>${project.build.directory}/../src/main/webapp/WEB-INF/c/d/META-INF/wsdlfile.wsdl</wsdlFile>
</configuration>

至于类,WSDL 文件导入 xsd 命名空间,并且类在两个将命名空间作为名称的包中生成。 第一个是命名空间/公共,第二个是命名空间/类型

<wsdl:definitions xmlns:ns="http://a.b.c.d.com" xmlns:ns3="http://a.b.c.d.com/types" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://a.b.c.d.com">
<wsdl:types>
<xs:schema xmlns:stn_51="http://a.b.c.d.com/publics" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:types="http://a.b.c.d.com/types" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://a.b.c.d.com/types">
<xs:import namespace="http://a.b.c.d.com/publics" schemaLocation="xsd0.xsd" />

问题是包名称与另一个模块中的包名称相同,这会导致混淆。 wsdl2java 中是否有解决此问题的选项? 或者有没有办法使用 wsdl 解决这个问题?

所以我必须通过查看wsdl2code的文档来解决这个问题,我在其中找到了这个标签:命名空间URL。它允许您指定命名空间列表,每个命名空间都有一个特定的包名称。下面是如何在 POM 中使用它的示例。

<execution>
<id>...</id>
<goals>
<goal>wsdl2code</goal>
</goals>
<configuration>
<namespaceURIs>
<namespaceURI>
<uri>http://a.b.c.d.com/publics</uri>
<packageName>com.d.c.b.a.service-a.publics</packageName>
</namespaceURI>
</namespaceURIs>
<packageName>com.d.c.b.a.service-a</packageName>
<wsdlFile>...</wsdlFile>
</configuration>
</execution>

相关内容

  • 没有找到相关文章

最新更新