我目前正在为 Maven 使用 Apache CXF codegen 插件(版本 3.1.1)从我们的客户端提供的 WSDL 生成源代码。我指定了 wsdl2java 目标,并且我想为多个服务生成代码。我知道您可以<serviceName>
在<wsdlOption>
标签下指定 a ,但是当我尝试放置多个<serviceName>
,甚至<wsdlOption>
使用具有不同 的相同<wsdl>
值创建另一个时<serviceName>
,它似乎会忽略其中一个,而只为一项服务生成类。
我发现解决此问题的唯一方法是创建另一个相同<execution>
的块并更改<serviceName>
. 我做错了什么,或者这是唯一的方法吗?这是一个的整体设置<execution>
(为了隐私,路径和服务名称已更改):
<execution>
<id>generate-sources-a</id>
<phase>generate-sources</phase>
<configuration>
<encoding>UTF-8</encoding>
<defaultOptions>
<bindingFiles>
<bindingFile>binding.xjb</bindingFile>
</bindingFiles>
</defaultOptions>
<sourceRoot>${project.build.directory}/generated-sources</sourceRoot>
<wsdlRoot>${project.build.directory}/wsdl</wsdlRoot>
<includes>
<include>Path/To/WSDL/MyWSDL.wsdl</include>
</includes>
<wsdlOptions>
<wsdlOption>
<wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl>
<serviceName>ServiceA</serviceName>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
我已经尝试了这两个:
<wsdlOptions>
<wsdlOption>
<wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl>
<serviceName>ServiceA</serviceName>
<serviceName>ServiceB</serviceName>
</wsdlOption>
</wsdlOptions>
...还有这个(在此处的示例 4 中使用http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html):
<wsdlOptions>
<wsdlOption>
<wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl>
<serviceName>ServiceA</serviceName>
</wsdlOption>
<wsdlOption>
<wsdl>${project.build.directory}/wsdl/Path/To/WSDL/MyWSDL.wsdl</wsdl>
<serviceName>ServiceB</serviceName>
</wsdlOption>
</wsdlOptions>
**请注意,这些服务来自我们客户提供的同一个 WSDL。
在此先感谢您的帮助!