hyperjaxb xsd ファイルとバインディング構成があります。生成されたクラスに、別のアーティファクトで宣言されたカスタム インターフェイスを強制的に実装するにはどうすればよいですか? を使用して別のクラスを拡張できることを知っています
<xjc:superClass name="com.sample.jpa.entities.BaseEntity"/>
しかし、別のインターフェースも実装する必要があります。どうすればそれを達成できますか?
免責事項: HyperjaxbおよびJAXB2-Basicsの著者はこちら。
JAXB2-BasicsのInheritance プラグインを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 の場合の依存関係であるため、おそらくここで他に何もする必要はありません。例を参照してください(注釈プラグインの場合ですが、それは問題ではありません)。
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>
それだけです。