生成的 cxf 的不同源根 类

Different source roots for cxf generated classes

我有以下问题。有一些 wsdl 文件应该被转换成 java 类。

<plugin>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-codegen-plugin</artifactId>
        <version>${cxf.version}</version>
        <executions>
            <execution>
                <id>generate-sources</id>
                <phase>generate-sources</phase>
                <configuration>
                    <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                    <wsdlOptions>
                        <wsdlOption>
                            <wsdl>${basedir}/src/main/resources/wsdl/configurationAndSecurityService.wsdl</wsdl>
                        </wsdlOption>
                        <wsdlOption>
                            <wsdl>${basedir}/src/main/resources/wsdl/ordersService.wsdl</wsdl>
                        </wsdlOption>
                    </wsdlOptions>
                </configuration>
                <goals>
                    <goal>wsdl2java</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

问题是当 wsdls 被转换成 java 类 时,我收到一条关于重复项的错误消息(一些 类 具有相同的名称)。最初,我想将每个 wsdl 放入其自己的源根目录(子包)中,但我不知道该怎么做。有什么方法可以将每个 wsdl 绑定到它自己的源根目录吗?

您需要将其拆分为具有不同 sourceRoot 的多个执行,但这也可能导致类路径冲突。

我通常为每个 wsdlOption 分配不同的包名:

  <packagenames>
    <packagename>
      https://www.namespace.de=de.namespace1
    </packagename>
  </packagenames>

另请参阅:http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html