7

我目前正在为 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。

在此先感谢您的帮助!

4

0 回答 0