xml - 生成类的自定义包名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命名空间,类生成在两个以命名空间为名称的package中。第一个是命名空间/公共,第二个命名空间/类型
<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 的文档来解决这个问题,在该文档中我发现了这个标签:NamespaceURLs。它允许您指定命名空间列表,每个命名空间都有一个特定的包名称。这是一个如何在 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>
推荐阅读
- android - android项目中的应用级kotlin函数
- python - 从图像中移除轮廓
- php - 无法在 Laravel 项目中从我的 Godaddy Webmail 发送电子邮件
- java - 通过二分搜索帮助递归(Java)
- magento - Magento 2 REST API 自定义订单状态端点?
- java - 来自 Intellij 的服务调用不通过 Fiddler
- regex - 使用 Select-String 匹配多个单行模式并写入输出
- java - java 11 的交互式 jvm 11 命令/CRaSH
- java - 如何为 Solaris+Java(使用 JAVA_HOME)创建 Docker 映像?
- apache-spark - 如何在 Windows Server 中设置 keytab 文件的路径,以便将 spark 提交到 YARN