maven-jaxb2-plugin:如何使用我自己的 EqualsStrategy
maven-jaxb2-plugin: How to use my own EqualsStrategy
我正在使用 maven-jaxb2-plugin 生成 equals
和 hashCode
方法。
我已经实施了自己的策略,源自 JAXBEqualsStrategy
和 JAXBHashCodeStrategy
。
有没有办法告诉插件使用这些策略而不是默认策略?
例如通过像
这样的配置
<arg>-Xequals=my.own.EqualsStrategy</arg>
你几乎是正确的:
<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
字段。然后,您可以将 JAR 包含在您的策略中作为 configuration/plugins/plugin
(只是将其添加到 XJC 类路径)并且生成的代码将使用 INSTANCE
字段而不是创建新的策略实例。
免责声明:我是 JAXB2 Basics 的作者,有问题的 JAXB 插件包。
我正在使用 maven-jaxb2-plugin 生成 equals
和 hashCode
方法。
我已经实施了自己的策略,源自 JAXBEqualsStrategy
和 JAXBHashCodeStrategy
。
有没有办法告诉插件使用这些策略而不是默认策略?
例如通过像
这样的配置<arg>-Xequals=my.own.EqualsStrategy</arg>
你几乎是正确的:
<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
字段。然后,您可以将 JAR 包含在您的策略中作为 configuration/plugins/plugin
(只是将其添加到 XJC 类路径)并且生成的代码将使用 INSTANCE
字段而不是创建新的策略实例。
免责声明:我是 JAXB2 Basics 的作者,有问题的 JAXB 插件包。