2016-04-19 8 views
0

私はmaven-jaxb2-pluginを使ってequalshashCodeのメソッドを生成しています。maven-jaxb2-plugin:自分のEqualsStrategyの使い方

JAXBEqualsStrategyJAXBHashCodeStrategyから派生した独自の戦略を実装しました。

デフォルトのプラグインではなく、それらの戦略を使用するようにプラグインに指示する方法はありますか?

など。

<arg>-Xequals=my.own.EqualsStrategy</arg> 

答えて

0

のような構成を介して、あなたは、ほぼ正しかった:

<build> 
    <defaultGoal>test</defaultGoal> 
    <plugins> 
     <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <configuration> 
       <extension>true</extension> 
       <args> 
        <arg>-XtoString</arg> 
        <arg>-Xequals</arg> 
        <arg>-Xequals-equalsStrategyClass=my.own.EqualsStrategy</arg> 
        <arg>-XhashCode</arg> 
        <arg>-XhashCode-hashCodeStrategyClass=my.own.HashCodeStrategy</arg> 
       </args> 
       <plugins> 
        <plugin> 
         <groupId>org.jvnet.jaxb2_commons</groupId> 
         <artifactId>jaxb2-basics</artifactId> 
        </plugin> 
       </plugins> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

あなたの戦略は、(彼らは通常あるべき)ステートレスであれば、あなたは戦略クラス内のpublic static final INSTANCEフィールドとしてシングルトンインスタンスを作成することができます。 configuration/plugins/pluginという戦略でJARを組み込むことができます(XJCクラスパスに追加するだけです)。生成されたコードは、戦略の新しいインスタンスを作成する代わりにINSTANCEフィールドを使用します。

免責事項:私はJAXB2 Basics、問題のJAXBプラグインパッケージの著者です。

+0

これは単純な解決策です。私はドキュメントでこれを見つけたと思います。そこで、私はmaven-replacer-pluginを使用してJaxBEqualsStragegyのすべての項目を見つけて、生成されたコードからmy.own.EqualsStrategyに置き換えました。 – cbo

関連する問題