maven-jaxb2-plugin:如何使用我自己的EqualsStrategy

时间:2016-04-19 07:43:20

标签: java maven jaxb maven-jaxb2-plugin jaxb2-basics

我使用maven-jaxb2-plugin生成equalshashCode方法。

我已经实施了自己的策略,源自JAXBEqualsStrategyJAXBHashCodeStrategy

有没有办法告诉插件使用这些策略而不是默认策略?

E.g。通过像

这样的配置
<arg>-Xequals=my.own.EqualsStrategy</arg>

1 个答案:

答案 0 :(得分: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>

如果您的策略是无状态的(通常应该是),您可以将单例实例创建为策略类中的公共静态最终INSTANCE字段。然后,您可以将策略包含在JAR中configuration/plugins/plugin(只是将其添加到XJC类路径中),生成的代码将使用INSTANCE字段,而不是创建新的策略实例。

免责声明:我是JAXB2 Basics的作者,JAXB插件包。