我有一个hyperjaxb xsd文件和绑定配置。如何强制生成的类实现在另一个工件中声明的自定义接口?我知道我可以使用
让他们扩展另一个类 <xjc:superClass name="com.sample.jpa.entities.BaseEntity"/>
但我还需要它们来实现另一个接口。我怎样才能做到这一点?
答案 0 :(得分:1)
免责声明:此处Hyperjaxb和JAXB2-Basics的作者。
您可以使用Inheritance plugin中的JAXB2-Basics和Hyperjaxb。您既可以扩展类,也可以实现接口。该插件还可以处理泛型,因此您甚至可以执行<inheritance:implements>com.acme.foo.MyInterface<com.acme.foo.SomeClass></inheritance:implements>
等内容。
简短指南:
通过<arg>-Xinheritance</arg>
中的pom.xml
启用该插件。类似的东西:
<plugin>
<groupId>org.jvnet.hyperjaxb3</groupId>
<artifactId>maven-hyperjaxb3-plugin</artifactId>
<configuration>
<!--result>mappingFiles</result-->
<roundtripTestClassName>org.jvnet.hyperjaxb3.ejb.tests.cuone.RoundtripTest</roundtripTestClassName>
<args>
<arg>-Xinheritance</arg>
</args>
</configuration>
</plugin>
JAXB2-Basics是Hyperjaxb的依赖项,所以你很可能不需要在这里做任何其他事情。请参阅example(对于注释插件,但这无关紧要)。
使用inheritance:extends
或inheritance:implements
自定义元素自定义复杂类型。例如:
<jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
<jaxb:bindings node="xsd:complexType[@name='WillBeMadeCloneableType']">
<inheritance:implements>java.lang.Cloneable</inheritance:implements>
</jaxb:bindings>
</jaxb:bindings>
应该是它。