我有一套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
答案 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>