【发布时间】:2014-09-24 11:44:46
【问题描述】:
我正在从 soap webservices wsdl 生成 java 类。
请求不共享一个公共接口,但我希望它们实现一个,或者扩展一个公共类。
因此我尝试使用xcj-plugin。声明
<extraarg>-xjc-XautoInheritance-xmlRootElementsImplement=com.path.to.BaseInterface</extraarg>
应该注意这一点,让所有@XmlRootElement注解的类自动实现定义的BaseInterface。
但是生成的类没有那个。没有类实现这个接口。为什么?以下配置可能有什么问题?
<build>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<wsdlOptions>
<extraargs>
<extraarg>-xjc-XautoInheritance-xmlRootElementsExtend=com.path.to.BaseClass</extraarg>
<extraarg>-xjc-XautoInheritance-xmlRootElementsImplement=com.path.to.BaseInterface</extraarg>
<extraarg>-fe</extraarg>
<extraarg>cxf</extraarg>
<extraarg>-mark-generated</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.2.10-b140310.1920</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.8.2</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version>0.8.2</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-jaxb-xjc</artifactId>
<version>2.2.4-1</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.1.10.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
【问题讨论】:
-
请尝试添加
-xjc-XautoInheritance来激活插件。 -
关于 CXF 的使用,另请参见:confluence.highsource.org/display/J2B/…
-
@lexicore 的道具,请将此作为答案添加,它有效!
标签: java jaxb cxf xjc cxf-xjc-plugin