Java 如何在特定元素的jaxb生成期间继承超类?
我有以下Java 如何在特定元素的jaxb生成期间继承超类?,java,xml,maven,inheritance,jaxb,Java,Xml,Maven,Inheritance,Jaxb,我有以下xsd模式,并希望生成的文件从超类扩展: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="myRequest"> <xs:complexType> ... </xs:complexType>
xsd
模式,并希望生成的文件从超类扩展:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="myRequest">
<xs:complexType>
...
</xs:complexType>
</xs:element>
</xs:schema>
public class MyMessage {
private String sessionID;
//getter, setter
}
mvn生成源的结果
:该类未被继承。但我没有错。为什么?您可以使用JAXB2继承插件(它允许实现接口或类的扩展)
它需要根据处于全局绑定之下,但是xsd中的任何元素都将获得超类。我只想要一个特定的
xs:element[@name='myRequest']
。是的。但是,正如文档所述,它需要在全局绑定中。我不认为你每节课都能做到。这真的是个坏消息,但也许你是对的,这是不可能的。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-ts:${maven.cxf-xjc-ts.plugin}</extension>
<extension>org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<!-- Global configuration for all xsd autogenerated resources. default ws location is: src/main/resources/xsd -->
<configuration>
<sourceRoot>${project.build.directory}/generated/src/main/java</sourceRoot>
<xsdOptions>
<xsdOption>
<xsdDir>${project.basedir}/src/main/resources/xsd</xsdDir>
<bindingFile>${project.basedir}/src/main/resources/my-binding.xml</bindingFile>
<extensionArgs>
<extensionArg>-mark-generated</extensionArg>
<extensionArg>-Xts</extensionArg>
<extensionArg>-extension</extensionArg>
<extensionArg>-Xinheritance</extensionArg>
</extensionArgs>
</xsdOption>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version>0.11.0</version>
</dependency>
</dependencies>
</configuration>
<goals>
<goal>xsdtojava</goal>
</goals>
</execution>
</executions>
</plugin>
public class MyMessage {
private String sessionID;
//getter, setter
}