告诉cxf-codegen-plugin使用现有的生成类

时间:2017-03-16 10:54:38

标签: java web-services maven xsd wsdl

我有一套XSD(A和B),它们对应的Java类是由maven-jaxb2-plugin生成的。 Java类在包P1中。

此外,我有一个WSDL,它使用XSD A和B中的某些类型。

但是,当我使用cxf-codegen-plugin从我的WSDL生成Java类时,它会在包P2中生成类型。

==> P1和P2中的类型严格相同。

我的问题是:如何告诉cxf-codegen-plugin使用现有的包P1?

谢谢!

Hejk

1 个答案:

答案 0 :(得分:-1)

我把我的pom配置。如果您查看我指定包的部分,您将找到我添加的两个配置。第一个是:

<packagename>http://www.schema.org/something=info.package.p1</packagename>

这意味着在将xsd编译为java类时,所有具有架构 http://www.schema.org/something 的文件都将存储在 info.package.p1 包中。下面的另一个配置意味着如果xsd文件不属于第一个模式,它们将存储到默认包 info.package.p2 中。您可以为每个模式单独全局配置。

当然我有两个软件包但您可以在pom文件配置中指定将所有文件放在同一个软件包中。

绑定文件是可选的。

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>3.1.7</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>src/main/java</sourceRoot>
                <wsdlRoot>${basedir}/src/main/resources/wsdl/</wsdlRoot>
                    <includes>
                        <include>*your.wsdl</include>
                    </includes>
                    <wsdlOptions>
                        <wsdlOption>
                            <wsdl>${basedir}/src/main/resources/wsdl/your.wsdl</wsdl>
                            <packagenames>
                                <packagename>http://www.schema.org/something=info.package.p1</packagename>
                                <packagename>info.package.p2</packagename>
                            </packagenames>
                            <bindingFiles>
                                <bindingFile>${basedir}/src/main/resources/bindingFile.xjb</bindingFile>
                            </bindingFiles>
                        </wsdlOption>
                    </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>