你能强制JAXB2 Maven插件从“空”元素创建一个Java类吗?

时间:2018-05-24 13:32:13

标签: java xsd jaxb2-maven-plugin

我有一个带有以下元素的XSD Schema:

<xs:element name="FooResponse" type="commonTypes:Response" />

当我运行构建(具有xjc目标以将架构转换为Java源代码)时,不会创建单独的类文件FooResponse.java(可能因为它与{{1}相同现在,我知道我可以像这样重写架构:

Response.java

并获得我正在寻找的结果。但是,架构是从工具自动生成的,我宁愿不必手动触摸它。有没有办法在这种情况下配置插件来创建源文件?

我需要同时创建<xs:element name="FooResponse"> <xs:complexType> <xs:complexContent> <xs:extension base="commonTypes:Request"/> </xs:complexContent> </xs:complexType> </xs:element> Response.java,因为还有其他与FooResponse.java无关的类型需要从中继承。

我尝试像这样创建一个XJB绑定文件:

FooResponse

这是因为我得到了<jaxb:bindings version="2.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <jaxb:bindings schemaLocation="my_schema.xsd" node="/xs:schema/xs:element[@name='FooResponse']"> <jaxb:class name="FooResponse"/> </jaxb:bindings> </jaxb:bindings> Response.java,但FooResponse.java的内容并不完全符合我的要求:

FooResponse

如果我直接扩展public class FooResponse extends JAXBElement<Response> { protected final static QName NAME = new QName("initech.com/c/m", "FooResponse"); public FooResponse(Response value) { super(NAME, ((Class) Response.class), null, value); } public FooResponse() { super(NAME, ((Class) Response.class), null, null); } } 而不将其包装到Response中,这就是我想要的。

0 个答案:

没有答案